【2020安洵杯】EasyCM WriteUp

本文记录了参与2020安洵杯CTF挑战赛的过程,详细介绍了题目EasyCM的解决思路。作者通过使用x32dbg进行动态调试,发现输入字符串经过加密后变化,并推测出加密算法可能与3的倍数和base64类似。虽然在比赛中未能获得一血,但分享了解密函数的汇编分析和加密算法的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这题从早上9点开始,做了快3小时,最后被人领先8分钟拿了一血,只拿到一个二血,呜呜呜/(ㄒoㄒ)/~~

这题IDA有点白给,直接上x32dbg动调

可以看到要比较的字符串

我输入的是111d0g,经过某种加密以后变成了OOOBhKaT

前面有判断输入是不是3的倍数,不是则用-补齐的操作

推测是3位一组,一组输出4个字符,有点像base64

加密操作在这个函数里,会调用length/3次,每次输出4个字符

这个函数是动态解密的,而且dump下来后idapython写IDA里patch后也没法F5,懒得修花指令了

读一读汇编能写出他的加密算法

解密脚本:

char table[] = "BCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/A";

char getC1(char* s, int i)
{
   
	int idx = ((s[0] & 0xC0) | (s[1] & 0x30) | ((s[2] & 0x3) << 2)) >> 2;
	return table[(idx + i) % 64]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值