function enc(code){hash = hex_md5(code);return hash;}function validate(){var code = document.getElementById("vcode").value;if (code != ""){if(hex_md5(code) == "0cd4da0223c0b280829dc3ea458d655c"){alert("您通過了驗證!");window.location = "./flag.php"}else{alert("你的授權碼不正確!");}}else{alert("請輸入授權碼");}}
從源碼中可以看到一段JSP代碼。發現有/flag路由于是訪問一下:
哈哈哈笑死了。購買者的IP保存起來是什么意思,驗證邏輯在后端 ?
先不管了,通過給出代碼的驗證邏輯再說。
hex_md5(code) == "0cd4da0223c0b280829dc3ea458d655c"
?hex_md5應該是指十六進制表示的md5值吧,這里使用的是弱等于,但是右邊字符串并不是科學計數法格式(0e開頭),根據上次題目得到的結論,就算左邊是0e開頭的字符串仍然不會轉換成數字比較。嘗試了一下果然不行。
沒思路,看一眼答案...
什么?居然是偽造IP!!!
他說除了購買者和自己沒人能看到flag,說明他自己是能看到的,就想到偽造IP為本地地址。
這確實有點出乎意料啊!
另外,上傳vcode之后通過網絡流量可以看到有JS請求:
?但是狀態是404啊,根本沒這個文件。難道后端處理是騙我了????