跳到主要内容

第 2 天

· 阅读需 4 分钟
hsiehbro
hsiehbro

1. Kali 和 Docker 镜像设置

添加阿里云容器镜像

alt text

alt text

添加 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 靶场的登录包

  1. 下载并解压 dvwa 到 phpstudy 下的网站根目录, 开启 Web 和 MySQL 数据库服务

phpstudy

  • 确保文件夹目录为 dvwa

dvwa dirctory img

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

setup in brower

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

create config file

创建 dvwa 数据库

  • 首先, 修改数据库 root 用户的默认密码

alt text

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

alt text

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, 验证前面步骤是否成功

alt text

配置 setup 页面

config

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

get reCAPTCHA

key pair

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

alt text

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

alt text

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

alt text

使用 burpsuite 抓包

alt text

4. 留言板

使用 AI 开发留言板使用 phpstudy 部署, 并分析代码

  1. 用 HTML 表格设计留言展示区
  2. 通过 JS 表单验证过滤<script>标签
  3. 用 PHP 连接 MySQL 存储数据
  4. 设计登录功能, 留言时展示用户名

界面展示

alt text

JS 验证

js confirm

连接数据库

alt text

5. Web 运行流程及核心组件

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