题目链接:https://ctf.bugku.com/challenges/detail/id/83.html
经过扫描可以找到index.php.bak备份文件,下载下来后打开发现是index.php的原代码,如下图所示。
由代码可知我们要绕过md5加密,两数如果满足科学计数法的形式的话,php会将其当作科学计数法所得的数字来进行比较,根据该原理,如果两个md5码是0e开头且满足科学计数法的表示形式就会判断相等(只对==比较有效,===无效)。
下面列出一些满足要求的字串以及相应的md5码:
QNKCDZO
0e830400451993494058024219903391
s878926199a
0e545993274517709034328855841020
s155964671a
0e342768416822451524974117254469
s214587387a
0e848240448830537924465865611904
s214587387a
0e848240448830537924465865611904
s878926199a
0e545993274517709034328855841020
s1091221200a
0e940624217856561557816327384675
还有一个问题,那就是str_replace()函数,原代码中会将’key’给删去,所以我们要用双写绕过,将key写成kekeyy即可。
于是在url最后输入?kekeyy1=QNKCDZO&kekeyy2=s878926199a即可得到flag。