web21
学习到了bp新的爆破姿势,custom iterator的使用
抓包发现我们要爆破的内容是这个:Authorization: Basic YWRtaW46MQ==
base64解密,发现类似这样 admin:123456
因此使用自定义迭代器:
对密码进行爆破,此外还要进行base64加密:
特别需要注意得是,不要对这些字符url编码:
base64加密后可能有=,对=进行url编码的话就会出问题:
web22
爆破子域名,得到flag.ctfer.com,访问http://flag.ctfer.com/index.php得到flag
web23
写一个简单的PHP爆一下:
<?php
for($v1=0;$v1<10;$v1++)
for($v2=0;$v2<10;$v2++)
for($v3=0;$v3<10;$v3++){
$v=$v1.$v2.$v3;
$token = md5($v);
if (substr($token, 1, 1) === substr($token, 14, 1) && substr($token, 14, 1) === substr($token, 17, 1)) {
if ((intval(substr($token, 1, 1)) + intval(substr($token, 14, 1)) + substr($token, 17, 1)) / substr($token, 1, 1) === intval(substr($token, 31, 1))) {
echo $v;
}
}
}
?>
爆的是422。
web24
PHP随机数的漏洞:
由于mt_rand()的生成的随机数只跟seed和调用该函数的次数有关。举一个简单的例子来说明一下这个问题,假设使用mt_srand(1111111)进行了一次播种操作,接下来调用mt_rand()函数,第一次生成的数值为a,第二次生成的为b,第三次生成的为c。任何一个人拿到这样的一串代码,所执行的结果都是跟刚刚描述的一样。所以当你的seed数值被他人知道后,就可以预测出你接下来的数值是多少,这就是该函数的一个问题,他并不能起到一个真随机数的作用。
唯一可能出问题的点就是PHP的版本,不同的版本在相同的种子下给的随机数也不同,因此PHP的大版本要相同,然后
<?php
mt_srand(372619038);
echo intval(mt_rand());
得到要传的r值。
web25
还是PHP随机数的漏洞,利用工具来爆破种子:
因为题目的环境是7.3.11,因此符合条件的种子只有2个,经过尝试第二个是对的:
<?php
mt_srand(3430596594);
$a=mt_rand();
$b=mt_rand();
$c=mt_rand();
echo $a."\n";
echo $b."\n";
echo $c."\n";
<?php
$a = 166385267;
$b = 1802191555;
echo $a + $b;
最后传一下就可以了:
web26
没懂这题啥意思,全空直接得flag:
web27
又学习到了一种bp的爆破姿势,日期爆破。我一看估计就是爆破身份证号码里面那段出生日期了,但是不知道该怎么爆破,看了一下WP,姿势如下:
得到学号和密码,登录即可得到flag。
web28
爆了没爆出来,看了WP,爆破的方式非常奇怪,有点脑洞了: