sqlmap实战:sqli-labs三连斩14~16关

admin 2026-01-09 03:19:50 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 文档演示利用sqlmap通关sqli-labs第14至16关,涵盖双引号显错注入及单双引号盲注。作者结合Burp抓包,深入讲解sqlmap的level与risk参数应用。文章对比了布尔盲注与时间盲注的差异,为渗透测试提供了实用的工具配置与操作建议。 综合评分: 90 文章分类: 渗透测试,WEB安全,安全工具,实战经验,漏洞分析


cover_image

sqlmap实战:sqli-labs三连斩14~16关

原创

武文学网安

武文学网安

2026年1月8日 03:33 西藏

大家好,我是武文。

今天让我们一起来完成 第 14 至 16 关的挑战。因为这三关与前面的GET注入关卡类似,而我在前面已经学习了sqlmap自动化注入,所以在后面我加快了测试速度。本文仍将延续之前的先手动判断是否存在注入点和闭合方式,再利用sqlmap来进行自动化注入的方法来学习和实操。这样既能验证自己的判断方式,又能加快学习进度和进一步熟练掌握sqlmap的使用。废话不多说,咱们往下走。

一、第一斩:第 14 关 — 显错注入,双引号闭合

为了快速测试出闭合方式,我这里直接在前端页面输入框内先做闭合测试,到后面需要进行抓包时,再利用BP抓包。在做前端登录测试的时候,有一个测试数据比较广泛,但前面的文章中忘记提到,那就是admin:admin。不少的类似开发会遗留这样的测试账号密码,所以我们在后续的测试过程中,也可以尝试用这对组合。

1.1 手动判断注入点

尝试不同的闭合符号,因为在前面的文章中已经测试过哪些注释符有效,所以这里在选择注释符时省略了注释符探测这一步。

'"" or 1=1 #

在测试到双引号时,出现报错信息。

可以明显判断出”可以引起错误,为了进一步验证,所以测试了 双引号+一个或为真的条件。成功登录,说明判断结果为真。得出结论,闭合方式为双引号闭合。

1.2 判断注入方式

1.2.1 判断查询位数

" order by 1 #" order by 2 #" order by 3 #

因为第一步测试的时候,我们就发现能够出现报错信息,这里我们可以猜测大概率会存在显错注入。通过用order by测试,可以看出会出现错误信息。测试到order by 3时报错,说明查询列数只有2列。

1.2.2 判断是否有回显位

利用前一步查询到的信息,进一步判断是否有回显位。

" union select 1,2#

通过测试,页面仅可以看出成功登录,没有明显的回显位,看来只能想其他办法了。

1.2.3 判断是否有错误显示

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

通过测试,可以看出有明显的错误显示,并且成功利用这个错误显示,成功查询到了当前数据库为security。可以得出结论有基于错误的注入方式。

因是否成功登录页面有明显的两种状态,所以可以判断至少有盲注。

1.3 sqlmap自动化注入

利用burp suite抓取数据,将POST请求存为req.txt文件。

这里简述步骤:打开proxy代理插件选择burp代理→burp suite打开监听,即intercept on状态→在HTTP history栏中选择对应的POST url 鼠标右键,点击send to repeater。在Reapter中选择将Request的所有数据复制另存为txt文件格式即可。

利用sqlmap自动化注入。

python sqlmap.py -r "‪C:\Users\demon\Desktop\security\req.txt" --batch --level=5 --risk=3

这里需要讲解一下sqlmap这几个参数使用:

1. --level 参数

--level 参数控制 sqlmap 执行时的扫描深度。它的值范围是从 1 到 5,数字越大,测试的深度越深,sqlmap 会尝试更多的 注入方式 和 漏洞检测,但相应的执行时间也会增加。

  • --level=1:这是默认值,表示 sqlmap 会进行最基础的测试,只会测试最常见、最基本的注入方式。例如,它会尝试一些简单的注入点(比如使用单引号 ',双引号 ")。
  • --level=2:稍微增加了一些测试,会检查一些常见的注入方式和一些较为隐蔽的漏洞。
  • --level=3:更进一步,sqlmap 会进行更多的测试,尝试通过一些更复杂的注入技巧来检测潜在漏洞。
  • --level=4:增加了更多高级的测试选项,会尝试使用更多的载荷,并检查更复杂的漏洞。
  • --level=5:这是最高级别,sqlmap 会非常深入地测试,包括使用所有可能的 payloads 和技术,尽可能地去暴露每一个潜在的漏洞。

影响

  • level=1 会更快,但检测的漏洞较少。
  • level=5 会消耗更多时间,但可以找到更多复杂的漏洞。

在实际使用中,通常在对目标进行初步扫描时使用 level=3 或 level=5,以便更全面地检查潜在的 SQL 注入漏洞。


2. --risk 参数

--risk 参数控制 sqlmap 执行的 攻击风险,它决定了 sqlmap 会执行的攻击类型的风险等级。这个参数的值也是从 1 到 3,数字越大,sqlmap 会尝试更高风险的攻击方法。

  • --risk=1:这是最低风险级别,sqlmap 只会使用最基本的攻击方法进行扫描。这意味着它会尽量避免触发危险或明显的系统行为,适合对安全性要求较高的目标。
  • --risk=2:中等风险级别,会尝试一些稍微危险的技术,比如使用时间盲注、基于错误信息的注入等。大多数情况下,使用此级别不会对目标系统造成较大的影响。
  • --risk=3:这是最高风险级别,sqlmap 会尝试一些高风险的注入方法,比如使用更加激进的 盲注错误注入导出数据库数据 等。这个级别可能会导致更多的系统负载,甚至可能触发系统的防御措施或安全警告。

影响

  • risk=1 适合不希望给目标系统造成任何影响的测试。
  • risk=3 会使用更具攻击性的方式来测试系统的弱点。

通常,如果你在进行 渗透测试 或 漏洞验证,会将 risk 设置为 3 来确保发现潜在的所有漏洞,尤其是对于目标较为复杂或有较强防护的网站。


综合使用:

当你在使用命令时,--level 和 --risk 两个参数是互补的,决定了 sqlmap 的扫描深度和使用的攻击技术。

--batch

:表示自动接受默认选项,避免在测试过程中出现需要手动确认的提示。

根据sqlmap输出的文件路径,找到对应保存的文件,可以看到已经成功抓取数据信息。

至此,第14关完成。

二、第二斩:第 15 关 — 盲注,单引号闭合

2.1 还是手动判断注入点

'"')")' or 1=1 #" or 1=1 #

经过测试发现,只有在’ or 1=1#时会有页面变化,说明存在注入漏洞,且无错误显示。说明当前页面只存在前面所学习到的注入方式中的盲注。

2.2 sqlmap自动化注入。

利用burp suite抓取数据,将POST请求存为req.txt文件。

这里我尝试了用可以登录的admin用户名和密码来试试,看看有啥不一样。

python sqlmap.py -r "‪C:\Users\demon\Desktop\security\req.txt" --batch --level=5 --risk=3

通过sqlmap测试,可以得出和我们手动测试时一样的结论,即存在盲注(它这里是时间盲注)。

至此,第15关成功KO。利用自动化工具,这效率兼职翻了不知多少倍。

三、第三斩:第 16 关 — 盲注,双引号+括号闭合

3.1 手动判断注入点

还是先手动判断注入点,这一关仅闭合方式与15关不同,其他皆一样。

'"')")' or 1=1 #" or 1=1 #') or 1=1 #") or 1=1 #

经过测试,可以确定闭合方式为双引号+括号,且页面方式存在登录成功失败两种状态,可以判断存在盲注。

3.2 sqlmap自动化注入。

利用burp suite抓取数据,将POST请求存为req.txt文件。

然后打开CMD命令行,执行命令。

python sqlmap.py -r "‪C:\Users\demon\Desktop\security\req.txt" --batch --level=5 --risk=3

可以从运行结果看到注入方式和保存的结果。

至此,14~16关三连斩完成。

结语

其实在判断盲注的时候,因为界面存在两种明显不同状态可以区分是否登录成功,这一点其实可以肯定能够判断是存在布尔盲注的方式。但sqlmap只能识别出来时间盲注。在我的理解中,只有在页面都无法区分,只能通过sleep方法来看页面是否延迟,才能确定是否成功利用时间盲注。这一点是有点奇怪的,可能是sqlmap在判断返回页面的时候觉得页面变化非常小,从而有限选择了时间盲注。

如有什么疑问,意见或建议,欢迎评论区留言互动。


免责声明:

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

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

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

本文转载自:武文学网安 武文学网安《sqlmap实战:sqli-labs三连斩14~16关》

评论:0   参与:  0