1:审题:
我们看到题目标题时就知道本题需要用ping命令(这是网站要干的事情,跟我们没关系,我们只需要输入一个可以连接的ip就行)来连接服务器并且通过代码获取flag。进入题目界面,我们看到了?ip=,这提示我们在写url时最开始的地方要怎么写,即:url/?ip=......。
在此之后,我们查看源码,发现毫无用处,我们就想到了这应该与文件包含漏洞没有什么关系(因为源码中并没有给出有像include,fopen之类的敏感函数),显然,我们要想得到flag,又只有一种可能那就是在某个文件中,思来想去,好像也只有lilux系统下的那个命令可以拿文件,于是使用拼接符来连接两个语句(一个写ip,不然无法使用ping与服务器连接,另外一条语句写文件查询语句),在经过一个个的试验后发现 | 是可用的,于是写出命令url/?ip=127.0.0.1|ls,不出意外的网站给出了他具有的文件列表,其中就有一个是flag.php,
基本上就可以确认flag的位置了,此时我们的目的就只有一个,那就是拿到flag.php 的文件内容,于是我们输入命令:url/?ip=127.0.0.1|cat flag.php,然后网站提示我们他过滤了空格,
于是又一个个的去试验哪个能绕过这个空格,最终我们发现$IFS$9是可行的一个绕过方式,继续输入url/?ip=127.0.0.1|cat$IFS$9flag.php,然后网站又提示我们说他竟然把flag也过滤掉了,
这怎么办呢,经过思考之后,我们想到了 ` ` 这个特殊符号(会把执行后结果返回出来),于是我们用上了url/?ip=127.0.0.1|cat$IFS$9`flag.php`,然后发现页面居然没反应,然后就没办法了,试试能不能把全部内容给返回出来,于是乎又来了url/?ip=127.0.0.1|cat$IFS$9`ls`,结果发现还是没有什么有关flag的东西,无聊之下翻看了一下源代码,里面竟然出现了flag!,而且还是正确的flag,我的天,误打误撞竟然拿到了flag
2:知识储备:
i):有关拼接符的相关知识储备:
命令拼接符:
命令执行就用命令拼接符执行漏洞命令就行。常见的命令拼接符为以下四种。
&:无论左边是false还是true,右边都执行。
&&:具有短路效果,左边是false,右边不执行。
|:无论左边是false还是true,右边都执行。
||:具有短路效果,左边是true,右边不执行
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_70434663/article/details/129306577
ii):有关空格绕过的知识储备:
iii):有关lilux命令的知识储备: