第7章 第75课
代码审计基础总结
代码审计就像给程序做「体检」——拿着放大镜看源码里的安全隐患。举个贴近的例子:你写的校园论坛系统,可能因为一行代码让黑客刷光所有积分 (:з」∠)
审计入门:白盒 vs 黑盒
- 白盒审计:直接看源码(像老师提前给你考试答案)
- 黑盒渗透:纯靠盲测(像闭卷考试)
新人建议从PHP入手,语法简单漏洞多,比如这段典型漏洞代码:
// 校园论坛积分查询功能(危险代码!)
$userid = $_GET['id']; // 直接获取用户输入
$sql = "SELECT points FROM users WHERE id=$userid"; // 拼接SQL语句
mysql_query($sql); // 执行查询
// 攻击者输入:1 OR 1=1 就能 dump 全表数据
审计核心:三大分析法
- 数据流追踪法(跟踪用户输入去向)
// 校招简历上传功能
$resume = $_FILES['file']['name']; // 用户控制点①
saveToDB(htmlspecialchars($resume)); // 转义存入数据库✌️
// 但下载时直接输出:
header("Content-Disposition: attachment; filename=$resume");
// 攻击者上传"resume.php"文件 → 触发XSS!
// 漏洞链:未追踪到输出点的二次利用
- 关键函数法(高危函数定位)
// 学生管理系统
include($_GET['page'].".php"); // 文件包含漏洞风险
eval("$points = $formula;"); // 公式计算功能 → 代码注入
$serialized = unserialize($data); // 反序列化漏洞 → RCE
- 通读全文法(适合小型项目)
从config.php开始读:
// 数据库配置泄露 → 拿全校学生数据
define('DB_PASSWORD', 'sHu_2023!'); // (╯°□°)╯︵ ┻━┻
代码审计环境搭建(PHP篇)
推荐宿舍自建靶场,30分钟搞定:
工具清单
- VS Code + PHP插件(代码着色/跳转)
// settings.json 配置
"php.validate.executablePath": "C:/phpstudy/php/php-7.4/php.exe"
- PHPstudy(一键环境)
# 验证XDebug调试(关键!)
php -v # 输出带 XDebug v3.1.1 即成功
- Seay自动化审计(解放双眼)
直接拖入论坛源码 → 自动标记eval()、system()等危险函数
环境验证
创建 test.php:
<?php
// 测试调试功能
$a = $_GET['x'] ?? 'Hello';
echo system("ping ".$a); // 故意留命令注入漏洞
按F5启动调试 → 输入参数 x=127.0.0.1 & whoami → 观察执行结果
代码审计实战项目
带大家审计校内常见系统:
1. DVWA靶场(新手村)
审计 SQL注入模块:
// dvwa/vulnerabilities/sqli/source/low.php
$id = $_GET['id']; // 无过滤!
$getid = "SELECT first_name FROM users WHERE user_id = '$id'";
// 修复方案:加上 mysqli_real_escape_string()
2. 留言板系统(ZVulDrill)
挖 XSS漏洞:
// showmessage.php
$msg = $_POST['content'];
echo "<div>".$msg."</div>"; // 直接输出 → 存储型XSS
// 攻击:提交 <script>alert(学号)</script>
3. 校园CMS(BlueCMS)
审计 后台越权:
// admin/article.php
if(!isset($_SESSION['admin'])) die("未登录"); // 看似安全
// 但同目录下 edit.php 未校验权限 → 普通用户可改通知
4. 电商系统(PHPOK)
深挖 逻辑漏洞:
// 积分兑换功能
if($user_points > 1000) {
$product->exchange(); // 扣积分
$user->add_product(); // 发货
}
// 并发请求可重复兑换(秒杀活动翻车现场)
课程总结与避坑指南
- OWASP TOP10必查项:
- SQL注入、XSS、越权访问 → 校园系统重灾区
- 文件上传漏洞 → 黑客传木马控制服务器
- 权限配置四铁律:
# Nginx配置示例(防止目录遍历)
location /uploads {
deny all; # 禁止直接访问
php_admin_flag engine off; # 禁止执行PHP
}
- 审计效率技巧:
- 先搜
$_GET、$_POST找用户输入点 - 再追
echo、include等输出点 - 重点查登录/支付等核心功能
最后忠告:
在宿舍挖靶场随便玩,但别碰真实网站!去年有同学审计选课系统被警告了 (;′⌒`)
下次见!
感谢浏览和学习,作者:鱼油YOU,转载请注明原文链接:https://www.cnblogs.com/OmegaYOU3/p/19024354,或者可以➕主播WX:OmegaAnimeman_desu;QQ:3819054512
浙公网安备 33010602011771号