0%

11月月赛记录

1. RE

1.1 卧龙和凤雏

给了一个2.rar,里面有一个需要解密的enc文件,一个объект430程序和一张图片。

分析объект430,逆向写出脚本获得解密需要的Key。

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/env python3

data = [0x163F5,0x6B2C0,0x11A9F9,0x157000,0x1CB91,0x1BB528,0x1BB528,0xDED21,0x144F38,0xFB89D,0x169B48,0xD151F,0x8B98B,0x17D140,0xDED21,0x1338C0,
0x1338C0,0x11A9F9,0x1B000,0x144F38,0x13693]

flag = ''
for i in range(len(data)):
tmp = pow(data[i],1/3)
print(tmp)
ch = int(tmp) + 1
flag += chr(ch)
print(flag)
# -Lip1zzaner_Stalli0n+

然后使用openssl解密:

openssl enc -d -aes256 -salt -in encry.rar.enc -out decry.rar -k -Lip1zzaner_Stalli0n+

打开解密后的压缩包,得到flag和下一道题的题目。

image-20201121112301402

参考链接:

1.2 卧龙和凤雏得其一者可安天下

一个简单的crackme,写个脚本就可以:

直接写逆算法比较麻烦,就直接在0,0xff中爆破去找吧。

1
2
3
4
5
6
7
8
9
10
encrypted = bytearray.fromhex('CA7093C80654D2D5DA6AD159DE45F9B5A68719A5566E63')
lst = []
for i in range(23):
for x in range(0,0xff):
n1 = (x ^ i) << ((i ^ 9) & 3)
n2 = (x ^ i) >> (8 - ((i ^ 9) & 3))
if (((n1 | n2) + 8)%256) == encrypted[i]:
lst.append(chr(x))
break
print(''.join(lst))

参考链接:

1.3 re-Project1.exe

base64魔改的一个算法,到这个网站去可以修改base64 table进行解码:魔改的表是+\-0-9A-Za-z

image-20201121154100603

关键的几个点,程序将你输入的flag进行两次魔改的base64,但实际上比较的时候就只比较了第一次的结果。通过分析和OllyDbg调试,整理出下面的可能情况:

IDA中发现两个用于比较的编码后的字符串:EoJ2AY6kEIJ1B2InF1N2A26tFY2, FawqPI3iAaosB3NYI473N+

分别解码后得到:

EoJ2AY6kEIJ1B2InF1N2A26tFY2–>CED2B0AEC4E3D6D0B9FA–>9.Ä4#.8d.<.Â4´L

FawqPI3iAaosB3NYI473N+–>Fo6mAn2m84VdPbEd–>GB2312(hint)

由于比较的都是第一次编码后的结果,所以我们如果输入CED2B0AEC4E3D6D0B9FAFo6mAn2m84VdPbEd,就都会比较成功。根据给出的提示内容:

image-20201121155046612

可以知道应该就是将CED2B0AEC4E3D6D0B9FA通过GB2312解码吧,但是好难找在线的解码工具,于是直接Google这串字符,原来就是“我爱你中国”啊!

image-20201121155332297

其实Python可以解码的,只是自己太菜了。

image-20201121161053191