前言
本文记录一道攻防世界上的某CTF比赛真题,这是一道非常规题目,无法直接运行,IDA等工具也不能使用
体现了逆向领域的那句话:"三分逆向七分猜"
题目描述

题目附件中只有一个未知文件类型的文件,如下图

Writeup
按照逆向题目的一般套路,刚开始应该先判断文件类型,放到Linux下用file命令查看

这种情况还真是第一次见,说这个文件是一个ASCII编码的文本文件,这样的话类似于gdb,IDA等的逆向工具都无法使用了
没办法,打开这个文本文件看一眼

看着像是某段程序的内存分布,最左一列是地址,右边是16进制表示的代码或数据
再细看这个文本内容,发现48 8F出现了多次,且后面的内容大多一致,那就只能猜flag是与这个规律有关
把每一组以48 8F开头的16进制数据提取出来,如下图

可以发现,每一组数据的前三行是完全一样的,而第四行0F 05 68之后的值有所不同,猜测flag跟这个不同的值有关
又观察发现了两个至关重要的16进制值:7B(第二组)和7D(最后一组)
没错,把这个16进制值看成ASCII码的话,这两个就是flag中的 { 和 }
到这里就大胆猜测,flag的值就是夹在7B和7D中间的不同值,为70 6F 70 70 6F 70 72 65 74,转换成字符串就是 poppopret
提交flag,答案正确