PHP2

输入index.phps,有源码泄露
如下:

<?php
if("admin"===$_GET[id]) {
  echo("<p>not allowed!</p>");
  exit();
}

$_GET[id] = urldecode($_GET[id]);
if($_GET[id] == "admin")
{
  echo "<p>Access granted!</p>";
  echo "<p>Key: xxxxxxx </p>";
}
?>

很好读懂,两个判断,第一个判断的id为admin时,显示not allowed
第二个判断,id经过url解码后,如果等于admin,则输出我们想要的key

那么将admin进行中的任意位字母进行两次url编码即可绕过,如全部编码两次为%25%36%31%25%36%34%25%36%64%25%36%39%25%36%65,如下图

为什么要url编码两次呢,这是因为,在浏览器地址栏的时候,默认会进行一次url解码,比如你输入%61,地址栏会直接显示为a,就是进行了一次解码,在源码中还有一次解码操作,所以要进行两次编码,说来也巧,如果不进行两次编码也无法绕过源码中的第一个判断

最后一句:不要在网上搜什么url在线编码,在线编码工具了,都是傻逼,我说的,耶稣来了,我也这么说,经历过的人都懂,我是乖乖的去用burp进行的url编码,此外还可以利用java,C,C艹去在线运行代码,生成url编码,也是一种思路,不过我还是觉得打开burp方便,这里给大家推荐一个在线工具url编码虽然一样傻逼,但是有个在线运行代码(参考效果),还可以嵌入博客,也还不错

得到flag:cyberpeace{4cbcf443bbee22a1f078513480618ac9}

原文地址:https://www.cnblogs.com/sillage/p/13937490.html