[GXYCTF2019]Ping Ping Ping (以及命令执行绕过)
最近在BUUCTF刷到了一道命令执行漏洞,并且需要一定的绕过,题目并不难,但自己目前还没了解到太多的命令执行的绕过方法,写一篇文章记录一下
推荐一篇写的很好的blog,我也是从这学的http://pupiles.com/shellcode.html
题目部分
根据题目名字是ping,先传个127.0.0.1试试
根据一些经验,猜测这里的考点应该是命令执行,传一个127.0.0.1;ls(;可以分隔两条命令) 试试
看到有2个文件,flag应该在flag.php中,那么就直接;cat flag.php试试,返回/?ip= fxck your space! 看样子应该是被过滤了,根据意思应该是不能用空格,Linux中有不少能代替空格的方法,这里用到的是$IFS$9,传入,cat$IFS$9flag.php,依然不行,根据返回的/?ip= fxck your flag!,应该是flag不能出现
我这里运用到了一个方法,payload
;cat$IFS$9`ls`
解释一下 cat ls
, 首先``在linux中会让其包括的内容首先执行,所以这条命令的意思是,先执行ls返回目录下的内容,再读取
最后页面回显了index.php的代码,flag按F12可查看(被注释掉了)
网上还有一些其他的payload,比如拼接,这里介绍了其中一种
绕过部分
空格绕过
<符号
%09符号(需要php环境)
$IFS$9 符号
${IFS} 符号
$IFS在linux下表示分隔符
$9只是当前系统shell进程的第九个参数的持有者,它始终为空字符串
分隔符
%0a
%0d
;
&
|