20212413 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服务
systemctl start apache2
2.在kali浏览器中输入kali的IP地址,查看Apache服务是否启动。
3.在kali终端进入html文件夹,编写一个含有表单的HTML。
# 进入html文件夹
cd /var/www/html/
# 创建并编写一个html
nano 20212413login.html
4.双击20212413login.html文件,跳转至网页。
2.2 Web前端javascipt
1.在20212413login.html的body中编写javascript代码,然后在按钮中添加onclick属性。
3.这时双击20212413login.html文件,跳转网页,如果在登录名或密码为空的情况下点击登录按钮,会弹出消息提示。
4.利用回显用户名注入HTML及JavaScript,命令如下:
<p>HTML注入攻击来自20212413hzj</p>
<script type="text/javascript"> alert("JavaScript注入攻击来自20212413hzj") </script>
2.3 Web后端:MySQL基础
1.进入root账户,启动mysql服务。
# 打开mysql服务
systemctl start mysql
# 查看服务当前状态
systemctl status mysql
2.新建数据库exe8。
# 创建一个新数据库
create database exe8;
# 查看现有的数据库
show databases;
# 使用该数据库
use exe8;
# 在数据库中创建登陆用户表
create table loginuser (uname VARCHAR(20),password VARCHAR(30));
# 在登陆用户表中添加一条记录
insert into loginuser values('20212413','20212413');
# 查看登陆用户表记录
select * from loginuser;
# 添加名为hezhongjian的用户可以通过本机使用20212413作为密码进行登录
grant select,insert,update,delete on exe8.* to hezhongjian@localhost identified by "20212413";
2.4 Web后端:编写PHP网页
1.编写PHP网页,连接数据库,进行用户认证。
2.在前端将action修改成php文件,这个地方我出了点错误,在后面的问题及解决方案详细说明。
3.正确用户名和密码,错误的用户名和密码截图如下。
2.5 最简单的SQL注入,XSS攻击测试
1.SQL注入,用户名最后输入 ’ or 1=1# 。
2.XSS攻击测试,在用户名输入如下,可实现XSS攻击。
<script> alert("20212413的hzj攻击") </script>
2.6安装Webgoat或类似平台,并完成SQL注入、XSS、CSRF攻击
1.安装webgoat,下载链接:https://github.com/WebGoat/WebGoat/releases
2.输入命令启动webgoat服务,在浏览器中打开
ava -jar webgoat-server-8.1.0.jar
http://localhost:8080/WebGoat/
3.注册webgoat,用户名和密码均为学号就行了。
2.6.1SQL注入攻击
实现原理:where后的条件中有一个永真条件即可。
2.6.2XSS攻击
<script> alert("20212423_Reflected XSS") </script>
2.6.3CSRF攻击
原网站点进去长这样,看不到flag
复制目标网页源代码然后存到本地,找到隐藏的from表单,存下来,然后在action的地址前加上
点击图中的按钮即可获得flag=15088
回答正确
3.问题及解决方案
-
问题1:我的html网页输入用户名和密码后无法直接跳转到php,提示要下载。
-
问题1解决方案:这是由于我在html的action中直接输入本地文件名(20212413login.php),无法正确加载,所以提示要下载,这是在本地文件名前加上http://127.0.0.1/,就可以直接跳转了。
-
问题2:我的html在输入正确的用户名和密码时无法跳转至成功登陆的页面。
-
问题2解决方案:是因为我在html中设置用户名和密码分别是:user和upwd,在php中我设置的是user和pwd,密码名字前后不一致
4.学习感悟、思考等
在本次实验中,我深入体验了Web开发的全流程,从前端到后端,再到安全测试,每一步都充满了挑战与收获。
实验的起点是Web前端开发,我首先学习了HTML的基础知识,理解了如何使用标签来构建网页的结构。通过对表单、GET与POST方法的学习,我认识到了表单在用户与服务器交互中的重要作用。我成功编写了一个含有表单的HTML页面,这让我对Web前端的开发有了初步的认识。
随后,我探索了JavaScript和DOM,理解了它们在实现网页交云功能中的关键作用。在已有的HTML页面基础上,我添加了JavaScript代码来验证用户名和密码的规则,实现了在用户点击登录按钮后回显“欢迎+输入的用户名”的功能。这一过程不仅加深了我对JavaScript基本功能的理解,也让我体会到了前端开发的灵活性。
在Web后端的学习中,我安装并配置了MySQL数据库,掌握了建库、创建用户、修改密码和建表的基本操作。这些操作对于Web应用的数据存储至关重要。
之后,我转向了PHP编程,编写了一个简单的网页来连接数据库并进行用户认证。这个过程让我理解了Web后端开发的核心逻辑,也让我认识到了后端代码对于整个Web应用安全性的影响。
在实验的最后阶段,我进行了SQL注入和XSS攻击的测试。通过构造恶意的SQL语句和HTML、JavaScript代码,我模拟了攻击者可能使用的攻击手段。这些测试让我对Web应用的安全隐患有了更深刻的认识,也激发了我对网络安全的兴趣。
为了更系统地学习和测试Web安全,我安装了Webgoat平台,并完成了SQL注入、XSS、CSRF等攻击的练习。通过这些练习,我不仅学习到了各种常见的Web攻击手段,也掌握了基本的防御策略。
总的来说,这次实验不仅提升了我的Web开发技能,也加深了我对网络安全的理解。