linux下file查看是什么东西,返回ISO9660 CD-ROM,把文件后缀改成iso,010 editor加载模板看一下,结果报错了
image.png
解析到这个位置就停了
根据字段意思,发现是时间那里不对,
image.png
再看下整个文件目录格式,
image.png
这样子就算是一个文件夹应该,
然后注意到每个文件夹的时间都不一样,格式都是\xFF\xFF\xFF\xFF加上两字节,而最后两字节的范围从0x000-0x3FF,刚好是1024个数字。
winhex打开,转成镜像格式
image.png
可以看到正好也有1024个文件夹,而每个文件夹的大小只有一个字节
那么就可以猜测,上面时间最后的两字节,对应的就是文件夹的序号,根据序号重新排列,读取内容,就可以得到flag
而内容的地址则是根据LBA得到
image.png
计算方式:LBA*2048,得到的就是文件内容的地址
exp:

  1. with open("iso1995.iso", "rb") as f:
  2. iso_data = f.read()
  3. content=iso_data[0x26800:]
  4. byte_list = [content[i*0x800:][0] for i in range(0,0x400)]
  5. index_list=[]
  6. while True:
  7. index=iso_data.find(b'\xff\xff\xff\xff')
  8. if index==-1:
  9. break
  10. index_list.append(iso_data[index+4:index+6].hex())
  11. iso_data = iso_data[index+6:]
  12. for i in index_list:
  13. print(chr(byte_list[int(i, 16)]), end='')

最后找到flag
image.png

参考

https://blog.csdn.net/GoodQt/article/details/17202109