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)

在这里插入图片描述

发布了161 篇原创文章 · 获赞 14 · 访问量 7616

猜你喜欢

转载自blog.csdn.net/YenKoc/article/details/105429806