题目描述
菜鸡拿到了一个被加壳的二进制文件
Solution
使用 Kali 的file命令检测文件类型,这是一个 ELF64 文件。我们用strings命令查看可打印字符:
┌──(cheery㉿Laptop)-[~/Desktop/reverse]└─$ strings 002 | rg -i "flag"flag{Upx_1s_n0t_a_d3liv3r_c0mp4n
但是提交的时候显示 Flag 不正确。题目描述中说这是一个被加壳的二进制程序,我们使用binwalk工具查看:
┌──(cheery㉿Laptop)-[~/Desktop/reverse]└─$ binwalk 002DECIMAL HEXADECIMAL DESCRIPTION--------------------------------------------------------------------------------0 0x0 ELF, 64-bit LSB executable, AMD x86-64, version 1 (GNU/Linux)216 0xD8 ELF, 64-bit LSB processor-specific, (GNU/Linux)324123 0x4F21B Copyright string: "Copyright (C) 1996-2013 the UPX Team. All Rights Reserved. $"
可以看到是被 UPX 压缩了。我们将其解压:
┌──(cheery㉿Laptop)-[~/Desktop/reverse]└─$ upx -d 002Ultimate Packer for eXecutablesCopyright (C) 1996 - 2020UPX 3.96 Markus Oberhumer, Laszlo Molnar & John Reiser Jan 23rd 2020File size Ratio Format Name-------------------- ------ ----------- -----------912808 <- 352624 38.63% linux/amd64 002Unpacked 1 file.
再用strings工具查看打印字符:

可以发现是 UPX 把 Flag 的文本字段压缩了,所以之前提交的 Flag 是不对的。
