题目地址:http://ctf5.shiyanbar.com/web/kzhan.php
进去后看到一个表单
查看源代码也没有什么东西,最后在cookie中看到了一个可疑的参数source,将它改为1后再次访问,看到页面源码
想要获得flag,需要满足几个条件:
1.urldecode($username) === "admin"
2.urldecode($password) != "admin"
3.$COOKIE["getmein"] === md5($secret . urldecode($username . $password))
其中$secret是长度为15的未知字符串,而条件1、2很好满足,条件3则需要进行哈希长度扩展攻击来满足
关于什么是哈希长度扩展攻击,怎么进行的可以看下面这个链接:
https://github.com/iagox86/hash_extender
这道题也可以用HashPump来完成,具体做法参考Pcat大佬:https://www.cnblogs.com/pcat/p/5478509.html
在cookie中可以看到sample-hash=571580b26c65f306376d4f64e53cb5c7,这是$secret跟两个admin连接后的字符串的哈希值,即md5(???????????????adminadmin),新字符串长度为25。
我们要提交的username必定为admin,也就是说,我们提交的getmein必须是$secret跟admin以及$password连接后的字符串的哈希值。
举个例子,我们提交password=admin%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%c8%00%00%00%00%00%00%00Aluvion,然后我们修改一下程序,
截断修改前一分块的哈希结果为571580b26c65f306376d4f64e53cb5c7,然后用其来加密我们自定义的数据,这里是Aluvion,编译运行,获得getmein应该提交的哈希值c042652ebf35b70de4124702ee10a8bf。
getflag
the end
网友评论