目录
SQL错误注入概述错误注入的前提条件Xpath类型函数extractvalue()updatexml()其他函数floor()、rand()、count()、group by结合exp()(5.5.5=MySQL数据库版本号=5.5.49)MySQL数据库错误函数汇总错误注入实例extractvalueSQL报错注入概述
通过构造特定的SQL语句,攻击者想要查询的信息(如数据库名、版本号、用户名等)会在页面上的错误提示中出现报错注入的前提条件
Web应用没有关闭数据库报错功能,部分SQL语句的错误直接在页面上回显一些具有错误报告功能的函数(如extractvalue,updatexml等)未在后台过滤Xpath类型函数
extractvalue()
功能:查询XML文档相当于使用标签在HTML文档中查找元素 语法:提取值(XML _ document,XPath _ string) 参数1: XML _ document是字符串格式,这是1:XML_document对象的名称参数2:XPath _ string(XPath格式的字符串),在注入时可以在这里操作 报错原则:/xxx/xxx/xxx/的格式.用于查找xml文档中的字符位置如果写的是其他格式,会报错,返回写的非法格式内容错误消息如下:XPATH语法错误:'xxxxxxxx '
updatexml()
角色:更改文档中合格节点的值。
语法:更新XML (XML _ document,XPath _ string,new _ value)
参数1: XML _ document是字符串格式,这是1:XML_document对象的名称。参数2:XPath _ String(XPath格式的字符串),参数3: new _ value,字符串格式,注入时可以操作,替换找到的符合条件的数据。
错误报告原则:与extractvalue()相同
其他函数
floor()、rand()、count()、group by联用
功能
Floor(x):向下舍入参数x。
Rand():生成一个介于0和1之间的随机浮点数。
Count(*):统计表格下的记录总数。
组x:根据一定的规则(x)分组
报错原理:使用group by和rand()时,如果临时表中没有这样的主键,rand()会重新计算后再插入,然后group by会将计算后的主键直接插入临时表中,导致主键重复报错。
exp()(5.5.5= MySQL数据库版本号=5.5.49)
功能:根据E(自然常数)计算功率值。
语法:exp(x)
报错原理:当参数x超过710时,exp()函数会报错,比如:DOUBLE value is of range:
MySQL数据库报错功能函数总汇
报错注入实例
extractvalue()
仍然使用sqli/Less-1
直接使用错误报告函数来公开库。
暴库
http://127.0.0.1/sqli/Less-1/?id=1 '和extractvalue(1,concat('~ ',database())--
暴表
http://127.0.0.1/sqli/Less-1/?id=1 '和extractvalue(1,concat('~ ',(select group _ concat(table _ name)from information _ schema . tables,其中table _ schema=' security '))--
以下步骤大致相同,不再演示。
updatexml()
暴库
http://127.0.0.1/sqli/Less-1/?id=1 '和updatexml(1,concat('~ ',database()),1) -
暴表
http://127.0.0.1/sqli/Less-1/?id=1 '和updatexml(1,concat('~ ',(select group _ concat(table _ name)from information _ schema . tables,其中table_schema='security ')),1) -
总结
这就是SQL注入教程中关于错误注入的这篇文章。有关SQL错误注入的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望你以后能支持我们!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。