1.打开训练网址,内容翻译为下图:
2.源代码也无任何提示,在题目中写的是php2,那在网站中常见的是index.php和script.php,
index.php
script.php
根据上方的结果,可以看见script.php不存在,index.php存在,但无任何信息,由于这个脚本文件是在服务器上运行的,不是在客户端浏览器上,因此需知道这个脚本文件里的代码,也就是要找到脚本源代码,php文件源代码通常在phps文件,尝试查看:
出现内容,翻译为:
如果通过urldecode解码后,id是admin,则登录成功返回并携带一串密钥,这个就是本题要解的
这里urldecode是PHP函数,解码经过URL编码的字符串,解码回原始的形式;URL编码中某些字符被替换为%后跟两个十六进制形式;这是为了确保 URL 中的特殊字符不会与 URL 结构冲突。
例如,空格字符在 URL 中被编码为 %20,而 & 字符被编码为 %26,%字符被编码为%25
这里需要对"admin"部分或者对全部进行编码,对a进行编码:%61;id=%61dmin,因为编码后参数%61dmin中存在特殊字符%,浏览器会自动进行URL解码,所以我们对%进行编码:%25
最终id=%2561bmin,通过get请求给参数id赋值;
通过id=%2561%2564%256d%2569%256e,也可以获得flag,因为url发送请求时会解一次码,到php时通过urldecode函数,再次解码,得到的也是admin
出现flag值,提交。