去年实习中就遇到一个场景,用 xss 去打 redis,想着刷刷靶场练习一下,然后就在收藏夹吃了一年的灰了。。
即下面链接的 38 - 40 题
扫描一下目录,发现 robots.txt 里有三条信息
发现 backup.zip 有密码打不开
xssme
随便用个帐号注册登录一下,在 Mailbox 收到管理员发来的邮件
I am admin from this website, I will read all your mails but never reply.
也就是会一直读我发的邮件,但是不会回复,也就是没有回显。
直接上 payload
这里用
svg/onload 是为了绕过空格限制
可以正常通信

获取管理员 Cookie

奇怪,接收不到

但通过导航栏 Sent Mail 可以获取自己的。。。试试通过接收平台来接收
只有 dns 解析记录,没有 http 请求记录。。XSS平台Cookie字段为空。。。
奇怪了,然后试试
发现返回正常,难道,过滤了cookie关键字?或者,,Cookie里的特殊字段导致 HTTP包异常?尝试对获取到的 cookie 进行编码。
为啥用 btoa 呢,因为一开始试过了 escape 不过没用… escape 后 Cookie里也没空格的样子emmm
因为题目过滤了
) ,所以需要HTML编码一下双引号里面的。
好耶!


第一个flag
并提示了第二个 flag 在 redis 里
xssrf leak
尝试用 xssme 得到的 admin cookie ,尝试 XFF 也是如此。

这里先读一下 admin 页面
同样引号里的东西HTML编码一下给管理员发邮件

正常收到

把这一串 base64解码一下,提取关键信息,发现主要多了 Set Admin 和 Send Request 两个功能。
通过 AJAX 请求分别请求一下
setadmin.php 和 request.php 看看一样HTML编码一下双引号里面的部分,同样在导航栏
Send Mail 部分发送
base64解码提取关键部分
还有
setadmin.php 同样,结果 base64解码 提取关键部分这里试试能不能通过
setadmin.php 设置管理员,之后操作也方式一点点。得到返回信息…
那继续通过这种方式获取利用
request.php 吧,存在 SSRF读了一下 /etc/passwd
发现 www-data 解析目录为 /var/www 并且有 redis 用户
尝试了
/proc/self/environ 和 /proc/self/cmdline 都无法获取准确的 web 根目录,只能猜了,比如 /var/www/html (读取一下扫描目录发现的
config.php解码一下得到
第 2 个 flag
说好的第 2 个 flag 在 redis 里呢…
xssrf redis
上一个 flag 提示 redis 端口在
25566先试试 gopher 协议 未授权打 redis
redis环境信息被愉快的打印出来

依次获取 redis 的键和值即可
- 获取所有键
读取结果
- 判断flag键的值类型
读取结果
- 获取flag键的所有列表值
把结果复制进字符串
结果在去除最后三个字符
35* 即可虽然生产环境利用起来相对困难,不过毕竟是CTF嘛,骚思路多一个是一个 (
参考链接