本题来自Buuctf 中的 crackMe。

image-20230518220305304

小张从网上下载到一个黑客软件,然而开发者并不打算共享,所以小张注册了一个用户名叫welcomebeijing,但是密码需要进行逆向计算,请求出密码,进行MD5的32位小写哈希,进行提交。


下载下来。运行一下。

image-20230518220532525

由于题目中说了“一个用户名叫welcomebeijing”,但是不知道密码,但是知道“密码需要进行逆向计算,请求出密码,进行MD5的32位小写哈希”

image-20230518220657978

无壳..放入IDA中看看咯

刚刚放进去

image-20230518220847832

就看到这个come one !感觉地方已经找到了。

image-20230518221147605

这里v6就是账号,v7是密码。


【这里有一个memset函数】虽然感觉分析它用处不大,但毕竟是为了学习,何乐而不为呢?

C 库函数 void *memset(void *str, int c, size_t n) 复制字符 c(一个无符号字符)到参数 str 所指向的字符串的前 n 个字符。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
#include <string.h>

int main ()
{
char str[50];

strcpy(str,"This is string.h library function");
puts(str);

memset(str,'$',7);
puts(str);

return(0);
}

编译后得到的是

1
2
This is string.h library function
$$$$$$$ string.h library function

memset(v6, 0, sizeof(v6));这个意思就是填充成0咯


点进去看一看这个对账号密码处理的函数

image-20230518222948163

image-20230519073336091