2021 极客大挑战新生赛部分misc...

【misc】2021 极客大挑战(部分)

1、今天有被破防吗?

0x1

image-20211027202112270

最早上的一批题目,当时没什么思路。后来pwn神在群里提到了RGB,瞬间懂了!

参考链接:

gaps拼图

0x2

下载附件得到一个很长的txt文本,其中每一行都是三个数字。如果知道是RGB就好处理了。

image-20211027202318485

0x3

注意到一共1166400行,那么就是1080*1080的规格

image-20211027202406698

简单的python脚本处理一下图片

from PIL import Image

res = []
with open("./ans.txt","r") as f :
    res = f.readlines()

for i in range(len(res)):
    res[i] = res[i].strip("\n")
print(len(res))
x = 1080
y = 1080

im = Image.new("RGB",(y,x))
leng = len(res)
count = 0
for i in range(x):
    for j in range(y):
        print(f"time --> {count}")
        rgb = res[count].split(' ')
        im.putpixel((i,j),(int(rgb[0],16),int(rgb[1],16),int(rgb[2],16)))
        count+=1

# im.show()
im.save("./flag.png")

得到一个被打乱的图片

image-20211027202531299

可以看到有flag的块,这里队友用python分割了每一块图片,一共729块,那么每一块就是256*256

image-20211027202623522

image-20211027202630243

之后先用这些拼图碎片拼一张图片

montage *jpg -tile 27x27 -geometry 256x256+0+0 flag.jpg

得到一张分辨率更高的图片

image-20211027203050775

对这张jpg图片进行gaps修复

image-20211027203153614

得到flag

0x4

这里算是后话,其实这一题是队友用ppt将带有文字的图片拼起来的,我只是复盘了gaps的方法。

至于为什么我要用gaps来复线呢?因为大家的gaps都出不来,我要证明gaps的含金量!(bushi

后来发现队友gaps出不来是因为,我用的是分割的碎片出来的jpg之后用montage拼接得到的,像素很高,gaps更好识别。

这个是拼的:

image-20211027203515512

这个是python脚本出来的:

image-20211027203526971

这么看起来还是ppt大法好!

2、这是什么命令

0x1

image-20211027201305660

简单的bash命令的逆向(可以这么说吧?)

image-20211027201254156

首先cat一张图片,进行两次base64加密,然后tac反向,然后nl标号,然后对2号位sort排序,然后将这段内容写入flag.txt中

之后删除flag.png,并且将这个web文件夹用php挂在2333端口

0x2

curl下载一下flag.txt

image-20211027201706934

0x3

注意到base64加密两次之后用了nl标号,那么我们按照标号逆向排序就是cat之后base64两次的结果,之后base64_decode两次即可。

简单的python3逆向处理一下

import base64

lines = []
with open ("./flag.txt","r") as f:
    lines = f.readlines()

for line in lines:
    line = line.replace("\n","")

lines.sort(reverse=True)
img_base64 = ""
for line in lines:
    line = line.replace("\n","")
    line = line.split("\t")[1]
    img_base64 += line

img_base64 = base64.b64decode(img_base64)
# print(img_base64)
img_base64 = base64.b64decode(img_base64)

with open("./flag.png","wb") as f:
    f.write(img_base64)

得到flag.png

image-20211027201821487

注意Every0ne不是One,当时被这个卡住了就离谱。

3、SGA Character

0x1

image-20211027204540862

image-20211027204557269

文件是一张图片

image-20211027204838492

0x2

谷歌搜索关键词:SGA minecraft wiki

image-20211027204736955

发现这个语言是伏魔台出现的

image-20211027204804860

直接开始翻译

0x3

翻译了大概20个词,发现是一句话,直接谷歌,搜到了这个wiki

image-20211027205006457

image-20211027205014751

发现这个和解密后的单词一样,于是直接从后面开始解密了

flag是amazeing game的样式,这里我也忘了。

打上SYC{}上交就过了。

4、每日一溜

0x1

image-20211027205852099

image-20211027205901670

基础的流量包misc了

0x2

wireshark打开流量包,在tcp流中看到类似png的东西

image-20211027205954827

直接导出

image-20211027210040885

binwakl发现有zip包,导出

image-20211027210113350

0x3

zip中一个1.txt,打开发现一个长的像base的东西

image-20211027210157702

有两行,第一行base64解开乱码,第二行解码得到,一个自己写的base64表,直接用这个表解开上面那段

image-20211027210259200

image-20211027210423003

get flag

image-20211027210437151

5、三叶草聚会

0x1

image-20211027194820773

比较有意思的题目了,用过ssh配置git的应该懂一点。我在做题的时候也是在谷歌东拼西凑出来的。

可以先看看这几篇博文,有助于我们下面的解题:

Git 远程仓库/ssh

ssh私钥泄露

OPENSSH PRIVATE KEY转换为RSA PRIVATE KEY

0x2

到这里正式开始,首先给我们的文件中有两个文件,第一个key,第二个hint。

hint告诉我们和git有关,key如下:

-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAABlwAAAAdzc2gtcn
NhAAAAAwEAAQAAAYEAx+nQ8WvPBl47fd98FS4X2G7CYorXjxpZ5zllSMGNfGFGUyRA6H7s
t7sgCD2XSix8Yi8hPjnUZOCHVRKKzX+CNc53PmWS96HUfuGXa9qfHKjfNRo51BNZuuaxE0
0zxrX6VCFnHomeVfI+mzQ817XQFdx1ZrCX8Tsfns0sI1SSf/SS9p75e3rXYwcRxAemaLGJ
whrX+Plqpqzbqnp5A1bOKaDoRRdZaOgpj9BFSVS41rUZDgGMcun9Wvm35Ke92YJ9Iq4xrU
9Cu33y7y+A/NuhswVBHC8JsXrDdfmfWAS8CfLwA578BswtuXF9ovfV7FeG87qLoUBEQgX6
sR/hXuLwiZotuTIbYbcw1O6hx3bIzKLGs3SHRUl6YuEJJVCz/Lr4hs8/nXdKh6M4rXtKxy
ijIZjbEYW3CzJM2fjZGc6AK4SLDp92snrmKazHOEXWv210T4wwI2l2Yv6f0wCNzQY8v/kC
HZ33bNxpsWyrrkdwPg8CUb21iVf5/c0/4GeCOUKzAAAFiBZKowEWSqMBAAAAB3NzaC1yc2
EAAAGBAMfp0PFrzwZeO33ffBUuF9huwmKK148aWec5ZUjBjXxhRlMkQOh+7Le7IAg9l0os
fGIvIT451GTgh1USis1/gjXOdz5lkveh1H7hl2vanxyo3zUaOdQTWbrmsRNNM8a1+lQhZx
6JnlXyPps0PNe10BXcdWawl/E7H57NLCNUkn/0kvae+Xt612MHEcQHpmixicIa1/j5aqas
26p6eQNWzimg6EUXWWjoKY/QRUlUuNa1GQ4BjHLp/Vr5t+SnvdmCfSKuMa1PQrt98u8vgP
zbobMFQRwvCbF6w3X5n1gEvAny8AOe/AbMLblxfaL31exXhvO6i6FAREIF+rEf4V7i8Ima
LbkyG2G3MNTuocd2yMyixrN0h0VJemLhCSVQs/y6+IbPP513SoejOK17SscooyGY2xGFtw
syTNn42RnOgCuEiw6fdrJ65imsxzhF1r9tdE+MMCNpdmL+n9MAjc0GPL/5Ah2d92zcabFs
q65HcD4PAlG9tYlX+f3NP+BngjlCswAAAAMBAAEAAAGBAKoKd27iBHWmMXQfY6ugSSgPDc
hD0JYoE9BZQY1hFLd3Bhox/APF8hNVVymrOcQdkq7w55XGGqKzWGlEHEwu6NJbi5HHU/rN
67EAsYtLqYr3GORSKl35F5miH3wLbr7WitaEkvGmnMb+BcJ97EKOoy/1FOcDzjmh0IOCgM
iMZw/vOBINpqchFZNlr/bNiv4CBOrVal6bx9t9rFqVUdlFPJasBuS9t49D6hYpUMXPCmmW
IHmJV61m2dlIDuKuywz3r3ZNTvgRmpbreCuvqC7mTLLV+md1kBdzsvHaiJbsNGsWepAl0o
Rc90tpXx2VZwbmQAxTQxAJVoF9aY6tUa3Fo2TND+s6UAoBz6HVjcIAupxvDGNc/qZCFgy+
xMgYWrnXFKVXFYX0z7m7ke+yRaBePnyh/gHtMQDpULx0yC/xm20pQBjII/bUgdICiDs66m
0pIm7Ducmceeja8ngjyRm/Z/2Tl7cpBFbZwQy+HKcCvmPI5r8VGbTw915gSZ6KM9/AAQAA
AMEA1h8YzxhvsiM/h2o98Vjn32KT3YeMEmkli92SFzqxWAi/IF0nUuAzY/BbIfBM/XS7mC
gIyP55fqugt7avw6g5vwtBf1msUkcbU3YNGYiHEmD+y2OIxHs+QFvjAZlKa0/KYeWWb+Fy
s8OztW8wS/pm/M6HL53gbh84gCxpyFmK2AyG+Ul2RralVjbildBPUMbzPSZ7SNwLATCuo5
jkyGYyIX/shenkca4ZDvpPIA5swzTnK2ysY/htrnfRdvuIyNuIAAAAwQD2dnRQVAJavBGO
esRexNmqvBNeZ33PmbY1Ty4UiTgMwrJuaGIISnzzZMS41d15cNllPxHyMWdEggcY3Qz3if
1dxx8DfNz9kmoVPYVxyd77MjroGSnw44kLaWYkzUuggEnpqOQDOD+xwv2TiFkxs9G9z/ju
as6ttZHJJTxcG8oYZNm7hvc7Q8RvpBbddMFR/qoJbpPxsrTjlB3Noh4yhtJbGc3jQX4zCh
9woINqV+SW/e2VnKRQgbVgtcOQGuLBVzMAAADBAM+mOkCds2gT0DlusZozmvKrufNYfD69
JXmfl9VQ2IeSh3jZRXJijjM8b2dkqwTqd4mw5a61CsqToBE/vfEWJv/O/pRy1zUJB9WQj7
wvbVuuqyihv3t8TBfi1dFaZL/ufdck6W4cjgBxE8/c8vfAzNuNiYD1o/cVfEnSHxIUiGBm
5/vD3YXyGHA9xFnrqDNxEeEgqC73ZqdK7vnN0vVHRRSnQysTA/RRvUqAIxksghIEsC3ks2
rA5xQEyQfnubpmgQAAABFzeWNsb3ZlckB5ZWFoLm5ldA==
-----END OPENSSH PRIVATE KEY-----

很明显的一个rsa的私钥,但是由于openssh的更新,先在的私钥的格式都是-----BEGIN OPENSSH PRIVATE KEY-----,而我们熟悉的是-----BEGIN RSA PRIVATE KEY-----

在网上查阅资料,找到上面给出的ssh私钥泄露的博文,通过puttygen来转换得到老版本的rsa private key

但是这篇文章中使用的指令会让openssh变为ssh2 encrypted private key,不是我们想要的,故继续查阅资料:OPENSSH PRIVATE KEY转换为RSA PRIVATE KEY

使用如下指令:

bi0x@pwnable:~/ctfworks/misc/2021geek/party$ puttygen key -o key.ppk
bi0x@pwnable:~/ctfworks/misc/2021geek/party$ puttygen key.ppk -O private-openssh -o key.pem

image-20211027195921633

我们可以发现已经转为rsa格式了,那么有什么用呢?

想到之前提到了git,这里又有ssh私钥,那么查阅资料Git 远程仓库/ssh,发现可以测试登陆。

先在本地添加这个ssh私钥(我这里已经添加了一遍,所以有重复的提示),然后测试github连接

bi0x@pwnable:~/ctfworks/misc/2021geek/party$ ssh-add key.pem
bi0x@pwnable:~/ctfworks/misc/2021geek/party$ ssh -T git@github.com -i key.pem

image-20211027200335698

image-20211027200220572

连接成功!告诉我们ID信息SycloverParty

0x3

到这里访问github,搜索这个SycloverParty用户,发现一个仓库,告诉我们flag可能藏在cake中

image-20211027200518430

我们使用git clone,并且使用ssh连接。

由于我们拥有私钥,所以有clone权限

image-20211027200708672

进入文件夹中有一个fake_flag

image-20211027200737290

那么想到git的更新,使用指令git show显示历史

image-20211027200820749

得到true_flag

SYC{H@v3_Fun_F0R_Th15_6AM3cd party!}

6、EzForensics

0x1

image-20211108220547006

image-20211108220610630

0x2

内存取证题目,说实话第一次正式的写。

分析题目,下载附件,发现有个flag.txt

image-20211108220755173

告诉我们flag由这些组成,一步一步来!

0x3

首先是top域名网站,这个我第一次做的时候是先用volatility提取了chrome的dump文件然后strings grep得到的,现在复现的时候发现其实可以这样:

image-20211108221001877

那么得到这个网站就是

3v1l.rigelx.top

0x4

下一步找下载文件

使用chromehistory插件没有发现任何东西

那么查看iehistory,发现有一个L0v3r.f文件

image-20211108221233559

那么这个文件就是我们需要的

0x4

查看本机的hostname

说实话这里刚开始做以为对了,在最后发现其实有问题,就是计算机名其实和hostname有大小写的区别

这里使用systeminfo插件来看,发现hostname其实是计算机名最后一位小写(之前一直以为是p0tt3r)

image-20211108221510407

那么这里的hostname就是P0tt3r

0x5

到这就算卡了2天的地方了

我们都知道volatility有个hashdump的用法,可以看到用户的密码(NTML加密)

image-20211108221703009

这里给出了

R1gelXxXxXx:1002:aad3b435b51404eeaad3b435b51404ee:5a98486ac9f4651e40537abc7baf8a2b:::

于是我和队友使用1个多G的彩虹表爆破,结果就是ji了

后面发现有个插件mimikatz,可以直接导出用户名和密码

image-20211109163724208

那么密码就是wuhuqifei@

0x6

得到密码和用户名之后,我们去访问这个top网站

image-20211109163834913

输入用户名和密码之后得到一个wav文件。

image-20211109163906615

听一遍感觉像拨号音,用dtmf2num工具得到

image-20211109164054534

10111011100000看着也不像二进制转asicc,尝试莫斯电码

image-20211109164138561

0x7

最后将得到的信息用md5加密

image-20211109164210368

get flag

SYC{33354bfac7e3de28de8b6598489cc7a8}