【2020安洵杯】EasyCM WriteUp

这题从早上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]
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值