基础系列写过 XSS、文件上传、CSRF 与越权,这篇把它们串成一条链。
0x01 XSS 三类:一个数据流视角
- 反射型:脚本在 URL 参数 → 服务器原样拼回 → 浏览器执行;
- 存储型:脚本入库 → 访问者都从库里加载到它 → 危害最大;
- DOM 型:前端 JS 把可控数据写进 DOM(
innerHTML一类)→ 服务器无感。
本质是后端没过滤 + 输入被当代码执行(XSS-Labs 第一关 $_GET['name'] 直接 echo 进 <p>)。
对抗:htmlentities 的边界
htmlentities() 转 < > & " 为实体、<script> 变文本,但不万能:
- 标签内属性(
<input value="$input">)挡不住逃逸属性再闭合; - JS 上下文(
var x = "$input")里完全不设防; - 防御要按输出上下文选编码函数,
htmlentities走天下是误区。
0x02 文件上传与文件包含:一体的两条腿
图片马必须配合文件包含才能打:
- 图片马:
copy /b normal.jpg + shell.php muma.jpg——PHP 代码藏进图片尾部; - 上传突破:后缀白名单绕过、
%00截断、二次渲染对抗; - 图片不被执行,得有文件包含漏洞(
include($_GET['f'])一类)把它当 PHP 处理。
包含漏洞在时,换个渠道传上去就能打——上传是腿,包含是肌肉。
一句话木马 <?php @eval($_POST['cmd']);?> 把参数当代码执行,配蚁刀/中国菜刀类客户端管理;免杀技术(WebShell 免杀篇)都在对抗它。
0x03 CSRF 与越权:信任与授权的两面
CSRF:诱导已登录用户向目标站点发伪造请求(自动带 Cookie)——攻击的是服务器对浏览器的信任,防御靠 token(随机、必须携带、跨域拿不到)。
越权:攻击的是服务器对身份的授权判断——水平越权=同级用户改 ID 看别人订单(Pikachu 改 user_id 实锤),垂直越权=普通用户直接请求后台 URL。
越权是产出最高的洞之一,测法=双账号对比参数。
0x04 扫描器的定位:AWVS / Xray
AWVS 流程:新建任务 → 输入目标 → 配置策略 → 出报告,另推荐长亭 Xray。扫描器只是发现面工具,结果要人工验证;综合实战把它与手工测试串成链路。