题目现在已经看不到了,大概意思是附件,是一个磁盘映像文件,里面有flag。

用虚拟机加载软盘跑下,提示输入access code,如下:


上IDA,将加载地址设置为0x7C00,用16位分析。

一,Boot程序

Boot 程序逻辑很清晰。

1.显示提示语句Loading
2.加载内核,从0面0磁道2扇区开始读10个扇区的内容到0x8000(0x800:0000)
(PS:原代码是从磁盘读的,这里是用软盘启动的该镜像的,请修改成读软盘的。在这里吃了亏,T^T)
3.提示输入Access code,解密内核代码
4.转到0:8000h运行内核

看init过程是怎么解密的,从而得到Access code。


只能输入4个数字,并用这4个数字循环对0×8000-0x87ff  异或解密,用程序进行猜想。

fin = open('bctfos.bin', 'rb')
fin.seek(512)
content = fin.read(16)
fin.close()
 
base = range(48, 58)
for ch in content:
    print [hex(ord(ch)^x) for x in base]

输出内核的头16个byte的内容 xor [0, 9] 的结果,进行分析猜想。

我们看到当access code为1337时,跟boot的开头一样有点像,输入后,果然可以进入。

源链接

Hacking more

...