SQL注入实战——堆叠注入,sqli-labs第44/45关

admin 2026-01-30 17:51:47 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文解析Sqli-Labs第44/45关堆叠注入技术,核心在于盲注环境下利用分号分隔语句修改数据库。通过布尔测试确认闭合方式后,构造UPDATEPayload更改admin密码,演示了无回显时通过数据库状态变化验证漏洞的方法。实战中需注意括号闭合差异及数据写入风险。 综合评分: 90 文章分类: 渗透测试,WEB安全,漏洞分析


cover_image

SQL注入实战——堆叠注入,sqli-labs第44/45关

原创

武文 武文

武文学网安

2026年1月30日 04:05 中国香港

大家好,我是武文。 第 44 / 45 关,表面上它像是“又一关盲注”,但真正的重点是:盲注环境下 + 允许堆叠查询 = 直接获得数据库写入能力。

为什么这么说?我们一步步来剖析。

一、第 44 / 45 关整体说明

官方标题:

  • 第 44 关:POST – Error based – String – Stacked – Blind
  • 第 45 关:POST – Error based – String – Stacked – Blind

两关核心一致: 都是 POST 注入 + 支持堆叠查询。 区别点只有一个:闭合方式不同(45 比 44 多一层括号闭合)。

虽然标题里带 Error based,但这两关页面几乎不给错误回显,所以最终打法仍然以 盲注判断 + 堆叠验证 为主。

二、源码白盒定位

从源码来看,注入点依旧在password。

因为后端 SQL 把 password 直接拼接进查询条件里,而且过滤/转义不足,所以 password 是最稳定的注入入口。

三、闭合测试:确认注入符号及插入结构

3.1 第 44 关:单引号闭合

针对注入点(比如 password),先测试基础闭合:


password=1’1′)

![](https://mmbiz.qpic.cn/mmbiz_gif/VFf46TKXLVEZTlJUz2N4v3NJEuaUp4DpO2PD7ibcSJKD3RDsWWHKeevIC2XvjGCWICmQRRtWkBkBtkU59oUoLwg/640?wx_fmt=gif&from=appmsg#imgIndex=1)

由于页面不回显 SQL 报错,所以不能用“是否报错”判断闭合;这里用布尔条件导致的页面差异来确认注入是否成立。

进一步验证布尔逻辑:


password=1′ or 1=1 #

![](https://mmbiz.qpic.cn/mmbiz_gif/VFf46TKXLVEZTlJUz2N4v3NJEuaUp4DpK6cfQOzQ3trQo4EI7q51jFYrARXonHwicfy6oGtn520L5RI1HbTk0hQ/640?wx_fmt=gif&from=appmsg#imgIndex=2)

前后页面表现差异,即可确认

单引号闭合是有效注入结构。
尝试是否有显错注入:
1' and updatexml(1,concat(0x7e,database(),0x7e),1)#

通关实验可知,无显错注入。

3.2 第 45 关:单引号 + 括号闭合

在第 45 关,SQL 语句结构可能包含一些包裹,使得闭合不止是简单的 '

这时我们可以构造:


1′) or 1=1 #

![](https://mmbiz.qpic.cn/mmbiz_gif/VFf46TKXLVEZTlJUz2N4v3NJEuaUp4DpY5qQCR2qBzicqJbRtDZILvED3XpdYSb0ZqpcBMxhbLxPxXicLKDrjHtA/640?wx_fmt=gif&from=appmsg#imgIndex=4)

可以直接登录,说明实际注入点的闭合结构是:

单引号 + 括号闭合 ('))

这和很多 blind 注入关中的闭合方式是一致的。

四、利用BurpSuite进一步验证判断是否存在显错注入

我一度以为是自己直接在输入框中输入的数据有问题,所以用BP抓包修改参数的方式来进一步进行验证。

抓取POST请求发送到重放器。

已关注

关注

重播 分享 赞

关闭

观看更多

更多

退出全屏

切换到竖屏全屏退出全屏

武文学网安已关注

分享视频

,时长00:27

0/0

00:00/00:27

切换到横屏模式

继续播放

[ ]

进度条,百分之0

播放

00:00

/

00:27

00:27

倍速

全屏

倍速播放中

0.5倍 0.75倍 1.0倍 1.5倍 2.0倍

超清 流畅

 您的浏览器不支持 video 标签

继续观看

SQL注入实战——堆叠注入,sqli-labs第44/45关

观看更多

转载

,

SQL注入实战——堆叠注入,sqli-labs第44/45关

武文学网安已关注

分享点赞在看

已同步到看一看写下你的评论

视频详情

构造显错payload测试

1' and updatexml(1,concat(0x7e,database(),0x7e),1)#

很显然,依然没有显错。说明无法利用显错注入,只能进行盲注。

五、综合实例

以第44关为例,验证堆叠注入。45关仅多一个右括号,这里不再重复演示。

username=admin&password=1'; UPDATE users SET password='stacked45' WHERE username='admin';

因为页面只展示第一条查询的结果,而我们堆叠的 UPDATE 属于“第二条语句”,执行成功也不会直接体现在页面回显上,所以需要从数据库侧验证。执行并观察mysql数据库信息的变化。

尽管前端并没有任何变化,但后端的数据已经被修改。

  • admin 密码变成 stacked44
  • 堆叠注入成功

六、通关总结:这两关到底在考什么?

44/45 可以理解为:在 42/43 的“堆叠能力”基础上,把前端回显进一步压缩成盲注风格,让我们必须通过 数据库状态变化 来确认注入是否成功。本文仅用于靶场学习与授权测试,请勿用于未授权环境。


免责声明:

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

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

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

本文转载自:武文学网安 武文 武文《SQL注入实战——堆叠注入,sqli-labs第44/45关》

评论:0   参与:  0