【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=On
、allow_url_include=On
,没有任何限制。
使用php://input
,这里使用hackbar时无响应,使用burpsuite可以正常回显。
于根目录下得到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。