参考链接
1.基本信息探查:
1.EXEinfo:
无壳,64位,ELF文件格式

2.运行一下:
输出了一个茶杯,这因该是官方给的一个提示,这个题可能用的是TEA加密
然后就是输出了一个字符串:“Please input:”

2.IDA分析:
1.分析main函数:
题目的思路还是很清晰的,接收flag,判断flag长度是否为35,然后在25行调用一个函数进行flag的加密,最后在26行处调用函数进行flag验证。
修改后的主函数
2.加密函数分析:
一开始看到这玩意儿有点蒙,我主要疑惑的地方有两个,第一处是既然是tea的话一定会有Delta值,但v6处按道理应该是作为sum累加delta但是这里是减等
0x61C88647
,第二处是37的循环,以目前的加密来看不是简单的TEA而是XXTEA,那么这个循环的次数应该是rounds = 6 + 52/n
,结果这里的数可以说是巨大,下面主要分析这两处:- 第一处:
先看v6的类型为
unsigned int
,也就是说v6占32位,然而把0x61C88647
放入计算器就可以发现
其实最终存进v6的值就是
0x9E37 79B9
- 第二处:
弄懂了第一处,第二处也就好解释了,这里应该要循环7次,而把v6的值代入可以发现正好也是7次
下面列出改变变量后的加密函数:
现在就差一个加密后的值了,这个值可以去比较函数里面找一找。
3.check函数分析:
加密后的数据在
dword_5020
,双击过去提取里面的数据。3.EXP:

hgame{l00ks_1ike_y0u_f0Und_th3_t34}