CG-CTF Our 16bit Games
一.放到xp上面跑,发现是一个图形界面的飞机游戏。。。估计是分数到达多少,然后就可以输出flag。
打开ida,一脸懵逼,主要这玩意16位,我直接静态调试了
发现很多汇编代码,有点懵逼,在最下方的地方,找到了一个jmp指令,然后是INT 21H ,这句汇编搭配Ah的值,可以有不同的效果和作用,AH为2时是输出。
说明这一大堆的,就是输出flag的语句,通过flag的格式NCTF开头两个字母,可以反推回bl和bh,再通过脚本构造出flag就行了
a=[0x8E,0x9D,0x94,0x98,0xBB,0x89,0xF3,0xEF,0x83,0xEE,0xAD,0x9B,0x9F,0xEC,0x9F,0x9A,0xF0,0xEB,0x9F,0x97,0xF6,0xBC,0xF1,0xE9,0x9F,0xE7,0xA1,0xB3,0xF3,0xA3]
for i in range(256):
if chr(i^0x8E)=='N':
print(i)
for i in range(256):
if chr(i^0x9D)=='C':
print(i)
bh=192
bl=222
flag=""
for i in range(len(a)):
if i%2==0:
tmp=chr(bh^a[i])
else:
tmp=chr(bl^a[i])
flag+=tmp
print(flag)