题目描述
题目分析
经过抓包、目录扫描都没有找到可利用信息,最终知道这题考察的是.phps
文件,属于个人盲区
What is the file extension .PHPS? And what is it used for?
Answer:
PHP files will get interpreted by the Web server and PHP executable, and you will never see the code behind the PHP file. If you make the file extension .PHPS, a properly-configured server will output a color-formated version of the source instead of the HTML that would normally be generated.
.phps
可以查看php源代码,于是有
分析源码,需要绕过"admin"===$_GET[id]
,再结合urldecode($_GET[id])
,由于浏览器会自动url解码一次,我们可以通过两次hex编码(url编码在此基础上加%
)即可,当然这里我们可以对admin全部编码,也可以部分编码,都是可以绕过的。
对a字母进行两次url编码
第一次url编码:a ==> %61 //a的ascii码是97,而97的十六进制是61,再加上一个%,最终得到%61
第二次url编码:%61 ==> %25%36%31 //分别对%,6,1进行url编码,%的ascii码是37,37的hex值是25,再加上一个%,最终就是%25,6的ascii码是54,54的hex值是36,加上一个%,最终就是%36,1同理
使用在线工具对a进行url编码的时候,还是会得到a,这时候就需要知道编码的规则
%25%36%31 == %2561 why?
Answer:
%2561解码一次得到 %61,因为url编码是%加上两位数字,所以先对%25进行url解码得到%本身,而61是数字用不解码,就得到%61 二次解码得到a
%25%36%31 第一次解码 %25==>% %36==>6 %31==>1 于是解码一次得到 %61 解码第二次得到a
于是有
总结
1.了解.phps
是什么
2.掌握url二次编码