前言
- 我感觉我是一个假的理工科生,假的计算机相关专业学生,完全没有该有的样子
- 这题有点东西,不算太水。只是对我来说。
读题
- 题目是Ping,打开也没有内容,就一个get传参的ip变量
- 不过看到ip和ping就容易联想到,终端
ping
命令。 - 先尝试传入一个
ip=127.0.0.1
,于是乎出现了如下,在终端下执行的效果就是这样,命令执行石锤了。
- 所以,利用拼接符在ping命令后添加我们需要的命令即可。所以可以用拼接符
& 表示任务在后台执行,如要在后台运行redis-server,则有 redis-server &
&& 表示前一条命令执行成功时,才执行后一条命令 ,如 echo '1‘ && echo ‘2’
| 表示管道,上一条命令的输出,作为下一条命令参数,如 echo ‘yes’ | wc -l
|| 表示上一条命令执行失败后,才执行下一条命令,如 cat nofile || echo “fail”
; 分号表示命令依次执行。
- 首先尝试了
&&
但居然没有回显,很奇怪,理论上ping 1270.0.0.1&&ls
(为啥是ls命令?拿flag总得知道它在哪吧)应该是可以的,但不知道为什么,还有就是输入无法ping通的ip也是一样的回显,可能是因为这是假ping吧,前面没成功,所以后面不执行 - 然后尝试用
|
回显得知 index.php 和 flag.php
- 尝试用cat命令读取flag.php,提示有空格,空格被过滤了
- 于是我去百度了命令执行空格绕过,参考这篇文章
- 但尝试发现,不仅空格被禁了,像
{
、<
、%
也被禁了但是$IFS$9能用,不过提示flag也被过滤了。 - 加一点为什么用$IFS不行,