第 2 天
· 阅读需 4 分钟
1. Kali 和 Docker 镜像设置
添加阿里云容器镜像


添加 Kali 软件源
cp /etc/apt/sources.list /etc/apt/sources.list.bak
cat > /etc/apt/sources.list <<EOF
deb https://mirrors.aliyun.com/kali kali-rolling main non-free contrib
deb-src https://mirrors.aliyun.com/kali kali-rolling main non-free contrib
EOF
2. Web 开发基础
- Cookie: 前端保存, 记录用户偏好信息
- Session: 前端只获取SessionID, 后端保存用来验证用户身份
3. burpsuite 抓包分析
使用 burpsuite 抓包并分析 dvwa 靶场的登录包
- 下载并解压 dvwa 到 phpstudy 下的网站根目录, 开启 Web 和 MySQL 数据库服务

- 确保文件夹目录为 dvwa

- 本地浏览器登录
http://127.0.0.1/dvwa/setup.php

- 报错提示配置文件缺失, 按照提示复制模板文件
config.inc.php.dist并重命名为config.inc.php, 然后刷新浏览器 setup 页面

创建 dvwa 数据库
- 首先, 修改数据库 root 用户的默认密码

- 本地终端使用 root 用户登录到MySQL, 创建 dvwa 数据库并授权

mysql> create database dvwa;
Query OK, 1 row affected (0.00 sec)
mysql> create user dvwa@localhost identified by 'p@ssw0rd';
Query OK, 0 rows affected (0.01 sec)
mysql> grant all on dvwa.* to dvwa@localhost;
Query OK, 0 rows affected (0.01 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
- 使用 dvwa 用户登录 MySQL, 验证前面步骤是否成功

配置 setup 页面

- 申请 reCAPTCHA 密钥对, 添加到
config.inc.php


- 修改
php.ini, 允许远程访问 (即请求http)

- 报错
IF NOT EXISTS ...相关错误, 是因为 MySQL 数据库不支持该语法, 删掉 SQL 语句中的IF NOT EXISTS即可

- API 配置, 需添加 php8.2.9 到 Path 变量, 按照 composer,
dvwa/vulnerabilities/api下执行composer install

使用 burpsuite 抓包

4. 留言板
使用 AI 开发留言板使用 phpstudy 部署, 并分析代码
- 用 HTML 表格设计留言展示区
- 通过 JS 表单验证过滤<script>标签
- 用 PHP 连接 MySQL 存储数据
- 设计登录功能, 留言时展示用户名
界面展示

JS 验证

连接数据库

5. Web 运行流程及核心组件
- 客户端发起 DNS 请求解析到服务端 IP 地址;
- 向服务端发起 TCP 三次握手, 客户端第一个请求包 SYN 置位,服务器响应包 SYN + ACK 置位, 客户端再次发送对响应包的确认 ( ACK 置位) 并携带 HTTP 请求报文;
- HTTP请求报文头携带请求类型GET/POST、HTTP版本、MIME类型、User-Agent用户代理、Cookie等; 请求类型为 POST 时,报文体携带数据;
- 服务端将静态资源直接返回给客户端, 动态资源查询数据库处理后返回, 浏览器对响应报文解析渲染; HTML 为网页内容, CSS 为内容样式, JavaScript 代码处理用户交互;
- 最终 TCP 四次挥手关闭连接;