首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SQL整型报错注入

什么是整型报错注入

注入点的数据类型是整型,报错是信息的显示方式。

信息出现在报错语句中;mysql_error()函数返回MySQL操作产生的文本错误信息。

不能用group_concat()一次性列出所有数据,只能用limit依次猜解。

报错函数

Updatexml()

updatexml()函数是更新xml文档的函数。

语法updatexml(目标xml文档,xml路径,更新的内容)

extractvalue()

extractvalue() :对XML文档进行查询的函数

其实就是相当于我们熟悉的HTML文件中用标签查找元素一样

语法:extractvalue(目标xml文档,xml路径)

有一点需要注意,extractvalue()和Updatexml能查询字符串的最大长度为32,就是说如果我们想要的结果超过32,就需要用substring()函数截取,一次查看32位

原理

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

(这里我们是为了学习报错注入,所以不需要太详细的知道该函数具体原理)

利用concat函数将想要获得的数据库内容拼接到第二个参数中,报错时作为内容输出。

updatexml()雷同

Floor()

关键函数的说明

rand(0)*2

rand() 可以产生一个在0和1之间的随机数。当我们提供一个种子参数 0 后,每次产生的值都是一样的。也可以称之为伪随机(产生的数据都是可预知的)。

为什么要乘以 2 呢?这就要配合 floor 函数来说了。

floor(rand(0)*2)

floor() 返回小于等于该值的最大整数。

之前我们了解到,rand() 是返回 0 到 1 之间的随机数,那么乘 2 后自然是返回 0 到 2 之间的随机数,再配合 floor() 就可以产生确定的两个数了。也就是 0 和 1。

为什么需要这两个数呢?

group by 与 count(*)

group by 主要用来对数据进行分组(相同的分为一组),这里与count() 结合使用。就是group by把相同的分为一组,count(*)统计每一组数目

报错原理

group by 进行分组时,floor(rand(0)*2)执行一次(查看分组是否存在),如果虚拟表中不存在该分组,那么在插入新分组的时候floor(rand(0)*2)就又计算了一次。(其实在上述 rand(0) 产生多个数据的时候,也能观察出来。只要 rand(0) 被调用,一定会产生新值)。

当 group by 对其进行分组的时候,首先遇到第一个值 0 ,发现 0 不存在,于是需要插入分组,就在这时,floor(rand(0)*2)再次被触发,生成第二个值 1 ,因此最终插入虚拟表的也就是第二个值 1 ;然后遇到第三个值 1 ,因为已经存在分组 1 了,就直接计数加1(这时1的计数变为2);遇到第四个值 0 的时候,发现 0 不存在,于是又需要插入新分组,然后floor(rand(0)*2)又被触发,生成第五个值 1 ,因此这时还是往虚拟表里插入分组 1 ,但是,分组 1 已经存在了!所以报错!

Exp()原理

exp()函数返回e(自然对数的底)的X次方的值。

当传递一个大于709的值时,函数exp()就会引起一个溢出错误。

~是一个位运算符,按位取反,~0就会返回184467744073709551615。又因为函数成功执行后会返回0,所以我们将成功执行的函数取反就会得到最大的无符号BIGINT值。

通过子查询与按位求反,造成一个DOUBLE overflow error,并借由此注出数据。

payload

参考文章

[学习基于extractvalue()和updatexml()的报错注入](https://blog.csdn.net/zpy1998zpy/article/details/80631036)

[sql报错注入:extractvalue、updatexml报错原理](https://www.cnblogs.com/laoxiajiadeyun/p/10488731.html)

[mysql的floor()报错注入方法详细分析](https://www.cnblogs.com/sfriend/p/11365999.html)

[SQL注入 | exp()函数报错](https://blog.csdn.net/weixin_41594045/article/details/83547103)

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200510A05W7T00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券