[签到] 签到

这也要写 Writeup?

关注公众号发送 SICTF{Round3,我来辣~} 即可。

真💨签到

压缩包的结尾藏了一段 Hex,找到合适的工具将其解码就能得到压缩包的密码 2024HappyNewYear

Screenshot-202402191454

解压后可以得到一个 WAV 文件和一个 JPG 文件,先看一眼 WAV 音频的频谱图:

Screenshot-202402191503

结合文件名(Lagrange is Capatlized)可以得到 givemeyourLAGRANGE,将其作为密码对 JPG 文件进行 Steghide Extract 就可以得到 Flag 了:

1
2
3
4
$ steghide extract -p givemeyourLAGRANGE -sf steg.jpg
wrote extracted data to "flag.txt".
$ cat flag.txt
SICTF{T3e_endless_Lagrange_is_really_fun!}

New Year's regret

压缩包密码差四位数字不知道,直接手搓脚本爆破就能出:2024SICTF,解压得到一个 TXT 文件和一个 PNG 文件。TXT 文件中只有字符 01,直接丢给 Cyberchef 二进制作图可以得到:

Screenshot-202402191507

网上随便找下密码表,可以从中解出字母 putitalltogether。PNG 文件的本体是一个汉信码,内容为「flag 好像不在这里 ing」,没啥用。用 Binwalk 扫一下 PNG 文件可以撕出一个压缩包(内含一个 TXT 文件)和另一个 PNG 文件(PNG 接完 ZIP 后再接了一个 PNG)。这个 TXT 文件是个 Base64 套娃,手搓下脚本解个 35 回(次数由尝试得出)就能得到一个 PNG 文件:

1
2
3
4
5
import base64
source = open('_task.png.extracted/result.txt', 'r').read()
for _ in range(35):
source = base64.b64decode(source)
print(source.hex())

发现这是个二维码,直接丢给 Cyberchef,扫描后得到部分 Flag(SICTF{Congratulation_to_you!)。另一张图片如下图所示(顺时针旋转 90°),结合 Hint「其中有一部分你知道是几星吗?」可以猜测这些都是某个游戏的武器,需要查找对应的星级。

Screenshot-202402191517

截取部分进行搜图后可以得知是游戏「战双帕弥什」,对着 WIKI 一个一个找过去可以完成(找得我眼花):

1
44664654464566654465645644544664654654644546445446646565444454544664654664544545646454544454466465465645644

三状态首先考虑 Morse,将 456 分别替换为 . - 然后进行 Morse 解码就能得到另一部分 Flag。最后拼接下 Flag 就好了(中间自行确定那个接在哪个后面,自行在单词之间加上下划线,不行就多试)。最终得到 Flag:

1
SICTF{Congratulation_to_you!_found_all_the_pieces_and_put_it_all_together}

GeekChallege

根据 Tips(len(array)=5&&len(passwd)=114)猜测:密码长度 114,每次连接随机取 5 个字符生成密码。搓脚本爆破就是了:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from string import printable
from pwn import remote, context

password = ['']*114
context(log_level="debug")
io = remote("yuanshen.life", 33505)

for c in printable:
io.recvuntil(b">")
io.sendline((c*114).encode())
result = io.recvline().strip().decode()
if '1' in result:
for i in range(114):
if result[i] == '1':
password[i] = c
if all(password):
break

io.recvuntil(b">")
io.sendline(("".join(password)).encode())
io.interactive()
io.close()

WHO?WHO?WHO

根据 Hint「压缩包密码为 6 位小写字母」进行爆破得到压缩包密码 qweqwe,解压后得到一个 TXT 文件,不难发现里面存在 Unicode 零宽字符隐写,找个合适的工具进行解码可以得到下面的内容,盲猜是 Rabbit:

1
2
3
U2FsdGVkX19uvldJ6CGUNff3B28QEdIjZqgUh98K+/0J16ELU8WVQydohw4P5+2M
jbhTLQHNOpcoOd7kSRgy8pwpovCmimdD8M0IbYUeXjNKYePL/WP4PCMaOJHAW3HR
b7IEoDDH1NYh3o5NwMmcFEqy1ujf72VgQIQkaeYFFFE=

找个工具试了一堆密码,最后用 shumu 作为 Key 进行 Rabbit 解密得到一坨 DNA。密码表网上随便找找就有,手搓个脚本吧:

1
2
3
4
5
6
7
8
9
10
11
12
13
src = "GTAGAGCTAGTCCTT{GGGTCACGGTTC_GGGTCACGGTTC_GAACGGTTC_GTAGTG_GCTTCA_GTAGACGTGGCGGTG_GTAGACTCA_TATGACCGG_GCTCGGGCT}"
mapping = { 'AAA':'a','AAC':'b','AAG':'c','AAT':'d','ACA':'e','ACC':'f', 'ACG':'g','ACT':'h','AGA':'i','AGC':'j','AGG':'k','AGT':'l','ATA':'m','ATC':'n','ATG':'o','ATT':'p','CAA':'q','CAC':'r','CAG':'s','CAT':'t','CCA':'u','CCC':'v','CCG':'w','CCT':'x','CGA':'y','CGC':'z','CGG':'A','CGT':'B','CTA':'C','CTC':'D','CTG':'E','CTT':'F','GAA':'G','GAC':'H','GAG':'I','GAT':'J','GCA':'K','GCC':'L','GCG':'M','GCT':'N','GGA':'O','GGC':'P','GGG':'Q','GGT':'R','GTA':'S','GTC':'T','GTG':'U','GTT':'V','TAA':'W','TAC':'X','TAG':'Y','TAT':'Z','TCA':'1','TCC':'2','TCG':'3','TCT':'4','TGA':'5','TGC':'6','TGG':'7','TGT':'8','TTA':'9','TTC':'0','TTG':' ','TTT':'.'}
result, i = "", 0
while i < len(src):
if src[i] not in "ATCG":
result += src[i]
i += 1
else:
result += mapping[src[i:i+3]]
i += 3
print(result)

# SICTF{Q1A0_Q1A0_GA0_SU_N1_SHUMU_SH1_ZHA_NAN}

日志分析 1

直接使用 Windows 的工具进行筛查效率貌似有点低,但是可以用它将日志导出为 TXT 或者是 CSV 文件,这样就方便多了。不难找到相关信息所在日志:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
信息	2020/07/22 10:50:57	Microsoft-Windows-Security-Auditing	4720	User Account Management
已创建用户帐户。

属性:
SAM 帐户名: attack$
显示名称: <未设置值>
用户主体名称: -
主目录: <未设置值>
主驱动器: <未设置值>
脚本路径: <未设置值>
配置文件路径: <未设置值>
用户工作站: <未设置值>
上次设置的密码:<从不>
帐户过期: <从不>
主要组 ID: 513
...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
信息	2020/07/22 10:51:15	Microsoft-Windows-Security-Auditing	4698	Other Object Access Events
已创建计划任务。

任务信息:
任务名称: \callback
任务内容:
<?xml version=""1.0"" encoding=""UTF-16""?>
<Task version=""1.2"" xmlns=""http://schemas.microsoft.com/windows/2004/02/mit/task"">
...
<Actions Context=""Author"">
<Exec>
<Command>c:\windows\system32\windows_attack.exe</Command>
</Exec>
</Actions>
...
</Task>
1
2
3
4
5
6
7
信息	2020/07/22 10:52:06	Microsoft-Windows-Security-Auditing	4769	Kerberos Service Ticket Operations
已请求 Kerberos 服务票证。

帐户信息:
帐户名: [email protected]
帐户域: ADOFLMB.COM
登录 GUID: {7539ad21-0be8-8cb6-7406-054797c14d68}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
信息	2020/07/22 10:52:19	Microsoft-Windows-Security-Auditing	4779	Other Logon/Logoff Events
已断开会话与窗口站的连接。

使用者:
帐户名: attack$
帐户域: ADOFLMB
登录 ID: 0x12A334

会话:
会话名: RDP-Tcp#0

附加信息:
客户端名: kali
客户端地址: 192.168.222.200

所以对着 Hint 组织下 Flag:

1
SICTF{192.168.222.200|attack$|Administrators|callback|c:\windows\system32\windows_attack.exe|ADOFLMB.COM\attack$}

日志分析 2

直接对着 LOG 文件手撕,不难找到:

1
2
10.11.35.95 - - [30/Sep/2019:10:27:28 +0800] GET /index.php?action=view&mod=detail&id=12 HTTP/1.1 200 1859 - sqlmap 1.2.4.18
10.11.35.95 - - [30/Sep/2019:11:08:15 +0800] POST /images/avatar/web.php HTTP/1.1 200 355 - antSword/v2.1

并且这个 IP 对疑似登录接口在短时间内有着大量请求,怀疑是在爆破密码。所以 Flag:

1
SICTF{10.11.35.95|暴力破解|sqlmap|1.2.4.18|蚁剑|2.1}