題目鏈接: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。