拐弯抹角分值:10
- 来源: cwk32
- 难度:易
- 参与人数:5765人
- Get Flag:2089人
- 答题人数:2143人
- 解题通过率:97%
如何欺骗服务器,才能拿到Flag?
格式:CTF{}
解题链接: http://ctf5.shiyanbar.com/10/indirection/
原题链接:http://www.shiyanbar.com/ctf/1846
【解题报告】
这是我入门web以来写的第十三题,这道题最简单的做法就是直接访问index.php
,然后flag就可以直接拿到了,但是呢,这是一道教学题,我们可以自习看一下这个php代码,这个代码把各种绕过的方法都写上去了,我们不用刚才的那种方法应该怎么办呢?我们可以利用伪静态的方法去绕过~~~
早期搜索引擎对于这些动态网页参数的形式页面不容易收录,于是会将这些动态页面转化成以html结尾的静态页面,这些页面是真正的静态页面,保存在服务器的硬盘上。因此随着数据的不断增加,会对网站的空间占有率大大增加,于是一种URLRewrite(URL重写)即伪静态技术出现了,避免了真正静态文件的大量产生。
网页伪静态化的优点
1、维护方便,网页每天都自动变化,不用维护或者说极大地减少了维护量。
2、可以方便的实现对搜索引擎的优化,易于被搜索引擎收录。
3、缩短了URL的长度,隐藏文件实际路径提高了安全性,易于用户记忆和输入。
4、占空间比较小,不像纯静态那样多占用近过多的空间。
5、安全性能通过URL地址隐藏或加密,让黑客无法找到真实的动态页面,同时动态文件不需要太高的权限,从而避免了木马的注入。
伪静态最大的缺点就是会占用一定量的CPU使用率,增加服务器的响应时间。
这道题我们只需要输入两个index.php
就行了,服务器只会解析第一个index.php
,会绕过前面那么多苛刻的条件,这就是伪静态!!!我们就可以拿到flag了!
我们在这里做个绕过的简单小结:
//第一,我们可以构造 /indirection/a/../ /indirection/./ 等等这一类的
//所以,第一个要求就是不得出现 ./
//第二,我们可以构造 来代替被过滤的 /
//所以,第二个要求就是不得出现 ../
//第三,有的系统大小写通用,例如 indirectioN/
//你也可以用?和#等等的字符绕过,这需要统一解决
//所以,第三个要求对可以用的字符做了限制,a-z / 和 .
//第四,多个 / 也是可以的
//所以,第四个要求是不得出现 //
//第五,显然加上index.php或者减去index.php都是可以的
//所以我们下一个要求就是必须包含/index.php,并且以此结尾
//第六,我们知道在index.php后面加.也是可以的
//所以我们禁止p后面出现.这个符号
//第七,现在是最关键的时刻
//你的$URL必须与/indirection/index.php有所不同