关于盲注:关闭了回显
可用 id=1 and 1=1
id=1 and 1=2判断sql语句是否得到执行
目前学习到的注入类型有:Union注入
布尔注入(回显只有yes或者no)
报错注入
时间盲注
堆叠查询注入
二次注入
宽字节注入
Cookie注入攻击
base64注入攻击
XFF注入攻击
函数:
1.BENCHMARK(count,expr) :将表达式expr执行count次
2.substr():
substr() 函数返回字符串的一部分。
注释:如果 start 参数是负数且 length 小于或等于 start,则 length 为 0。
语法
substr(string,start,length)
string:字符串 start:开始处 length:截取长度
3.连接字符串函数
一、concat()函数
功能:将多个字符串拼接成一个字符串
语法:concat(str1,str2,...)
返回结果为连接参数产生的字符串 如果有任何一个参数为NULL 则返回值NULL
注:-符号 如果参数多的话 需要更多的-符号 因此需要concat_ws()
二、concat_ws()函数
功能:一次性指定分隔符
语法:concat_ws(separator,str1,str2,...)
说明:第一个参数指定分隔符 分隔符不能为空 如果为NULL 则返回值NULL
三、group_concat()函数
将group by产生的同一个分组中的值连接起来,返回一个字符串结果。
group_concat函数首先根据group by指定的列进行分组,将同一组的列显示出来,并且用分隔符分隔。由函数参数(字段名)决定要返回的列
函数语法
group_concat([distinct] 字段名 [order by 排序字段 asc/desc] [separator '分隔符'])
(1)使用distinct可以排除重复值;
(2)如果需要对结果中的值进行排序,可以使用order by子句;
(3)separator是一个字符串值,默认为逗号。
select id,group_concat(distinct price) from goods group by id;
4.extractvalue()
extractvalue() :对XML文档进行查询的函数
其实就是相当于我们熟悉的HTML文件中用 <div><p><a>标签查找元素一样
语法:extractvalue(目标xml文档,xml路径)
第二个参数 xml中的位置是可操作的地方,xml文档中查找字符位置是用 /xxx/xxx/xxx/…这种格式,如果我们写入其他格式,就会报错,并且会返回我们写入的非法格式内容,而这个非法的内容就是我们想要查询的内容。
正常查询 第二个参数的位置格式 为 /xxx/xx/xx/xx ,即使查询不到也不会报错
select username from security.user where id=1 and (extractvalue(‘anything’,’/x/xx’))
使用concat()拼接 ‘ / ‘ 效果相同,
select username from security.user where id=1 and (extractvalue(‘anything’,concat(‘/’,(select database()))))
这里在’anything’中查询不到 位置是 /database()的内容,
但也没有语法错误,不会报错,下面故意写入语法错误:
select username from security.user where id=1 and (extractvalue(‘anything’,concat(‘~’,(select database()))))
可以看出,以~开头的内容不是xml格式的语法,报错,但是会显示无法识别的内容是什么,这样就达到了目的。
有一点需要注意,extractvalue()能查询字符串的最大长度为32,就是说如果我们想要的结果超过32,就需要用substring()函数截取,一次查看32位
这里查询前5位示意:
select username from security.user where id=1 and (extractvalue(‘anything’,concat(‘#’,substring(hex((select database())),1,5))))
5.
updatexml()
updatexml()函数与extractvalue()类似,是更新xml文档的函数。
语法updatexml(目标xml文档,xml路径,更新的内容)
select username from security.user where id=1 and (updatexml(‘anything’,’/xx/xx’,’anything’))
报错方式相同:
select username from security.user where id=1 and (updatexml(‘anything’,concat(‘~’,(select database())),’anything’))
6.floor函数(报错注入详解)
https://www.cnblogs.com/N0r4h/p/12799223.html