mysql注入检测payload--xor sleep

,可以做一个通用性较高的payload。

常见的注入点:
Select型:
  1. select * from users where user_id in(1,2,3,[4]) and [first_name] like '%[t]%' and second_name=[’b’] group by [first_name] order by [1] [desc] limit [1]
insert型:
  1. insert into users values (‘1’,[2]’,’3’)
delete型:
  1. delete from users where id = [‘0’]
update型:
  1. update users set first_name = ['admin1'] where user_id=[1]
常见的注入点大致有这些。

使用的payload是:
  1. Xor sleep(5)
  2. xor (select(0)from(select sleep(5))v) //select sleep(5)在xor之前执行了, 实际xor执行的时候 只执行了select 0 from v

这里先了解一下sqlmap配置中的<where>字段:

其中1和3是我们要使用的字段,1表示直接在原始值后面添加payload,例如原始值为1,使用之后可能就变成了1 xor sleep(5)了,3表示直接替换原始值,如原始值为1,使用之后就变成了xor sleep(5)。

使用xor的好处就在于不管前面的判断是否为真,都会执行的sleep,sleep一旦执行一般就会存在sql注入。 

之前sqlmap中大部分均为and 和or类型的注入,但是两者会有个问题,例如
  1. Select *  from users where 3<2 and sleep(5)
此处如果user_id=1不存在,就不会执行sleep(5)
  1. Select * from users where 3>2 or sleep(5)[注意这里没有写成user_id=1的形式]
此处由于3>2恒真,后面的sleep(5)没有执行
使用sleep在insert,update和delete会效果好点。毕竟很多没有回显的。

举例来看:
1:select中的order by 类型注入[desc位置的]

结果检测:


使用了where的3,replace


2:select 中的search类型注入

结果:


3:insert型注入

结果:


4:update型注入

运行语句:

执行结果:


5:delete型注入

执行结果:

运行结果: