SQL注入之报错注入
是通过特殊函数错误使用并使其输出错误结果来获取信息的。
正确查询(联合等)没给回显,那就用错误回显出数据;
可有些报错回显会进行限制,导致得到的数据库不全,因此:
报错注入的函数:
1.floor():向下取整;
2.extract value():对XML文档进行查询的函数,当参数的格式不正确而产生的错误,会返回参数的信息;
3.updatexml():更新XML文档的函数
4.exp():以e为底的指数函数
5.rand()+group()+count()
.....
常用的:
updatexml()
语法:updatexml(XML_document,XPath_string,new_value);
Payload:and updatexml(1,concat(0x7e,(select user()),0x7e),1) #
前后添加~(编码为0x7e)使不符合XPth报错
Extractvalue()
语法:extractvalue(XML_document,XPath_string);
Payload:and extractvalue(1,concat(0x7e,(select user()),0x7e)) #——道理一样
Sql注入之宽字节注入——只适于国内:
gbk编码针对于汉字,汉字url编码2位,字母url编码1位。
utf-8:汉字不为2位,只有GBK编码时,才可考虑使用宽字节注入
在url中对于特殊字母都会进行自动加入/进行转义
如:
利用汉字的一半编码与/组合达成过滤:
发的编码为:%B7%B7
’ 编码为:%27
组合:%B7%27
此时这个%B7和/被网页识别为汉字,此时的’就空闲出来且为有效的’,我们就可以进行SQL语句的闭合,注入。
之后就是联合查询