这道题打开链接后,就看到高亮的源码,简单看了理解下,就是分7个步骤判断URL是否满足条件,如果不满足就把$flag弄掉(后面的echo $flag你就看不到你想要的),这题比较温馨的是当你不满足条件就会看到Not Pass(作者蛮用心的)。
如果是正常访问,$URL = $_SERVER['REQUEST_URI']; 这里$URL一般会得到/indirection/或者/indirection/index.php,这里的$_SERVER['REQUEST_URI']只会原封不动的显示网址的字符串(不会像$_SERVER['PHP_SELF']会对网址进行一次urldecode操作),所以要转义不太可能。通篇也没出现echo $URL;要注入也不太可能。
于是,冷静分析下7个步骤,发现要过的话,需要满足不能出现./、\、大写或者其他符号、//、p.,而且要求末尾是/index.php,这6个步骤对于/indirection/index.php都可以满足,但是最后一条又告知不能等于/indirection/index.php,顿时就被泼了冷水- -。
作为一个非Web狗表示压力大,中间的苦逼过程就不提了,我也是在本地构建php尝试写注入语句时发现一个php路径解析的问题,/test.php/pcat.html也是能正常访问/test.php,自我猜想就是服务器解析到.php后就把后面的/pcat.html当作参数处理。(>^ω^<)看到这里,你们可以想到了吧,第5步步骤只要求末尾是/index.php,那么我们构建/indirection/index.php/index.php不就ok?于是7个步骤都能通过,就可以得到flag。

科普君:这种其实就是伪静态技术(pseudo-static),又名URL重写(URL rewriting)。举个最简单的应用,例如你原本想弄的是index.php?id=123,但你想隐藏其真实的文件路径,你通过URL重写技术,可以达到访问test/123.html而实际上在访问index.php?id=123

Flag:

温馨提示: 此处内容需要评论本文后刷新才能查看,支付2元即可直接查看所有Flag。

小广告:关于获取西普实验吧所有Flag请点击这里查看索引

查看所有Flag文章需要输入密码,需要获取文章密码的童鞋请扫描下面微信或支付宝二维码捐助至少2元(老哥,捐多捐少是个缘分)之后发送支付凭证号联系我获取,Flag大全地址:Flag大全

新功能:捐款的小伙伴请联系我把自己的注册邮箱加入网站白名单,可以免回复看到本站所有Flag

PS:本站不是实验吧的官方站点,纯粹是个人博客,收取Flag费用仅是维持服务器费用,做站不易,且行窃珍惜!

微信二维码:
支付宝二维码: