CISCN2019 - Web - Hack World

AI-摘要
Microsoft Xiaoice's GPT
AI初始化中...
介绍自己 🙈
生成本文简介 👋
推荐相关文章 📖
前往主页 🏠
前往爱发电购买
CISCN2019 - Web - Hack World
Hunter结论先行:WAF 只拦「带空格的关键字」;用括号代替空格、
^异或做布尔判断,构造0^(条件)对flag表flag列做substr+ascii二分盲注。
题目信息
| 项 | 内容 |
|---|---|
| 比赛 | CISCN2019 |
| 方向 | Web |
| 难度 | Easy |
| 环境 | 授权靶场(已脱敏) |
漏洞类型:SQL 布尔盲注(异或 ^ + if 绕过 + 括号代替空格)。
信息收集
首页提示:
1 | All You Want Is In Table 'flag' and the column is 'flag' |
表单 POST 参数 id,后端 SQL 形如 SELECT ... FROM passage WHERE id=<input>,但存在 WAF 过滤。
探测结果
| 输入 | 响应 |
|---|---|
1 |
Hello, glzjin wants a girlfriend.(真) |
0 / 999 |
Error Occured When Fetch Result.(假) |
1 and 1=1 |
SQL Injection Checked(被拦截) |
1 or 1=1 |
SQL Injection Checked(被拦截) |
1 union select 1 |
SQL Injection Checked(被拦截) |
1^1 |
Error(异或可用,1^1=0) |
1=1 |
Hello(= 可用) |
0^(1) |
Hello(括号+异或可用) |
过滤规则
- 过滤带空格的
and、or、union等关键字(information_schema也被拦截)。 - 但
^(异或)、=、括号、select、from、substr、ascii、length、if等不带空格时可用。 - 绕过方式:用括号代替空格,用
^异或代替and/or/if做布尔判断。
漏洞分析
布尔盲注结构
1 | 0^(条件) |
条件为真 →0^1 = 1→ 返回Hello(真)条件为假 →0^0 = 0→ 返回Error(假)
由于 WAF 只拦「空格+关键字」,把全部空格换成括号后,select、from、substr、ascii 等关键字都能通过,而异或本身充当了条件判断,无需 if。
利用过程
payload
1 | -- 判断 flag 长度 |
用括号代替所有空格,绕过 WAF 对 空格+关键字 的过滤。
爆破结果
flag 长度 42,逐位二分爆破得到 flag。
完整 EXP
1 | import urllib.request, urllib.parse, sys |
Flag
1 | flag{xxxx} |
踩坑与总结
- WAF 只过滤带空格的
and/or/union,用括号代替空格绕过。 - 用异或
^做布尔判断,if也被过滤但异或天然充当条件判断。 substr+ascii逐位爆破,二分法加速。- flag 长度 42,最终爆破得 flag。
- 布尔盲注的关键是先建立稳定的「真/假」响应差异(
Hello/Error),再把它套进0^(条件)结构。
评论
匿名评论隐私政策
✅ 你无需删除空行,直接评论以获取最佳展示效果






