0%

高校战疫

各个学校自己的题目,感觉就跟国赛似的。。。t佬出的pw属实排面,比赛t佬差一道pwn就ak,最后NEX全国排14名。其中PWN - twochunk,Reverse - easyparser,Web - webct 是NEX出的题。

截屏2020-03-18 下午8.12.46

Reverse

cyclegraph

这题根据刚上来的提示,知道有一个图的数据结构,然后我数据结构学的不好也不知道有什么用。

看伪代码,关键函数并进行分析,这里分析的时候不能光看伪代码,需要和汇编代码相结合,不然可能看不出来。。。

有一点就是 v6 = 5,也就是说明了我们输入的flag是从 flag{ 后的字符串开始读取的

截屏2020-03-18 下午8.09.55

分析到这里就已经是一目了然了,将我们输入的flag和寄存器中的值分别进行对比,所以说动态调试把数据一个个调出来就行

截屏2020-03-18 下午7.53.50
1
2
cmp		eax, [ebp+var_24]
cmp esi, [ebp+var_24]

这里就可以看到是eax和esi两个寄存器里的值进行比较,一步一步动态调试,然后将寄存器里的值读出来就行了

最后的flag是 flag{d8b0bc97a6c0ba27}

截屏2020-03-18 下午8.18.31

天津垓

打开提示找不到cygwin1.dll,以为我的虚拟机又脑子坏了,后来发现cygwin是一个Windows下的命令行执行工具,下载之后程序拖进行就正常运行了。

上来提示要输入Authorize,先去IDA里看代码吧。。

截屏2020-03-18 下午8.41.56

这里只能写脚本爆破

1
2
3
4
5
6
7
a = [17, 8, 6, 10, 15, 20, 42, 59, 47, 3, 47, 4, 16, 72, 62, 0, 7, 16]
char = 'Rising_Hopper!'
for i in range(0,18):
for j in range(0x19,0xff):
if(a[i] == ~(j & ord(char[i % 14])) & (j | ord(char[i % 14]))):
print(chr(j), end='')
#Caucasus@s_ability

然后发现提示要输入flag,没看到有什么运算

函数不多,可以挨个看看,发现sub_100401A6C对刚刚得出的字符串进行了调用,进去发现是将指令集转换为了一大串数据,在IDA Python里进行patch,脚本如下

截屏2020-03-19 上午12.08.35
1
2
3
4
a = [67, 97, 117, 99, 97, 115, 117, 115, 64, 115, 95, 97, 98, 105, 108, 105, 116, 121]
start = 0x10040164D
for i in range(1045):
patch_byte(start+i,Byte(start+i) ^ a[i%18])

然后对那一长串数,先按C转换为指令,再按P转换为函数,这样就可以看伪代码了

截屏2020-03-19 上午12.06.05

这就是把函数中那0x33个数,分别去除0x4CE3取整,就可以得到最后的flag

1
2
3
4
a=[2007666, 2125764, 1909251, 2027349, 2421009, 1653372, 2047032, 2184813, 2302911, 2263545, 1909251, 2165130, 1968300, 2243862, 2066715, 2322594, 1987983, 2243862, 1869885, 2066715, 2263545, 1869885, 964467, 944784, 944784, 944784, 728271, 1869885, 2263545, 2283228, 2243862, 2184813, 2165130, 2027349, 1987983, 2243862, 1869885, 2283228, 2047032, 1909251, 2165130, 1869885, 2401326, 1987983, 2243862, 2184813, 885735, 2184813, 2165130, 1987983, 2460375]
for i in range(len(a)):
b = a[i] // 0x4CE3
print(chr(b), end='')

最后的flag是 flag{Thousandriver_is_1000%_stronger_than,zero-one}

Misc

隐藏的信息

有一个残缺的二维码和WAV文件,以为是隐写,听一下发现最后有按电话号码的声音,auditory打开看频谱图,发现开头也有差不多的声音,和网上找的去对比,电话号码187485618521,然后base64就行了

二维码补全扫不出来,后来队友告诉我要反色,没管这么多,string看二维码里面也可以看到是usebas64

武汉加油

图片,但是感觉大小不对,解压出来有个flag.exe,有个vmp的壳,一运行就有gmon.out这个文件

对vmp壳不了解,以为没发解,后来才知道看0x401XXX的地址,可以猜测vmp没有开虚拟化

x64dbg+sharpOD插件动态调试,修改标志位ZF置为0

自己就打印出了flag : {zhong_guo_jia_you}