极客挑战2021-misc-wp

前言

个人感觉有几题出的不是很合理,但还是有收获的

In the Air

Intro && Hint: 善于观察藏在身边的 flag, 提示:无线电会在空气中传播

没啥好说的,只有校内能做,WiFI名字就是flag

easysend

Intro && Hint: (区块链)描述:请发送0.1Rospten测试币到0x0b896c359adf4bb1c19c7dfd41dc35dc9216e470

使用metamask发送0.1测试币

复制hash值到题目连接中验证即可拿到flag

这是什么命令

Intro && Hint: 命令执行的vps ip为 110.42.233.91 执行的命令 cat flag.png | base64 | base64 | tac | nl | sort -k 2 > flag.txt ;rm -f flag.png & nohup php -S 0.0.0.0:2333 >> /dev/null 2>&1 &

分开来分析
第一部分cat flag.png | base64 | base64 | tac | nl | sort -k 2 > flag.txt
tac:文件内容倒序输出
nl:输出文件内容并加上行号
sort -k 2:将内容从a-z排序后输出
所以第一条命令的含义就是将flag.png两次base64的值倒序后按A-Z加上行号输出至flag.txt

第二部分rm -f flag.png & nohup php -S 0.0.0.0:2333 >> /dev/null 2>&1 &
rm -r:删除文件
nohup:不挂断地运行命令
php -S:启动内置的web服务器
所以第二条命令的含义是删除图片,并在后台不间断的运行web服务器,端口为2333

直接访问http://110.42.233.91:2333/flag.txt,拿到数据直接上脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
f=open('2333.txt')
d=f.readlines()
e=['']*500
import base64
for i in d:
ca=i.strip().split()
print(base64.b64decode(ca[1]))
e[int(ca[0])]=base64.b64decode(ca[1])
f=open('2333.png','wb')

f.write(base64.b64decode(''.join(e[::-1])))
f.close()
print('ok')

flag在解出来的图片上

官方wp:

1
curl http://110.42.233.91:2333/flag.txt | sort -n | tac | awk -F ' ' '{print $2}' | base64 -d | base64 -d > flag.png ; img2txt flag.png --nocolor --nohtml -- maxLen=30

easycreat

Intro && Hint: 描述:在Rospten测试链部署一个合约

单独拿出来写了一篇文章
提交hash验证即可

今天有被破防吗?

Intro && Hint: 每个人都有决定自己是谁的权力

三个一组的十六进制值,很容易想到RGB
因为一共有1166400行,是1080的平方数,得出原图片高宽为1080
脚本还原

1
2
3
4
5
6
7
from PIL import Image
a=Image.new('RGB',(1080,1080))
f=open('ans.txt')
d=f.readlines()
d=[tuple([int(i.strip().split()[0],16),int(i.strip().split()[1],16),int(i.strip().split()[2],16)]) for i in d]
a.putdata(d)
a.save('ans.png')


可以使用gaps拼图,先用画图量出小区域的高宽

gaps --image=1.png --size=40 --save

最后垂直翻转一下图片得到flag

说实话挺好玩的,不是吗?

Intro && Hint: 你要是觉得好玩,那就玩玩这个

解压后是一个带密码的docx文件
压缩包中的提示

使用john爆破密码
结果是767675,挺坑的,以为是8位数字,爆了两天没出

将docx内容复制到txt用十六进制查看,可能是snow加密

snow.exe -C ans.txt解密文本

SGA Character

Intro && Hint: 描述:神秘的语言……仿佛在Minecraft中见过

标准银河字母表

与题目图片一一对应,解出flag

圣嘉然

Intro && Hint: 描述:嘉然,带我走吧!|hints: 1. http://www.atoolbox.net/Category.php?Id=28

在十六进制下观察文件发现rar头被删了一半,补上52 61 72 21
用010打开,发现存在ntfs流隐写

导出结果文本

有很多emoji表情

1
2
我好想做嘉然👪小姐的狗啊。 可是嘉然小姐说她喜欢的是猫🐘,我👰哭了。 我知道既不是狗也不是猫的我为什么要哭的。因为我其实是一只老鼠
👣。 我从没奢望嘉然小姐能喜欢自己👴。我明白的,所有人都喜欢理解余裕上手天才打钱的萌萌的狗狗或者猫猫👚,没有人会喜欢阴湿带病的老鼠。 但我还是问了嘉然小姐:“我能不能做你的狗?” 我知道我是注定做不了狗👜的。但如果她喜欢狗,我👲就可以一直在身边看着她了,哪怕她怀里抱着的永远都是狗。 可是她说喜欢的是猫。 她现在还在看着我,还在逗我开心,是因为猫还没有出现,只有我这老鼠每天蹑手蹑脚地从洞👞里爬出来,远远地和她对视。 等她喜欢的猫👛来了的时候,我就该重新滚回我👥的洞了吧。 但我还是好喜欢她👠,她能在我还在她身边的时候多看我几眼吗👘? 嘉然小姐说接下来的每个圣诞夜都要和大家一起过👘。我不知道大家指哪些人👖。好希望这个集合能够对我做一次胞吞👥。 猫猫👰还在害怕嘉然小姐。 我会去把她爱的猫猫引来的👘。 我👤知道稍有不慎,我就会葬身猫🐘口。 那时候嘉然小姐大概会把我的身体好好地装起来扔到门外👖吧。 那我就成了一包鼠条👰,嘻嘻👜。 我希望她能把我扔得近一点🐧,因为我还是好喜欢她👩。会一直喜欢下去的。 我的灵魂透过窗户向里面看去,挂着的铃铛在轻轻鸣响,嘉然小姐慵懒地靠在沙发上,表演得非常温顺的橘猫坐在她的肩膀👬。壁炉的火光照在她的脸庞,我冻僵的心脏在风里微微发烫👘👖。 —新户眠子

将表情提取出来解密

得到s!yl}ce{gdniaa_nyam!_ye0rua_,很明显的w型栅栏

每日一溜

Intro && Hint: 描述:BV1vK4y1p7F5|hints: 1. https://blog.csdn.net/huanghelouzi/article/details/88628590

数据包分析,使用wireshark
发现POST包,传输了一张png图片
ctrl+alt+shift+t追踪tcp流
转为原始数据后另存为png

用binwalk分离出一个文件

1
2
FhMrPh94JHqS2jGQGM6QCsaDzI6ZyHqQQB==
dnd4cnN0dW9wcTM0NTY3QUJDREVGR0lISnl6MDIxUFFSU1RLTk1MT1phYmNkVVZXWFllZmdoaWprbG1uODkrLw==

将第二个base64解密后得到一个base64表,那么第一个base64就是换表加密后的值
脚本如下

1
2
3
4
5
6
7
8
9
10
11
12
import base64
import string

str1 = "FhMrPh94JHqS2jGQGM6QCsaDzI6ZyHqQQB=="

string1 = "vwxrstuopq34567ABCDEFGIHJyz021PQRSTKNMLOZabcdUVWXYefghijklmn89+/"
string2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"

print (base64.b64decode(str1.translate(str.maketrans(string1,string2))))

#str1是要解密的代码
#string1是改过之后的base64表

PANDORA PARADOXXX

Intro && Hint: 描述:为了防止它毁灭世界,我上了层层枷锁……

下载得到一张图片,发现文件中藏了压缩包,binwalk分离
第二层:标准伪加密,09改成00
第三层:纯数字爆破,得到解压密码513692
第四层:发现压缩后hint.txt的crc值与2.zip内hint.txt的crc值一样,可以得出是明文攻击

解得口令为Maimai

第五层:这一个密码属实是没想到,密码为hint中的单词challenge
第六层:解压后就是flag

easyfound

Intro && Hint: 描述:flag在哪里 0xf8e8f25359bbbdea2187c34a8614dbedec083dbb@rospten

给了合约源码

1
2
3
4
5
6
7
contract syc{
address owner=0x0b896c359adf4bb1c19c7dfd41dc35dc9216e470;
bool a=true;
bool b=false;
uint[] tuple=[0x77,0x88,0x99];
strings[] flag=[flag1,flag2];
}

这题涉及到区块链的变量存储机制,推荐一篇文章

代码中一共存储了8个变量,分别是owner,a,b,0x77,0x88,0x99,flag1,flag2
在区块链浏览器中查看插槽

https://ropsten.etherscan.io/tx/0xcf7759b8d59b9c462c5c8a69a30e9b862bee3cbac995d896d58ba8ef592bdafe#statechange

第一个插槽存储的是地址owner

第二和第三个插槽存储的是bool变量ab

第四和第五个插槽存储的是strings类型的变量flag1flag2,将两个变量连接到一起就是flag了,注意$符号是连接符

第六七八存的是tuple数组

三叶草聚会

Intro && Hint: 描述: 嘿,我们去聚会吧!拿着你的入门券! | hints: 1.注意题目名称

解压后得到一个key和hint.txt
从hint.txt中可以知道与git有关,既然知道了密钥,那么就用ssh连接
先创建一个.ssh文件夹,放入key,创建一个config文件
config文件内容如下

1
2
3
4
5
Host syc
HostName github.com
User git
Port 22
IdentityFile ~/.ssh/key

使用ssh -T syc连接,获取到用户名为SycloverParty

在github上搜索该用户名,得知有一个私有的仓库cake

git clone syc:SycloverParty/cake.git下载下来

有一个假的flag,使用git log --pretty=oneline flag查看文件修改历史

git show 7226aee143cc7cd4095337fca6f994848bd9783a查看历史记录

EzForensics

Intro && Hint: 简单取证,关键信息在压缩包里,一层一层找出来吧

简单取证题
先获取镜像信息

一: 查看默认浏览器访问过的一个 top后缀的域名 例如xxxxxx.top

先用了iehistory命令查看无果
那么查文件
找到一个chrome的记录

下载下来搜索
得到域名为3v1l.rigelx.top

二: 另一个浏览器被用来下载了一个文件 找到这个奇怪的文件名 (很怪

查看下载文件夹
得到可疑文件L0v3r.f

三: 本机的hostname,(计算机名和hostname一般是相同的,但大小写不一样

hivelist看注册表信息地址

查看system

查看CurrentControlSetvalue

查看ControlSet001value

继续看ControlSet001下的\services\tcpip\Parameters

得到主机名P0tt3r

四: 登录1里的站点,尝试从镜像中找到用户名和密码(与windows的一致)看看有什么秘密

最后使用mimikatz拿到账户和密码

登录站点后自动下载得到一个secretword.wav文件
大概听了一下,是拨号音,在线解密
得到10111011100000

转成摩斯,解密得到yyds

五:拼接后md5

SYC{md5(3v1l.rigelx.topL0v3r.fP0tt3ryyds)}
将上述字段拼接在一起后md5加密一下


极客挑战2021-misc-wp
https://www.dr0n.top/posts/5c5d1357/
作者
dr0n
发布于
2021年11月4日
更新于
2024年3月22日
许可协议