目录

php代码"劫持"--输出缓冲

# PHP-代码劫持

调用 ob_start() 来启用输出缓冲,这样,任何在 PHP 代码中产生的输出(例如 echo、print 等)都不会立即发送到浏览器,而是会被存储在缓冲区中

ob_start();
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__);
}
1
2
3
4
5
6
7
8
9
10

审计代码,这段代码先执行传入的$C,用$S临时保存命令执行的结果,再清理缓存,打印正则表达式用?替换后$s的输出内容,简单说,他用?替换了所有数字和字母,然后再展现给你

# 使用函数结束程序

让eval($C)回显的内容提前送出输出缓存区

ob_flush();         
1

提前结束程序,不执行后面命令,避免被劫持

die();              
exit();
1
2

die("words"),exit("words"),可选参数words,结束时打印一句话

# 强制闭合

使用?>来强制闭合整个<?php ?>标签,提前结束程序

最后一次更新于: 2024/10/24, 13:00:42