刷题网站:攻防世界 https://adworld.xctf.org.cn/
WEB方向–进阶场–第3题–PHP2
网站右键查看源代码什么都没有
端口扫描:(在这里我用了御剑扫描,并且字典全选了)
访问:
还是无果,建议将后缀改成phps:(这个要当作积累)
右键查看页面源代码,发现源码有泄漏:
<?php
if("admin"===$_GET[id]) {//对id进行第一次解码
echo("<p>not allowed!</p>");
exit();
}
$_GET[id] = urldecode($_GET[id]);//对id进行第二次解码
if($_GET[id] == "admin")
{
echo "<p>Access granted!</p>";
echo "<p>Key: xxxxxxx </p>";
}
?>
Can you anthenticate to this website?
所以要对admin进行两次编码比较好
注意要在根目录尝试GET方法:
最终得到flag:Key: cyberpeace{81db651d99cc6783242b9ebee385822e}
总结:
在扫描到有index.php并且访问没有结果的情况下,可以试试将后缀php改成phps;要看懂源码。还要注意: G E T [ i d ] 往 往 已 经 对 传 的 参 数 做 了 一 次 U R L 解 码 了 , 而 u r l d e c o d e ( _GET[id]往往已经对传的参数做了一次URL解码了,而urldecode( GET[id]往往已经对传的参数做了一次URL解码了,而urldecode(_GET[id]方法会对不是URL的部分 再进行一次解码,要注意逻辑