0%

新生赛CTF

GHCTFWP

[TOC]

两道Reserve方向的题目

.?.s.?

解压文件发现是.s后缀的文件,说明该文件还在编译阶段,可以通过gcc转为.exe文件。

image-20240312144334598

用VSC打开发现有关于gcc的版本要求

image-20240312144551203

在文件所在的文件夹打开终端,输入以下指令:

gcc -c test1.s -o test1.o

gcc test1.o -o test1

image-20240312144714743

将.exe文件拖入DIE查看没有壳

image-20240312144752826

放入32位的IDA查找main函数

image-20240312144830036

注意到特殊的函数aaaa(),点进去查看发现与flag相关的程序

image-20240312145020751

分析程序,发现只要把v1的所有字符跟v3一一异或就可以得到v2,就能得到flag

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
enc = [ 0x2A, 0x37, 0x37,
0x27, 0x30,
0x22, 0x1F, 0x0C,
0x01, 0x55,
0x55, 0x54, 0x3B,
0x27, 0x30,
0x22, 0x3B, 0x10,
0x0C, 0x55,
0x17, 0x3B, 0x55,
0x17, 0x3B,
0x01, 0x1E, 0x17,
0x10, 0x19]
flag = ''
for i in range(len(enc)):
flag += chr(enc[i] ^ 100)
print(flag)

CS1.6

根据hint发现是C#文件,用ILSPY打开

image-20240312145341934

找到这几个文件,先看main文件

image-20240312150232046

分析得这是进行了三次的加密,将text的字符串先Enc2解密,然后Enc1解密两次,分别分析剩下两个文件

image-20240312152336552

image-20240312152340626

不难看出分别是base64加密和base58加密,在CTF在线工具-CTF工具|CTF编码|CTF密码学|CTF加解密|程序员工具|在线编解码 (hiencode.com)网站即可找到相关的解密方式,发现只需要将得到的结果反过来看即可得到flag