- web25
- 题目:
- 解题思路及步骤:分析代码:
error_reporting(0);
include("flag.php");//包含文件flag.php
if(isset($_GET['r'])){
$r = $_GET['r'];//获取参数r
mt_srand(hexdec(substr(md5($flag), 0,8)));
$rand = intval($r)-intval(mt_rand());
if((!$rand)){
//如果cookie中有一个token的值,并且是第二次和第三次生成的伪随机数的加和,则输出flag
if($_COOKIE['token']==(mt_rand()+mt_rand())){
echo $flag;
}
}else{
echo $rand;
}
}else{
highlight_file(__FILE__);
echo system('cat /proc/version');
}
3. 于是就构造思路,首先,r=0,可以得到第一次生成伪随机数的值,于是尝试可得:![](https://cdn.nlark.com/yuque/0/2025/png/39210681/1737443339339-64cdc7d9-b419-487c-936e-6f4dda8c0c6b.png)由于要获得第二个和第三个伪随机数的值,因此要爆破 出种子的值,查阅大佬的wp,知道了一个反向爆破伪随机数种子的工具:php_mt_seed,下载链接:[php_mt_seed下载地址](https://www.openwall.com/php_mt_seed/)![](https://cdn.nlark.com/yuque/0/2025/png/39210681/1737443531246-ecd400eb-b292-4f9f-a509-6a0d092c59af.png)点击下载解压就行,之后将其拖进kali,并在当前目录打开终端,使用命令:./php_mt_seed 伪随机数,![](https://cdn.nlark.com/yuque/0/2025/png/39210681/1737444570419-4b4e5140-13b4-4ce0-b44b-c3af7e4c43cd.png)
4. 可以生成各种php版本的种子值,那么么知道是哪个种子呢:这时候就要用另一个插件:wappalyzer,在下载的时候踩了个小坑,应该是网络问题,于是通过科学上网后就可以了![](https://cdn.nlark.com/yuque/0/2025/png/39210681/1737444719184-579067d1-1cd2-421a-9eaa-cb9e4125123e.png)发现是7.3.11,于是就用这个种子:3592930756 编写php脚本,获得第二次第三次伪随机数的值以及两者的和
<?php
mt_srand(3592930756);
$_rand1=mt_rand();
$_rand2=mt_rand();
$_rand3=mt_rand();
echo $_rand1."\n";
echo $_rand2."\n";
echo $_rand3."\n";
echo $_rand2+$_rand3;
?>
//输出:
1586689415
696668555
71549292
768217847
5. 于是使用hackbar,设置cookie:token:768217847得到:![](https://cdn.nlark.com/yuque/0/2025/png/39210681/1737445090610-8e2751d8-6d64-4670-96ac-da245ccbe473.png)于是flag为:![](https://cdn.nlark.com/yuque/0/2025/png/39210681/1737445071747-9333a4d2-565a-4011-bc07-d3f8a9d79193.png)
6. 相关知识点:新插件wappalyzer的使用,以及新工具:php_mt_seed 4.0 的使用
-
web26
- 题目:
- 解题思路及步骤:进入题目,发现没有什么异常,于是进行抓包,先输入几个东西看看,发现啥也没有,于是进行爆破:发现什么也不输入的时候直接出了
flag - 相关知识点:抓包,多个密码爆破
-
web27
- 题目:
- 解题思路及步骤:进入题目看到一个平台登录系统,于是对其他地方进行点击查看,发现录取名典那里可以点击,之后下载了一个文件,可以看到,身份证号被加密了一部分:
- 好巧不巧,后面还有学生学籍信息查询系统,但是身份证号码不知道,于是就需要破解身份证号,而加密的地方就是出生年月,于是可以进行爆破,我的方法是分三部分,年,月,日,于是就采用集束炸弹模式进行:
- 年就规定从1990-2010(都大学生了应该最少有十几岁了吧),月:01-12,日:01-31,这里要记得将月和日的长度设置为2,进行爆破爆破后发现有个长度不一样的:对得到的那串unicode进行解码可以得到:于是可以利用学号和密码进行登录,登录后就得到了flag:
- 相关知识点:burp集束炸弹的使用 坑:抓包时,使用Firefox可能没有数据,换做其他浏览器可以试试
-
web28
- 题目:
- 解题思路及步骤:看到题目什么信息也没给,但是,发现刚进入的靶机地址后面加了两个数字目录。进行目录扫描发现很多数字目录,
- 于是知道这个题考的是目录爆破:于是就使用bp进行爆破,对目录处的0,1进行集束炸弹爆破:都采用数字,0-100
- 得到一个状态不同的:查看响应包得到flag:
- 相关知识点:注:目录后面那个/去掉就不行了