数信杯初赛-re

数信杯
re_ds001

拿到程序第一件事就是先分析,发现是64位的exe,并且在压缩包里还要有个enf文件,猜测后续会用到。

才开始进去后挺难找到主要函数加密都干了什么的,是我菜的原因吧,所有我直接丁真到base64的加密函数,一步一步的网上引用ctrl+x,最后还真让我找到了。

code就是我们主要分析的函数

主要加密就是这个框圈的函数,导开之后大概就是,把那个enf文件,给打开喽,然后给他做一个base64加密。

跟进后发现,在base后,在画红框的函数里面,又进行了一个简单的加密。

所有,这题的思路就有了,就先把文件打开,进行这个sub_140012240的解密后,直接base64解密就可以得到flag了。

import base64

def decrypt(data):
    return bytes([((b >> 3) | (b << 5 & 0xFF)) for b in data])

with open("en_file_data.enf", "rb") as f:
    encrypted = f.read()
decrypted = decrypt(encrypted)

with open("1.txt", "wb") as f:
    f.write(decrypted)

re_ds002

re_ds002与001大部分都是一样的除了加密方式不一样,re_ds002用到的是rc4加密

通过这里的函数特征发现的,但是问题出现了,有了密文也就是那个文件,但是没有哦找到key

对比了一下rc4的源码,发现这里的v6对应的就是key,但是静态看不出来值是多少,所有这里就得使用到动调了。

key:6A1D4E2a2276Y7JL

可以利用rc4的特征直接运行密文让程序自行解密。不过好像是题目问题,只能解出来不对,但是思路我感觉是对的,解出来乱码就很难受。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值