linux下file查看是什么东西,返回ISO9660 CD-ROM,把文件后缀改成iso,010 editor加载模板看一下,结果报错了
解析到这个位置就停了
根据字段意思,发现是时间那里不对,
再看下整个文件目录格式,
这样子就算是一个文件夹应该,
然后注意到每个文件夹的时间都不一样,格式都是\xFF\xFF\xFF\xFF
加上两字节,而最后两字节的范围从0x000-0x3FF,刚好是1024个数字。
winhex打开,转成镜像格式
可以看到正好也有1024个文件夹,而每个文件夹的大小只有一个字节
那么就可以猜测,上面时间最后的两字节,对应的就是文件夹的序号,根据序号重新排列,读取内容,就可以得到flag
而内容的地址则是根据LBA得到
计算方式:LBA*2048,得到的就是文件内容的地址
exp:
with open("iso1995.iso", "rb") as f:
iso_data = f.read()
content=iso_data[0x26800:]
byte_list = [content[i*0x800:][0] for i in range(0,0x400)]
index_list=[]
while True:
index=iso_data.find(b'\xff\xff\xff\xff')
if index==-1:
break
index_list.append(iso_data[index+4:index+6].hex())
iso_data = iso_data[index+6:]
for i in index_list:
print(chr(byte_list[int(i, 16)]), end='')