刚刚做了实验吧的题目,现在整理一下
写出解题思路,希望能够帮助到那些需要帮助的人
所有的wp都是以一题一篇的形式写出
主要是为了能够让读者更好的阅读以及查找,
希望你们不要责怪!!共勉!!!
永远爱你们的————新宝宝
拐弯抹角分值:10
来源:cwk32 难度:易参与人数:7523人Get Flag:2936人答题人数:3047人解题通过率:96%如何欺骗服务器,才能拿到Flag?
格式:CTF{}
解题链接:/indirection/
解题思路:这一题的代码比较有意思,并且一开始看到代码
并没有多少思路,只是看到一些大佬写的解题思路之后就会发现
这个是属于伪静态,现在我们需要了解一下伪静态的知识:
/item/%E4%BC%AA%E9%9D%99%E6%80%81/2234695?fr=aladdin
就会发现这个百度,好像看的不太懂,我就总结一下下:
伪静态:
url中含有xxxx.php/xx/x,那么.php后的xx就会被当成参数名,x会被当成参数
/indirection/index.php/user/index.php,虽然在index.php后面还加上了一些东西,
但是这个user会被解析成参数名,而index.php则会被解析成user的值
就是这个意思,接下来看看代码就会发现,这个出题人很善良,毕竟解释的很清楚:
//codebySEC@USTC echo'<html><head><metahttp-equiv="charset"content="gbk"></head><body>'; $URL=$_SERVER['REQUEST_URI']; //echo'URL:'.$URL.'<br/>'; $flag="CTF{???}"; $code=str_replace($flag,'CTF{???}',file_get_contents('./index.php')); $stop=0; //这道题目本身也有教学的目的 //第一,我们可以构造/indirection/a/..//indirection/./等等这一类的 //所以,第一个要求就是不得出现./ if($flag&&strpos($URL,'./')!==FALSE){ $flag=""; $stop=1;//Pass } //第二,我们可以构造\来代替被过滤的/ //所以,第二个要求就是不得出现../ if($flag&&strpos($URL,'\\')!==FALSE){ $flag=""; $stop=2;//Pass } //第三,有的系统大小写通用,例如indirectioN/ //你也可以用?和#等等的字符绕过,这需要统一解决 //所以,第三个要求对可以用的字符做了限制,a-z/和. $matches=array(); preg_match('/^([0-9a-z\/.]+)$/',$URL,$matches); if($flag&&empty($matches)||$matches[1]!=$URL){ $flag=""; $stop=3;//Pass } //第四,多个/也是可以的 //所以,第四个要求是不得出现// if($flag&&strpos($URL,'//')!==FALSE){ $flag=""; $stop=4;//Pass } //第五,显然加上index.php或者减去index.php都是可以的 //所以我们下一个要求就是必须包含/index.php,并且以此结尾 if($flag&&substr($URL,-10)!=='/index.php'){ $flag=""; $stop=5;//NotPass } //第六,我们知道在index.php后面加.也是可以的 //所以我们禁止p后面出现.这个符号 if($flag&&strpos($URL,'p.')!==FALSE){ $flag=""; $stop=6;//NotPass } //第七,现在是最关键的时刻 //你的$URL必须与/indirection/index.php有所不同 if($flag&&$URL=='/indirection/index.php'){ $flag=""; $stop=7;//NotPass } if(!$stop)$stop=8; echo'Flag:'.$flag; echo'<hr/>'; for($i=1;$i<$stop;$i++) $code=str_replace('//Pass'.$i,'//Pass',$code); for(;$i<8;$i++) $code=str_replace('//Pass'.$i,'//NotPass',$code); echohighlight_string($code,TRUE); echo'</body></html>';<?php
这个我们可以根据他的要求:
根据这三个要求就会得到:
/indirection/index.php/a/index.php
得到最后答案:CTF{PSEDUO_STATIC_DO_YOU_KNOW}
您可以考虑给博主来个小小的打赏以资鼓励,您的肯定将是我最大的动力。
作者: 落花四月 出处: /lxz-1263030049/ 关于作者:潜心于网络安全学习。如有问题或建议,请多多赐教! 版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接. 特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信我 声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!