reverse_uuid_cs 逆向
- 这是一个传统的逆向题目
- 进入main函数分析会发现只是一堆单纯的
sleep
以及字符串输出 - 程序真正的逻辑是由tls触发
这道题有两种传统的解法
- 解密算法
- 内存中截取密钥
- 本章使用 内存中截取密钥的方法来解这道题
0x1 程序表现
分析程序发现程序主要是输出 数值
在c语言中数值需要使用 “%d”来输出
0x2 分析逻辑
Ida中查找”%d”的引用可以找到如下四个引用
这四个函数分别为
00000000004015C0 ->d1
000000000040169F ->d2
000000000040176E ->d3
000000000040183D ->d4
0x3 内存截取
在这四个函数的 ret处下断点,断下后查看rsp内存区间
可以得到如下四个flag片段
0x3.1 d2
4ead-4960
0x3.2 d1
flag{34e5f4a3
0x3.3 d3
-8b1e-27d
0x3.4 d4
b090de50a}
0x4 整合
目前为止一共获得如下字符串
flag{34e5f4a3
4ead-4960
-8b1e-27d
b090de50a}
最终可以整合出flag:
uuid的格式为-8-4-4-12
flag{34e5f4a3-4ead-4960-8b1e-27db090de50a}