从0开始学web之爆破
字数 976 2025-08-15 21:33:24
Web安全爆破技术实战教学
一、密码爆破基础
1. 文件类型识别
- 文件头分析:通过文件头识别文件真实类型
- 504B0304 是ZIP压缩包的文件头
- 可使用工具:
- WinHex:Windows下的十六进制编辑器
- Kali Linux中的binwalk工具:
binwalk 文件名
2. 字典爆破实战
-
基本流程:
- 获取目标字典文件(如1000-top.txt)
- 根据目标格式处理字典(如添加用户名前缀)
- 进行编码转换(如Base64编码)
- 使用处理后的字典进行爆破
-
Python处理脚本示例:
import base64
fp = open('pinjie.txt','w')
with open("1000-top.txt", "r") as f:
for line in f.readlines():
line = line.strip('\n')
line = 'admin:'+line # 添加用户名前缀
line1 = base64.b64encode(line.encode('utf-8')) # Base64编码
fp.write(str(line1,'utf-8')+'\n')
- Burp Suite爆破技巧:
- 使用Custom iterator功能进行复杂爆破
- 可组合不同位置的字符集进行爆破
二、子域名爆破技术
1. 常用工具
- wydomain:GitHub开源工具,
https://github.com/ring04h/wydomain - subDomainsBrute:lijiejie开发的子域名爆破工具
- Layer子域名挖掘机:Windows平台下的图形化工具
2. 实战案例
- 目标:爆破ctfer.com的子域名
- 发现的有效子域名:
flag.ctf.show/index.php
三、脚本爆破高级技巧
1. MD5特征爆破
示例题目分析:
<?php
error_reporting(0);
include('flag.php');
if(isset($_GET['token'])){
$token = md5($_GET['token']);
if(substr($token, 1,1)===substr($token, 14,1) && substr($token, 14,1) ===substr($token, 17,1)){
if((intval(substr($token, 1,1))+intval(substr($token, 14,1))+substr($token, 17,1))/substr($token, 1,1)===intval(substr($token, 31,1))){
echo $flag;
}
}
}else{
highlight_file(__FILE__);
}
?>
爆破条件分析:
- token的MD5值的第2、15、18位字符相同
- (第2位数字值 + 第15位数字值 + 第18位数字值) / 第2位数字值 = 第32位数字值
PHP爆破脚本:
<?php
error_reporting(0);
$string = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$len = strlen($string);
for($i=0;$i<$len;$i++){
for($j=0;$j<$len;$j++){
$flag = $string[$i].$string[$j]; // 生成两位字符组合
$token = md5($flag);
if(substr($token, 1,1)===substr($token, 14,1) && substr($token, 14,1) ===substr($token, 17,1)){
if((intval(substr($token, 1,1))+intval(substr($token, 14,1))+substr($token, 17,1))/substr($token, 1,1)===intval(substr($token, 31,1))){
echo $flag."\n";
}
}
}
}
?>
爆破结果:成功得到有效token "ZE3j"
四、伪随机数爆破
(注:原文未完整展示这部分内容,但伪随机数爆破通常涉及以下技术)
1. 常见漏洞
- 使用弱随机数生成器(如rand()而非cryptographically secure random)
- 可预测的种子值
- 有限的随机数范围
2. 爆破方法
- 确定随机数生成算法
- 收集足够的输出样本
- 尝试预测下一个输出值
- 使用预测值进行爆破
五、防御措施
-
密码爆破防御:
- 使用强密码策略
- 实施账户锁定机制
- 添加验证码
-
子域名枚举防御:
- 定期扫描和监控
- 删除不必要的子域名
- 使用DNS防火墙
-
脚本爆破防御:
- 增加复杂度要求
- 实施速率限制
- 使用多因素认证
-
伪随机数防御:
- 使用加密安全的随机数生成器
- 确保足够的熵源
- 避免暴露随机数序列