满足 阅读代码可知,题目要求我们使用Get传输名为token的参数,并要求token经过md5加密得到的编码满足:第1位=第14位=第17位,并且满足数学公式 (第1位+第14位+第17位)/ 第1位 = 第31位。若传输参数值满足以上要求,则返回flag。
方法一
我们使用php代码根据要求编写脚本:
<?php
$charse='0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
for($i=0;$i<strlen($charse);$i++)
{
for($j=0;$j<strlen($charse);$j++)
{
$token=md5($charse[$i].$charse[$j]);
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 $charse[$i].$charse[$j]."\n";
}
}
}
}
?>
运行结果:
出现两个结果,我们任输一个都能得到结果
方法二
我们使用burp suite工具的爆破模块Intruder,进行爆破
首先使用python写一个字典并储存在文档中、
string = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'
for i in string:
for j in string:
fp=open('C:/Users/Saber/Desktop/字典.txt','a+')
print(i+j,file=fp)
fp.close()
在桌面上得到字典
打开burp suite,设置好浏览器代理随意传输:/?token=1234。抓包分析,将数据包发送到Intruder模块,为’1234‘ insert a new payload marker。
再在 Payloads中设置:
选择Custom iterator方式
打开我们刚才写好的字典
勾选url
开始爆破,等待爆破完成
发现都是200,直接查找:ctfshow
得到结果
自此,这道题完成!
通过这一题,巩固了php和Bp抓包工具的学习和使用,小编同时也是WEB的初学者,希望能给大家带来帮助。文章中有什么问题欢迎大家留言指出,小编会及时改正和学习。