20192410 2021-2022-2 《网络与系统攻防技术》实验八 Web安全 实验报告
20192410 2021-2022-2 《网络与系统攻防技术》实验八 Web安全 实验报告
1.实验内容
1.实验要求
(1)Web前端HTML
能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。
(2)Web前端javascipt
在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的用户名”
尝试注入攻击:利用回显用户名注入HTML及JavaScript。
(3)Web后端:MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表
(4)Web后端:编写PHP网页,连接数据库,进行用户认证
(5)最简单的SQL注入,XSS攻击测试
(6)安装Webgoat或类似平台,并完成SQL注入、XSS、CSRF攻击。
2.实验过程
2.1 Web前端HTML
-
启动apache服务,并查看80端口
systemctl start apache2 netstat -tupln |grep 80
打开浏览器输入127.0.0.1,查看apche是否打开
这是apache的默认页面
-
编写一个含有表单的HTML
在/var/www/html目录下新建一个html文件
在浏览器中输入127.0.0.1/20192410.html打开刚刚编写的网页
2.2 Web前端javascipt
- 在2.1的基础上,编写JavaScript验证用户名、密码的规则
- 验证效果
- 回显“欢迎+输入的用户名”
-
回显用户名注入HTML及JavaScript
注入JavaScript
<script language="JavaScript" type="text/javascript">alert("javascript注入by20192410");</script>
注入html
<h1>不欢迎20192410</h1>
2.3 web后端 MySQL基础
-
开启mysql服务
service mysql start
-
进入MySQL
mysql
-
查看数据库信息
show databases;
-
建库
create database 20192410lxf;
-
创建用户
grant select on 20192410lxf.* to lxf@localhost identified by "20192410lxf";
-
修改密码
set password for root@'localhost'=password('20192410');
-
建表
create table userinfo (username VARCHAR(20),password VARCHAR(20));
2.4 web后端 PHP
- 在/var/www/html文件夹下新建php文件
- 修改之前的html文件,使其点击登录按钮后能跳转到对应的php页面
-
在数据库中添加用户数据
insert into userinfo values('lxf','20192410');
- 测试效果
2.5 最简单的SQL注入,XSS攻击测试
-
sql注入
用户名一栏输入
' or 1=1#
密码随意
-
xss
用户名一栏输入
<script>alert("xss by 20192410");</script>
2.5 安装Webgoat或类似平台,并完成SQL注入、XSS、CSRF攻击
2.5.1 sql注入
webgoat->(A1)Injection->SQL Injection(advanced)->3
- 第一种 联合查询(union)注入
Name框输入:
Dave' union select userid, user_name, password, cookie, '5','6',7 from user_system_data—ss
- 第二种 堆叠注入(query chaining)
Name框输入:
1';select * from user_system_data-- ss
2.5.2 xss
webgoat->(A7)Cross-Site Scripting(XSS)->7
我们在输入框中输入一些代码,而浏览器又不会对用户输入做格式验证,因此就会导致浏览器执行非法代码,进而完成xss。
之后尝试在密码框输入,发现会失败
最后发现点击UpdateCart,下方将credit cart number显示出来了,那么用户名的输入框应该是一个攻击点。
2.5.3 csrf
webgoat->(A8:2013)->Crss-Site Request Forgeries
- 使用Burpsuite拦截请求
- 将请求发送到重发器并查看响应
- 删除请求中的Referer并且csrf = false,查看响应,成功获取flag
- 删除请求中的Referer并且csrf = true,查看响应,成功获取flag
- 修改请求中的Host, 使得Host内容与Referer不同
- 输入flag,页面提示成功
3.问题及解决方案
-
问题1:webgoat和burpsuit需要的java版本不同,无法同时使用
-
问题1解决方案:可以让进入同一局域网下别人开启的webgoat。或者将webgoat的jar包放到所需版本的Java目录下,而本机使用另一个Java版本即可同时使用burpsuit
5.学习感悟、思考等
本次实验的内容是本学期最多的了,不得不感叹web内容的丰富程度。通过本次实验,对于html、JavaScript、php、sql注入、xss、csrf都有了一定的了解,同时也学习使用了解题平台webgoat,总之收获还是非常多的,这类平台对于我们的学习还是非常有帮助的,不仅有教程,最主要的是题目难度由浅入深,还是非常适合新手的。