Flag Writeups
第一步审题
Flag题目的如图所示:

flg_题目.png
从题目的描述来看,这是一个reverse题。下载flag文件,在ubuntu终端下用file命令进行分析,如下所示:

file_flag.png
从上面的图中可以看出,可执行文件是一个ELF64文件。将可执行文件拖入IDA Pro进行分析,分析如下图所示:

ida_flag1.jpg
上面图片中函数少的可怜,通常来说这种程序是被压缩过的。接下来可以寻找相关压缩方法的信息。在Hex View中看到如下的字符串:

ida_flag2.jpg
上图中划线的部分,显示了该执行文件使用了UPX(the Ultimate Packer for eXecutables)进行了压缩,在Linux终端下输入upx -d flag,输出如下信息:

upx_flag.png
将解压缩后的可执行文件拖入IDA中再次进行分析,如下图所示:

ida_flag3.jpg
在汇编指令中_strcpy()函数将flag复制到内存中的一块区域,cs:flag处的数据就是我们需要的Flag,点击cs:flag会跳转到flag的定义处,如下图所示:

flag_address.png
从图片的汇编指令中可以看出,这里去了flag处的地址,再次点击aupxSoundsLikeA,如下图所示:

flag_str.png
从图中看出Flag为:UPX...? sounds like a delivery service :)