20232403 2025-2026-1 《网络与系统攻防技术》实验八实验报告

20232403 2025-2026-1 《网络与系统攻防技术》实验八实验报告

1.实验内容

搭建Apache、PHP、MySQL环境及DVWA平台
实践了SQL注入、XSS等攻击与防御。

2.实验过程

2.1Web前端HTML

sudo systemctl status apache2检查Apache状态
image
Kali Linux已经预装了Apache,但是Apache服务当前是停止状态。
sudo systemctl start apache2启动Apache服务
sudo systemctl enable apache2设置Apache开机自启
sudo systemctl status apache2检查状态确认已启动
sudo netstat -tulpn | grep :80查看是否在监听80端口
curl http://127.0.0.1/测试Apache是否正常工作
image
image
Apache已经成功启动并正常运行。
然后创建实验文件
进入到/var/www/html目录,创建一个表单

20232403

HTML表单与GET/POST方法

<h2>GET方法表单</h2>
<form action="process.php" method="GET">
    用户名: <input type="text" name="username"><br>
    密码: <input type="password" name="password"><br>
    <input type="submit" value="GET提交">
</form>

<h2>POST方法表单</h2>
<form action="process.php" method="POST">
    用户名: <input type="text" name="username"><br>
    密码: <input type="password" name="password"><br>
    <input type="submit" value="POST提交">
</form>

<h2>Apache控制</h2>
<p>启动Apache: <code>sudo systemctl start apache2</code></p>
<p>停止Apache: <code>sudo systemctl stop apache2</code></p>
<p>重启Apache: <code>sudo systemctl restart apache2</code></p>

<h2>理解要点</h2>
<p>1. GET: 数据在URL中可见</p>
<p>2. POST: 数据在URL中不可见</p>
创建处理表单的PHP文件

屏幕截图 2025-12-07 203037

访问表单页面:

image

测试GET方法:

image

测试POST方法:

image
从结果可以理解GET与POST的区别
GET数据在URL中可见,可以被收藏、分享,而POST数据不在URL中,更安全,适合传输密码等敏感信息。

2.2Web前端javascipt

javascipt验证规则代码:
image
image

结果测试:
image

测试XSS攻击:
image

2.3Web后端:MySQL基础:正常安装、启动MySQL,建库、创建用户、修改密码、建表

  1. 检查并启动MariaDB
    sudo systemctl start mariadb
  2. 创建实验数据库
    CREATE DATABASE web_lab;
  3. 使用这个数据库
    USE web_lab;
  4. 创建用户表
    CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(50) UNIQUE,
    password VARCHAR(50)
    );
  5. 插入3条测试数据
    INSERT INTO users (username, password) VALUES
    ('admin', 'admin123'),
    ('user1', 'pass123'),
    ('test', 'test123');
  6. 查看数据是否插入成功
    SELECT * FROM users;

image

SQL注入测试

image

image

XSS测试

输入:<img src=x onerror=alert(20232403)>
image
注意这句代码一定要括起来,如果不这么做,他甚至会攻击我的实验报告。

image

2.4安装DVWA,并完成SQL注入、XSS、CSRF攻击。

SQL注入

image

输入正常数据,可以查询到数据条目

输入1'报错
输入1' and '1' ='1,可以看到返回数据

image

由此可以看出是字符型注入。
输入1' order by 1#查看返回数据

image

后面会被注释掉,使用这种方法注释掉末尾的单引号,避免语法错误。

输入1' order by 2#
image
输入1' order by 3#报错,说明字段只有2列.
image
输入1' union select database(),user()#进行查询

image

我们可以通过返回数据,得知当前网站使用数据库为 dvwa,当前执行查询用户名为root@localhost。

再输入1' union select version(),@@version_compile_os#进行查询:

image

我们可以通过返回数据,得知当前数据库版本为5.7.26;当前操作系统为win64。
输入1' union select user,password from users # 进行查询

image

可以看到用户名和密码,密码采用md5进行加密。
以admin账户为例,加密密码为5f4dcc3b5aa765d61d8327deb882cf99

image

使用在线工具破解后真实密码为password。

XSS攻击

1.XSS(DOM)(DOM型跨站脚本攻击)
直接在URL处增加payloaddefault=

image
注入的payload执行成功。

XSS (Reflected)(反射型跨站脚本攻击)
输入查看返回结果

image
成功弹窗,说明存在XSS漏洞。

CSRF攻击

尝试两次密码不一致,分别是20232403和20242403
image
此时页面顶部URLhttp://127.0.0.1/dvwa/vulnerabilities/csrf/?password_new=123&password_conf=1234&Change=Change#
为修改密码的链接
当我们打开另外一个新页面,在顶部URL中输入http://127.0.0.1/dvwa/vulnerabilities/csrf/?password_new=20232403&password_conf=20232403&Change=Change#,
可以看到密码成功修改了。
image

3.问题及解决方案

  • 问题1:创建表单后进行测试,前端页面出现大量乱码

image

4.学习感悟、思考等

通过这次系统的Web安全实验,我构建了一个Web应用环境,感觉很难,但也有很多收获。学习到SQL注入,XSS攻击等web攻击手段,前后端验证的对比让我感受到web安全的重要性。

posted @ 2025-12-08 22:29  20232403  阅读(23)  评论(0)    收藏  举报