20212313 2023-2024-2 《网络与系统攻防技术》实验8实验报告

20212313 2023-2024-2 《网络与系统攻防技术》实验8实验报告

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.1Web前端HTML

(1)打开Apache。
因为kali都只带APache所以无需安装,输入systemctl start apache2即可
在浏览器中打开127.0.0.1,出现下图表示打开APache成功
在这里插入图片描述
(2)在windows主机上编写wjblogin1.html文件,其中内容包含了form表单,然后保存到/var/www/html目录下。
由于之前在网安课上学习过html编写,所以比较简单。

																						
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>会员登入页面</title>
<link rel="stylesheet" href="css/style.css"> <!-- 这是外部调用css -->
<style>
input[type=text]{
	width:340px;
	font-size:16px;
	background:#f5f5f5;
	color:#666666;
}
input[type=password]{
	width:340px;
	font-size:16px;
	background:#f5f5f5;
}
  #ID2 {
    width: 100%;
    height: auto;
    display: block;
    margin: 0 auto;

  }
   #ID3{
    font-family: "Times New Roman";
    font-size: 30pt;
    margin: 0;
    padding: 20px;
    align:center;
</style>
</head>
<body align="center" >
<div align="center">
	<form name="form1" method="POST" action="Logservlet">
		<h2>登入界面</h2>
		<input type="text" placeholder="请输入账号" name="username">
		<br>
		<input type="password" placeholder="请输入密码" name="pwd">
		<br>
		<p><input type="radio" name="dsaf">我已同意<a href="#" target="_blank">登入协议</a> 
			<!--#表示跳转到当前页面  --></p>
		<input type="submit" value="登入">
	</form>
</div>
</body>
</html>

在这里插入图片描述

(3)在火狐浏览器中打开wjblogin1.html文件
在这里插入图片描述

2.2Web前端javascipt

(1)在原来wjblogin1.html文件中进行完善,添加JavaScript,判断提交用户名、密码是否为空。并且登入后显示欢迎+用户名。


<!DOCTYPE html>
<html>
<script type="text/javascript">
     function check(){
         var uname = form1.usrname.value;
         var upwd = form1.pwd.value;
         
         if(uname == ""){
             alert("用户名不能为空!")}    
         else if(upwd == ""){
             alert("密码不能为空!");}
         else {
             document.write("欢迎"+uname)
         }
     }
 </script>
<head>
<meta charset="UTF-8">
</head>

<body>
<div style="text-align:center">
<h1>这是一个登录页面</h1>
<form name="form1" method="post" action="">
用户名:<input type="text" name="usrname"/>
<br><br>
密码:<input type="password" name="pwd"/>
<br><br>
<input type="submit" name="sub1" value="确定" onclick="check()"/> //按钮添加onclick属性
<input type="reset" name="sub1" value="重置"/>
</form>
</div>
</body>

</html>

在这里插入图片描述
(2)浏览器打开wjblogin2.html文件
①没有用户名时:
在这里插入图片描述
②没有密码时:
在这里插入图片描述
③成功登入时:
在这里插入图片描述

(3)尝试注入攻击:利用回显用户名注入HTML及JavaScript。
其实很简单,在用户名中输入以下内容即可,html文件就会将其认为是html编码的内容。

<p>HTML注入攻击20212313wjb</p> 
<script type="text/javascript"> alert("JavaScript注入攻击20212313wjb") </script>

在这里插入图片描述
在这里插入图片描述

2.3Web后端

(1)启动MySQL

systemctl start mysql //打开mysql
systemctl status mysql  //查看mysql状态

在这里插入图片描述
(2)查库,查数据,修改密码,更新权限

use mysql; # 进入mysql数据库
show databases; # 查看现有的数据库
select host, user, password from user; # 查看用户表数据
set password for ‘root’@‘localhost’ = password(‘20212313wjb’); # 修改root用户密码
flush privileges; # 更新权限
在这里插入图片描述

(3)修改root密码后重新登陆:

mysql -u root -p # 使用新密码进行登录测试
use mysql; # 进入mysql数据库
select host, user, password from user; # 查看用户表数据

在这里插入图片描述
(4)建表并且进行操作

create database 20212313wjb; # 创建一个新数据库
show databases; # 查看现有的数据库,发现多了一个20212313wjb的数据库
use 20212313wjb; # 使用该数据库,并且进入该库
create table lguser (uname VARCHAR(20),password VARCHAR(30)); # 在数据库中创建登陆用户表
insert into lguser values(‘20212313’,‘wjb’); # 在登陆用户表中添加一条个人信息
select * from lguser; # 查看登陆用户表记录

在这里插入图片描述

在这里插入图片描述

2.4Web后端

(1)编写PHP网页
在windows上编写login.php文件,进行数据库连接,其中severname应该是虚拟机的ip地址,密码是20212313wjb
在这里插入图片描述

(2)连接数据库
将原来的wjblogin2.html复制成wjblogin3.html文件,然后将表单的“action”属性指向“login.php”,其action就是将form表单中提交的内容传送到login.php进行验证

<form name="form1" method="post" action="login.php"

在这里插入图片描述

(3)进行用户认证
在这里插入图片描述

2.5最简单的SQL注入,XSS攻击测试

(1)sql注入攻击
其实sql注入攻击是非常简单的攻击,只要让输入的东西让系统认为是永真的就可以,比如说or '1'='1,然后我认为最简单的避免方式就是使用参数化查询,修改查询语句即可避免sql注入攻击。
在这里插入图片描述
(2)用户名注入or '1'='1,密码随便输一个,就成功登陆了
在这里插入图片描述
(3)xss攻击
xss攻击的避免在上学期网安课设中有了解,只要讲编码设置成html编码就可以进行简单预防
在这里插入图片描述
(4)用户名注入<script> alert("XSS攻击20212313wjb") </script>
在这里插入图片描述

2.6安装Webgoat或类似平台,并完成SQL注入、XSS、CSRF攻击。

(1)在windows主机下载webgoat-server-8.1.0.jar,然后保存到kali虚拟机中去
webgoat下载链接
在这里插入图片描述
(2)输入以下命令即可打开webgoat服务
java -jar webgoat-server-8.1.0.jar
在这里插入图片描述
(3)输入http://localhost:8080/WebGoat/login,进入该网站,然后进行注册后登入
在这里插入图片描述
(4)SQL注入练习
选择左侧栏A1→SQL Injection(Intro)→9号
经过学习,我们要选择smith’和‘1’=‘1,就可以构造永真式了

在这里插入图片描述

在这里插入图片描述

继续做题:
仍然是构造永真式,观察题目,输入Name为“ Smith ”(其实随意都行),TAN为
3SL99A’or’1’=‘1成功获取,
在这里插入图片描述
(5)xss攻击
左侧栏A7→Cross Site Sorpting→选择7号
之前都有做过,在第一个方框中输入<script>alert("20212313_Reflected XSS")</script>即可
在这里插入图片描述
(6)CSRF攻击,这是之前没有学习过和了解过的
在这里插入图片描述

选择左侧A8 Cross-Site Request Forgeries→3号进入题目,然后→点击Submit Query按钮会显示flag为NULL,经过学习我们了解到想要解题其实就是找到flag,将其填进去即可。

在这里插入图片描述
返回题目,按F12即可查看该页面的html代码,将submit query的HTML代码拷贝出来。
新建一个wjb.html文件,将拷贝下来的代码放进去并添加必要的html标签。
在这里插入图片描述
在这里插入图片描述
然后打开wjb.html文件,然后点击submit query,发现flag是52531
在这里插入图片描述
所以在方框中填入52531即可,下图为成功标识
在这里插入图片描述

3.问题及解决方案

  • 问题1:在/var/www/html目录下无法打开html文件

  • 问题1解决方案:最开始我以为是使用root模式复制文件的,然后普通用户模式打不开该文件,于是我将该文件设置成了所有人可读可写模式,输入chmod 777 wjblogin3.html 结果发现还是打不开,我就有点疑惑了。最后我删除文件重新来过,编写一个新的文件就发现可以了,真的是很奇妙

  • 在这里插入图片描述

  • 问题2:永真式构造时,提交答案总是错误

  • 问题2解决方案:提交的单引号一定要是英文的,如果是中文的那就不可能对!!!

4.学习感悟、思考等

本次的实验其实就是基于web,进行sql注入攻击,xss攻击,csrf攻击。前面两个攻击方式其实特别简单,就是在输入框中以html编码的形式输入即可。同时避免的方法也很简单,实现参数化查询,修改编码方式就可以避免。然后csrf攻击是之前听过,但没了解过的。学习他耗费了比较多的时间。此次做题,也是做了比较简单的csrf攻击,再进阶的版本我觉得我目前的能力还无法完成。
至此本学期的八个实验全部完成,过程很艰辛,很难熬,遇到的问题丰富多样,又意想不到。总是有不同的难题摆在面前,经过认真的钻研和学习,好在有同学和老师教导,我最终顺利完成了八个实验。这八个实验从不同类型,不同角度,进行网络攻防实践。让我自己真的有点黑客的感觉,收获的知识与内容也特别多。再次特别感谢王志强老师的教导,感谢老师!!!

参考资料

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值