type
status
date
slug
summary
tags
category
icon
password
去年实习中就遇到一个场景,用 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嘛,骚思路多一个是一个 (
参考链接