[极客大挑战 2020]Roamphp1-Welcome
3.实验原理
bp改包,sha1()函数空数组强制NULL
4.实验步骤
打开靶场,看到打不开,然后改一下请求方式为POST

这里分析代码
代码要求同时满足以下两个条件即可触发 phpinfo():
弱比较不等:$_POST['roam1'] !== $_POST['roam2']
强比较相等:sha1($_POST['roam1']) === sha1($_POST['roam2'])
sha1()函数的数组处理缺陷:
和md5()类似,PHP 的sha1函数设计上只接受字符串输入。如果强行传入数组,会产生如下效果:抛出Warning警告(但代码中error_reporting(0)屏蔽了错误),返回值强制为NULL
构造两个内容不同的数组:
满足 roam1 !== roam2(因为是不同数组)
满足 sha1(roam1) === sha1(roam2)(因为两者返回值都是 NULL)
Payload:roam1[]=1&roam2[]=2
这里我用hark插件,POST传入roam1[]=1&roam2[]=2

然后在这搜索flag,得到


浙公网安备 33010602011771号