[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
;
&
|

posted @ 2020-10-28 19:01  frosty9  阅读(467)  评论(0编辑  收藏  举报