题目描述
异常的文件
某次工控安全测试中,老付发现靶标的主机上存留一个与相关系统无关的程序,你能破解出来分析到里面的关键信息吗?flag格式为:flag{}。
题目下载
链接:https://pan.baidu.com/s/15c9-GogIC1XOcM6qwTLnFQ
提取码:yfld
题目考点
逆向工程md5加密算法特征,逆向分析能力。
解题思路
1.下载题目解压,运行命令file 04 看看是什么类型的文件
2.发现识别不出文件类型,打开hex查看
开头8字节均是0,猜测是ELF文件头缺失,补上7F 45 4C 46 发现是64位ELF程序,无壳。
3.简单运行下
4.常规操作,打开IDA。
简单分析可得需要用户输入一串8字节的字符串,先与byte_5090前8位进行亦或xor操作。
然后每一位进行某种操作后与8个字符串对比,通过验证后即可输出相关信息,猜测和flag有关。
进入sub_1682子函数 发现明显的MD5加密特征数,以及8个字符串均为32位,判断8个字符串为md5加密。
MD5加密特征:
关于MD5加密,要记住以下几点:
1、位数
关于MD5加密后的数据只有16位或者是32位,不论你的加密数据多长它都是这样生成的。
2、作用
主要是用于登陆时校验,称为取盐,这种方式是不可逆的。
3、MD5加密函数会出现的默认key
1732584193、271733879、1732584194、271733878
通过md5在线解密可得8个字符串md5为
0x34,0x7e,0x46,0xc5,0x7c,0x38,0x77,0x26
整理以上信息可写出xor解密脚本。输出为:
WhoWin?
xor_result=[0x34,0x7e,0x46,0xc5,0x7c,0x38,0x77,0x26]
byte_5090=[0x63, 0x16, 0x29, 0x92, 0x15, 0x56, 0x48, 0x26, 0x56, 0x43, 0x74, 0x36, 0x95, 0x38, 0x77, 0x18]
inputstr=""
for i in range(8):
tmp=xor_result[i]^byte_5090[i]
print(tmp)
inputstr+=chr(tmp)
print(inputstr)
启动程序输入WhoWin? 可得flag。
flag
flag{RobotWinTheGame}