目录
web21
打开题目显示要登陆密码
随便输入123,123抓个包试试,发现Authorization:有一串字母,拿去base64解码试试
发现是我们刚输入的账号密码
所以爆破点有了,发送到测试器
清除 §,然后在爆破点加上§
接着在payload这里直接载入从题目下载的字典
接着在有效负载处理那里添加前缀
再添加一个base64编码,同时取消勾选下面的url编码字符
接着到选项这里,调一下请求引擎,线程数建议别调太大,我前面调了200试了几次都没爆出来
爆破结束后查看就可以了
web22
em..............这题的话作者只是想让我们明白一个思路,看到一个站群,它有时候会隐藏的一些子域名,我们可以去通过在线子域名查询这个网站的工具去爆破的。flag的话直接查看hint
web23
点进题目发现是一串代码......这里要满足条件才可以输出flag。
对于这种,我们可以把需要满足的条件复制在本地中调试,得出适合的值。
可以看到得到两个满足的值422和1202,我们随便传一个就可以了。
web24
查看一下题目,令$r的整数值等于随机数mt_rand()产生的整数值,所以这题的话考点是伪随机数。
mt_srand(seed) //播种Mersenne Twister 随机数生成器。
mt_rand() //生成随机数
简单地说就是mt_srand()分发seed种子,然后种子有了后,靠mt_rand()生成随机数。
我们来代码测试一下
这是第一次的运行结果
我们删掉一个mt_rand()试试,让它生成两个随机数。
这时候可以看到了,当种子不变时,产生的随机数是一样的,这就是伪随机数漏洞。所以这道题我们可以传一个r=1155388967,即传第一个种子产生的值,二者相等输出flag。
更深入的可查看这篇博客Web中的随机数安全总结 - 简书 (jianshu.com)
web25
第二十五好玩了,这是一个伤心的故事。题目的逻辑是用get方法传一个r,mt_srand(seed),seed的值为md5加密$flag的前八位字符,并将加密后的值十六进制转换为十进制。
然后判断是否有rand,如果有rand的值则输出$rand;没有则进行$_COOKIE['token']==(mt_rand()+mt_rand())的比较,等于则输出flag。
解法:
我们可以传r=0让其输出第一个mt_rand()的值为625400613,通过php_mt_seed来爆破出种子
php_mt_seed - PHP mt_rand() seed cracker (openwall.com)
下载后在kali解压,如果寻求便利的话可以直接解压到桌面,右键直接打开终端
第一次运行需要先输入make命令,然后输入命令./php_mt_seed +随机数就可以查种子了
然后这题的话抓包重新发送查看响应可以发现这是php7.3版本
那么上面爆破出来的种子只有一个7.1+的
我们到本地(php版本5.4)调试一下输出,得到我们要传的第二个第三个mt_rand()相加的值。
关于为什么第一个mt_rand()的值为什么与题目不一样这个问题,可能是由于版本差异造成的,不同版本下同一个mt_srand(seed)种子产生的mt_rand()的值可能不同。
在bp传r=625400613,传这个值的原因是得到第一个mt_rand()的值为625400613,然后r-mt_rand()=0满足!$rand,才可以进行下一步$_COOKIE['token']的比较
web26
这题的话题目提示可以爆破,em......我爆破了一段时间没有爆破出来,然后就去看看源代码有什么东西
我们尝试在checkdb.php中post几个值试试,发现flag在这里
web27
这题是一个登录系统,先看一下有什么信息,发现有一个录取名单和学生学籍信息查询系统
我们点击录取名单发现弹出一个下载文件,下载后打开发现名字还有缺失的身份证号,暂时还不知道有什么用
接着继续点学生学籍信息查询系统看看,看到这个界面,联系上面得到的文档,好像可以爆破出学生的的身份证号从而完成查询。
我们输入一下web专业同学的名字(高先伊)加身份证号,中间未知的部分随便打,我们在bp抓包试试,这里有个细节,当你点击第一次查询的时候bp抓到了包,但是我们查看bp没有我们输入的部分
这时候我们返回学籍信息查询界面再点一次查询 ,同时返回bp点击放包就可以看到我们输入的东西,爆破点就找到了。
发送到intruder爆破,到这里就是我们的常规操作了,重要的是字典怎么找,首先说一下别人的简便方法吧。在位置这个地方,先清除§,然后在身份证号年月日那里添加§。
然后再payload(有效载荷)这里,类型选择日付(dates),改成这个样子确定范围
调好之后开始攻击后面查看结果得到的东西猜测是学号
然后教务系统的初始密码一般是身份证号,我们登录试试
对于字典的话,我们可以在kali用crunch这个工具制作字典,打开终端后输入命令
crunch 18 18 -t 621022199%%%%%5237 -o 1.txt
讲一下上面的命令:
crunch的命令格式:
crunch <min-len> <max-len> [<charset string>] [options]
我们用-t命令中的%表示数字未知数 ,-o 1.txt,指定输出文件的名称。
我们得到输出的文件后从虚拟机复制到主机,然后载入就可以爆破了
查看长度,发现有一个长一点的
点进去查看响应,猜测这是学号
想深入了解一下crunch的使用可以看看这篇博客(56条消息) crunch命令详解 以及使用方法(综合我的经验)_AbonRommel的博客-优快云博客_crunch
web28
这题题目提示大海捞针,点进去一看,确实想不到爆破点在哪,然后想啊想可能上面url那里存在问题,但我想到了爆破2.txt那里.............实际上是爆破/0/1/这个地方,爆破的时候要删去2.txt
用bp抓包之后发送的intruder,使用集束炸弹(clusterbomb)模式,不懂这几个模式区别的可以去搜一下博客看看burpsuite中intruder模块爆破的四种模式_liweibin812的博客-优快云博客_burp intruder 模式
然后清除cookie中的§,删去2.txt,同时在/0/1/那里加上§
下一步调有效载荷(payload),有效载荷类型选择数值(numbers),同时在下面调成从0开始到100,增量为1。
切换到有效负载集(payload set)2,也是同样的调法
接下来开始爆破等结果就好了,结果的话具有一点迷惑性,无论是升序还是降序,前面很多个的长都是一样的,但细心一点,调成升序后一直划下来看看,发现有一个的长特别点,和其它的不一样(下面最后一张图)。
确实很符合大海捞针这个提示