打开题目一看,问我Can you anthenticate to this website?
我们先掏出来御剑扫它一下,
打开一看,发现源码泄露,我们打开网页f12查看源码
这里让我们get方式传入一个id值需要绕过,先看第一个"admin"===$_get[id] 需要为假,那我们将'a' urldecode一次就不等于了绕过了它
接着我们看到下面将我们传入的参数再一次urldecode一次,还要求编码过后等于admin,于是我们
构造payload: ?id=%2561dmin
提交url时,它会自动urldecode一回,%25就成为了%,然后进入二次绕过时,%61就转成了a,此时我们就拿到了我们想要的a了
第一次它会将非ascii码,进行一次urldecode一回
进行第一次比较:
if("admin"==="%61dmin")
代码中会对它再进行一次urldecode
urldecode("%61dmin") //admin
然后就绕过了二次编码,获得了我们的flag