SQL报错注入

当注入点不回显数据库查询的数据,那么通过一般的注入手段是无法返回相关数据库的信息,但是,如果查询时输入错误SQL代码会报错,并且是通过mysql_error(),mysqli_error()等返回错误,那么就存在报错注入的可能性。

所需函数

报错注入需使用Mysql函数XML Functions:

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

updatexml() 函数报错注入原理

  1. updatexml() 函数定义

UPDATEXML (XML_document, XPath_string, new_value);
第一个参数:XML_document是String格式,为XML文档对象的名称;
第二个参数:XPath_string (Xpath格式的字符串);
第三个参数:new_value,String格式,替换查找到的符合条件的数据;

  1. updatexml() 函数运行机制

该函数对XPath_string进行查询操作,如果符合语法格式要求,则用第三个参数替换,不符合语法格式要求,则会报错并带出查询的结果

  1. updatexml() 函数运行示例

正常查询:

select updatexml('<a>c</a>','/a','<a>b</a>');

因为xpath语法中 “~” 是非法字符所以可以用 “~” 构造报错:

select updatexml('<a>c</a>','~x~','<a>b</a>');

注意:两个函数查询出的结果显示长度限制为32位,如果超出显示长度需要使用left()或right()函数。

函数 描述 用法
left() 从左开始截取字符串 left(str, length)==>left(被截取字符串, 截取长度)
right() 从右开始截取字符串 right(str, length)==>right(被截取字符串, 截取长度)

concat()函数为字符串连接函数显然不符合规则,但是会将括号内的执行结果以错误的形式报出

extractvalue()函数报错注入原理

  1. extractvalue()函数定义

EXTRACTVALUE (XML_document, XPath_string);
第一个参数:XML_document是String格式,为XML文档对象的名称;
第二个参数:XPath_string (Xpath格式的字符串);
作用:从目标XML中返回包含所查询值的字符串;

  1. 使用示例:

正常运行

select extractvalue('<a>ccc<b>ddd</b></a>', '/a') ;

同样的,使用“~”引起报错

(count()、rand()、group by)联合报错注入原理

运行机制:
mysql在遇到select count() from table group by floor(rand(0)2)语句时,首先会建立一个虚拟表,其中floor(rand(0)2)产生值为0和1的固定序列,使用group by的时候floor(rand(0)2)会被执行多次,从而造成主键冲突引起报错

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇