buuctf re findKey

参考:http://t.csdnimg.cn/hUKRJ

参考:http://t.csdnimg.cn/kIk4i

32位,ida打开

f5,先不管呢

winmain函数

看看字符串

进到flag那里,没法反编译

寻找

看汇编,发现两个一样的push(不理解怎么找到的,毕竟好多好多代码)

应该是花指令

Nop掉第二个,然后p,f5,

直接右键Nop不知道和下图有啥区别,应该问题不大吧

分析发现,一共两个主要函数

先进入1005函数

写个脚本

cpp 复制代码
#include<stdio.h>
int main()
{
	int i,j,v5=2,a3=32,result;
	char a1[]="SS";
	char a2[]="0kk`d1a`55k222k2a776jbfgd`06cjjb";
 
 	for(i = 0; ; ++i )
 	{
  	result = i;
   	 	if ( i >= a3 )
     	break;
    *(i + a2) ^= a1[i %2];
  }
 
	puts(a2);
	return 0;
}

运行得到

提交发现错误,再分析另一个函数

哈希标识符:ALG_ID (Wincrypt.h) - Win32 apps | Microsoft Learn

函数介绍:(全都是英文,看不懂QAQ)

CryptCreateHash function (wincrypt.h) - Win32 apps | Microsoft Learn

具体参考:http://t.csdnimg.cn/rd5mJ

CryptCreateHash 函数的参数包括:

hProv:加密服务提供者的句柄。

Algid:指定要使用的哈希算法的 ALG_ID 值。

hKey:如果哈希算法是带密钥的,则传入密钥的句柄;否则为0。

dwFlags:标志位,通常为0。

phHash:指向新创建的哈希对象句柄的指针。

CryptHashData 函数的参数包括:

hHash:哈希对象的句柄。

pbData:指向要进行哈希处理的数据的指针。

dwDataLen:要进行哈希处理的数据的长度。

dwFlags:标志位,通常为0。

CryptGetHashParam 函数的参数包括:

hHash:哈希对象的句柄。

dwParam:指定要获取的哈希参数。

pbData:指向存储参数数据的缓冲区的指针。

pdwDataLen:指向存储参数数据长度的变量的指针。

dwFlags:标志位,通常为0。

MD5解密网站:MD5在线加密/解密/破解---MD5在线 (sojson.com)

然后就是两种不同方法:

方法一动态调试--有待学习

把string1改成123321

运行所给程序

方法二:继续分析函数

下面还有一个函数,和上面那个异或的是一个函数

第一个-492没有找到对应的字符串,所以推测是刚刚得到的123321,要不然前面也没啥用了

后面那个字符串,数据没办法一次全部导出来,也可能我打开方式不对,就一个个敲得,刚刚把5B写成58了,导致i变成j了,服了QAQ

运行即可

cpp 复制代码
#include<stdio.h>
int main()
{
	int i,j,v5=6,a3=19;
	char a1[]="123321";
	char a2[]={0x57,0x5E,0x52,0x54,0x49,0x5F,0x1,0x6D,0x69,0x46,0x2,0x6E,0x5F,0x2,
	0x6C,0x57,0x5B,0x54,0x4C};
 
 	for(i = 0; ;i++)
 	{
   	 	if(i>=a3)
     	break;
    *(i+a2)^= a1[i%6];
  }
	puts(a2);
	return 0;
}

flag{n0_Zu0_n0_die}

相关推荐
Myli_ing25 分钟前
考研倒计时-配色+1
前端·javascript·考研
余道各努力,千里自同风28 分钟前
前端 vue 如何区分开发环境
前端·javascript·vue.js
软件小伟37 分钟前
Vue3+element-plus 实现中英文切换(Vue-i18n组件的使用)
前端·javascript·vue.js
醉の虾1 小时前
Vue3 使用v-for 渲染列表数据后更新
前端·javascript·vue.js
张小小大智慧1 小时前
TypeScript 的发展与基本语法
前端·javascript·typescript
hummhumm1 小时前
第 22 章 - Go语言 测试与基准测试
java·大数据·开发语言·前端·python·golang·log4j
asleep7011 小时前
第8章利用CSS制作导航菜单
前端·css
hummhumm2 小时前
第 28 章 - Go语言 Web 开发入门
java·开发语言·前端·python·sql·golang·前端框架
幼儿园的小霸王2 小时前
通过socket设置版本更新提示
前端·vue.js·webpack·typescript·前端框架·anti-design-vue
疯狂的沙粒2 小时前
对 TypeScript 中高级类型的理解?应该在哪些方面可以更好的使用!
前端·javascript·typescript