[MRCTF2020]PYWebsite
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啊,根本没这个文件。难道后端处理是骗我了????