Buuctf-Reverse(逆向) Crackme Write up

突然发现最近的文章都是日更了,啊呀主要是最近的题都学到许多新知识。

0x00 日常查壳

无壳32位

0x01 分析主函数

这题函数很多不过慢慢分析也还好 关键是要有耐心 还有一个重要的知识点就是反调试技术

一开始不了解阅读感极差 动调也看不出来什么

所以在主函数这个界面除了关键判断函数1830不用先去看 可以看完其他所有函数

于是在这先推荐看wiki的文章 看完再去看1830函数

NtGlobalFlag - CTF Wiki

0x02 分析关键函数1830

模块一

模块二

一开始没有反调试这个知识点根本看不出逻辑

分析一下现在得知的信息

1. 6050数据区是根据welcomebeijing得到的秘钥

2. pass是我们用户输入的数据 也就是flag了

3. key的数据已经得到下下图

那么就很简单了就只要得到6050的数据区就可以得到flag

0x03 动态获取6050数据区

观察代码可以看到6050数据区经过多次变动 动态来的方便

用52dbg打开

再拿x32dbg调试 将原来是je调成jmp跳过那段反调试代码

即可反复执行这块8次 即可拿到6050数据区的数据

0x04 GetFlag!

异或的特性

#include <stdio.h>
int main(void)
{
	int i;
	int user[] = { 0x2A, 0xD7, 0x92, 0xE9, 0x53, 0xE2, 0xC4, 0xCD};
	char key[] = "dbappsec";
	
	for(i = 0; i < 8; i++)
		printf("%x", user[i] ^ key[i]);
	
	return 0;	
} 

再拿去md5加密提交即可

GetFlag!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值