【CTFHub 技能树】RCE

PHP://input

题目源码:

<?php
if (isset($_GET['file'])) {
    if ( substr($_GET["file"], 0, 6) === "php://" ) {
        include($_GET["file"]);
    } else {
        echo "Hacker!!!";
    }
} else {
    highlight_file(__FILE__);
}
?>
<hr>
i don't have shell, how to get flag? <br>
<a href="phpinfo.php">phpinfo</a>

必须使用php伪协议。查看phpinfo,发现allow_url_fopen=Onallow_url_include=On,没有任何限制。

使用php://input,这里使用hackbar时无响应,使用burpsuite可以正常回显。

pinput1

于根目录下得到Flag。

读取源代码

<?php
error_reporting(E_ALL);
if (isset($_GET['file'])) {
    if ( substr($_GET["file"], 0, 6) === "php://" ) {
        include($_GET["file"]);
    } else {
        echo "Hacker!!!";
    }
} else {
    highlight_file(__FILE__);
}
?>
<hr>
i don't have shell, how to get flag? <br>
flag in <code>/flag</code>

本体依旧要求使用伪协议,并且测试php://input无效。

可以使用filter将源码通过base64回显。

Payload:

http://URL/?file=php://filter/read=convert.base64-encode/resource=../../../flag

得到Flag。

原文地址:https://www.cnblogs.com/chalan630/p/13374093.html