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}

相关推荐
gnip1 小时前
企业级配置式表单组件封装
前端·javascript·vue.js
一只叫煤球的猫2 小时前
写代码很6,面试秒变菜鸟?不卖课,面试官视角走心探讨
前端·后端·面试
excel3 小时前
Three.js 材质(Material)详解 —— 区别、原理、场景与示例
前端
掘金安东尼4 小时前
抛弃自定义模态框:原生Dialog的实力
前端·javascript·github
hj5914_前端新手7 小时前
javascript基础- 函数中 this 指向、call、apply、bind
前端·javascript
薛定谔的算法7 小时前
低代码编辑器项目设计与实现:以JSON为核心的数据驱动架构
前端·react.js·前端框架
Hilaku8 小时前
都2025年了,我们还有必要为了兼容性,去写那么多polyfill吗?
前端·javascript·css
yangcode8 小时前
iOS 苹果内购 Storekit 2
前端
LuckySusu8 小时前
【js篇】JavaScript 原型修改 vs 重写:深入理解 constructor的指向问题
前端·javascript
LuckySusu8 小时前
【js篇】如何准确获取对象自身的属性?hasOwnProperty深度解析
前端·javascript