20212306 2023-2024-2 《网络与系统攻防技术》实验八实验报告
文章目录
1.实验内容及要求
(1)Web前端HTML
能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。
(2)Web前端javascipt
理解JavaScript的基本功能,理解DOM。
在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的用户名”
尝试注入攻击:利用回显用户名注入HTML及JavaScript。
(3)Web后端:MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表
(4)Web后端:编写PHP网页,连接数据库,进行用户认证
(5)最简单的SQL注入,XSS攻击测试
(6)安装Webgoat或类似平台,并完成SQL注入、XSS、CSRF攻击。
2.实验过程
2.1 Web前端HTML
- 开启apache2服务
systemctl start apache2
- 然后在浏览器中输入127.0.0.1,显示apache界面,服务成功开启
- 进入 /var/www/html路径,新建一个表单的html文件
- 然后进行编写,按要求完成一个带表单的html代码
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>testzy</title>
<script>
function login() {
const username=document.getElementById("username").value;
const password=document.getElementById("password").value;
if(username===""||password===""){
alert("用户名密码不能为空!");
return;
}
document.write("Welcome! "+username)
}
</script>
</head>
<body>
<h1>20212306 Exp8</h1>
<form method="post">
<font>用户账号:</font>
<input type="text" name="username" id="username"><br>
<font>用户密码:</font>
<input type="password" name="password" id="password"><br>
<button onclick="login()">login</button>
</form>
</body>
</html>
- 然后在浏览器中输入/var/www/html/20212306login.html,我们可以看到打开的就是我们刚刚编写的html
提交的效果如下:
2.2 Web前端JavaScript
- 在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的用户名”
在2.1的基础上我们已经编写好了相关的代码,具体代码如下:
<script>
function login() {
const username=document.getElementById("username").value;
const password=document.getElementById("password").value;
if(username===""||password===""){
alert("用户名密码不能为空!");
return;
}
document.write("Welcome! "+username)
}
</script>
通过 if(username===""||password===""){ alert("用户名密码不能为空!"); return; } document.write("Welcome! "+username)
我们可以判断输入的用户名和密码是否为空,如果为空,我们就会出现提示,如果不为空,则跳转到“欢迎+输入的用户名”的网页。
- 尝试注入攻击:利用回显用户名注入HTML及JavaScript
- 进行html注入
<p>zhangyang</p>
效果如下:
- 尝试JavaScript注入:
<script>alert("zhangyang")</script>
效果如下:
2.3 Web后端:MySQL基础
- kali中有自带的数据库,需要先打开服务
systemctl start mysql # 打开mysql服务
systemctl status mysql # 查看服务当前状态
service mysql start
mysql_secure_installation
mysql -u root -p //登录,此时密码为空
use mysql //使用数据库
show databases; //查看已有数据库
注意show databases;
这个代码段一定要带分号,第一次尝试因为没带分号就查看不了数据库!一定要注意
- 创建用户zhangyang
create user 'zhangyang'@'%' IDENTIFIED BY '20212306';
- 然后创建一个数据库
create database 20212306zy; //创建数据集!注意加分号
use 20212306zy //使用数据库
创建用户数据表
create table loginuser (name VARCHAR(20),password VARCHAR(30));
插入数据
insert into loginuser values('zy','20212306');
查看数据表
select * from loginuser
- 然后我们给新用户数据库20212306zy的全部权限
GRANT ALL PRIVILEGES ON 20212306zy.* TO 'zhangyang'@'%';
FLUSH PRIVILEGES;
2.4Web后端:编写PHP网页,连接数据库,进行用户认证
html:
php:
然后我们打开20212306login1.html
输入数据库中的,用户账号:zy 密码:20212306
2.5 最简单的SQL注入,XSS攻击测试
-
SQL注入:
用户账号处随便输入,密码处输入' or '1'='1
可以看到,这个账号在我们的数据库中并没有,但是当我们进行SQL注入攻击的时候,会显示登陆成功
-
XSS攻击
<script>alert("zy_XSSattack")</script>
密码处仍然输入' or '1'='1
点击登录,可以看到出现弹窗,攻击成功
2.6 安装Webgoat或类似平台,并完成SQL注入、XSS、CSRF攻击
首先要下载配置phpstudy集成开发环境,然后在phpstudy文件夹下的www中放入下载好的pikachu文件,
靶场搭建教程
然后在浏览器中输入http://127.0.0.1/pikachu/,可以看到如下界面
(1)SQL注入
搜索SQL ,输入刚刚一直在尝试的' or '1'='1
,可以看到注入成功!
- XSS注入
<script>alert("xss")</script>
- CSRF攻击
我们选择CSRF(get)攻击的项目,然后可以点击提示可以看到已有的用户名和密码
我们尝试登陆一下,然后出现如下界面
然后我们选择修改信息,用bp进行抓包
提交的请求
GET /pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=%E5%A5%B3&phonenum=19216811133&add=dky&email=vince%40pikachu.com&submit=submit
并没有看到CSRF的token,说明没有防CSRF的措施。
我们可以构造 一个url,修改其中的电话号码部分,发给被攻击者
http://192.168.11.134/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=%E5%A5%B3&phonenum=20212306&add=dky&email=vince%40pikachu.com&submit=submit
可以发现vince的电话号码被篡改
CSRF攻击成功!
3. 问题及解决方案
问题1:pikachu无法实现抓包
问题1解决方案:在电脑上,我先是用wireshark进行抓包,但是尝试了多次都没有抓到包。于是我参考了一些同学的实验报告 ,向我的舍友请教!我舍友建议我下载bp,用bp进行抓包。在用bp抓包之前,我们要打开代理,同时进入那个网页的时候要把127.0.0.1换成自己的ip地址,我是满足了这两个条件才抓到包的。
4. 学习感悟、思考等
本次实验是网络攻防的最后一次实验了。总体还是比较顺利的,卡住的地方就是在靶场CSRF攻击任务中抓包的地方,但是在请教了同学和舍友之后也是一个问题一个问题解决,最终成功把实验做出来了。
在一开始的时候觉得课程的八个实验真的很多,在做这些实验的过程中,也遇到了很多问题,经常崩溃,但是也都是一个个做过来了,其中多亏了老师和同学的帮助,虽然过程坎坷,但是在一次次实验中,感觉自己也是学到了一些东西,虽然每次做攻击实验的时候都要把防火墙关了才能攻击成功,我深刻的知道我们这种攻击的技术并不高,但是这些实验让我初步接触了网络攻防技术,同时让我深刻意识到在网络的世界中我们需要格外注意个人信息安全。
感谢老师一学期以来的帮助和指导!感谢同学们的帮助!