reverse_uuid_cs 逆向

  1. 这是一个传统的逆向题目
  2. 进入main函数分析会发现只是一堆单纯的sleep以及字符串输出
  3. 程序真正的逻辑是由tls触发
  4. 这道题有两种传统的解法

    1. 解密算法
    2. 内存中截取密钥
  5. 本章使用 内存中截取密钥的方法来解这道题

0x1 程序表现

分析程序发现程序主要是输出 数值

在c语言中数值需要使用 “%d”来输出
clip_image002.jpg

0x2 分析逻辑

Ida中查找”%d”的引用可以找到如下四个引用
image-20200905111903977.png
这四个函数分别为

00000000004015C0 ->d1

000000000040169F ->d2

000000000040176E ->d3

000000000040183D ->d4

0x3 内存截取

在这四个函数的 ret处下断点,断下后查看rsp内存区间

可以得到如下四个flag片段

0x3.1 d2

4ead-4960

image-20200905111925306.png

0x3.2 d1

flag{34e5f4a3

image-20200905112026762.png

0x3.3 d3

-8b1e-27d

image-20200905112136115.png

0x3.4 d4

b090de50a}

image-20200905112242715.png

0x4 整合

目前为止一共获得如下字符串

flag{34e5f4a3

4ead-4960

-8b1e-27d

b090de50a}

最终可以整合出flag:

uuid的格式为-8-4-4-12

flag{34e5f4a3-4ead-4960-8b1e-27db090de50a}
Last modification:September 8, 2020
如果觉得我的文章对你有用,请随意赞赏