第三届学警杯re题解

文章讲述了通过逆向工程和密码破解技巧,逐步解析一个包含RC4加密和自定义Base64编码的旗面获取过程,涉及exe文件分析、IDA工具使用以及加密算法的逆操作。
摘要由CSDN通过智能技术生成

sign_in

拖入exe

然后拖入ida32直接得到flag 

flag{really_sign_in}

ezpyc

下载下来是pyc文件直接放入pyc文件夹下

在终端cmd执行指令pycdc.exe+文件名

由上图分析得到 这个password经过第一个tmp转化成长整型

ans是一个先base58加密然后base64加密的过程

逆过程过来就是将ans先base64解码然后base58解码

直接放入赛博厨子

得到一个数字串22385992650816784030032474165,但是还要变成长整型

找一个变成长整型的代码得到一串字符然后

from Crypto.Util.number import long_to_bytes

password = '22385992650816784030032474165'
password_int = int(password)
tmp = long_to_bytes(password_int)
print(tmp)  #b'HUBUCTF@1405'

 根据题目信息md5

 还是赛博厨子

得到flag {fd78ee3399dd6a3c1d0b637fdca0c075}

 ezre

本题考察rc4和base64但是这个base64有改

拖入exe

 拖入ida64然后分析,F5进入伪代码

前两个函数加起来就是一个rc4加密

 

 第三个函数是一个base64没有改表就是把四个字符一组换成了三个字符一组

# base64部分解密
x = "Z`TzzTrD|fQP[_VVL|yneURyUmFklVJgLasJroZpHRxIUlH\\vZE="  # 注:'\'在字符串中要用'\\'表示
flag = ""

for i in range(0, len(x), 4):
    flag += hex(((ord(x[i]) - 61) & 0x3f) << 2 | ((ord(x[i + 1]) - 61) & 0x30) >> 4) + ' '
    flag += hex(((ord(x[i + 1]) - 61) & 0xf) << 4 | ((ord(x[i + 2]) - 61) & 0x3c) >> 2) + ' '
    flag += hex(((ord(x[i + 2]) - 61) & 0x3) << 6 | (ord(x[i + 3]) - 61) & 0x3f) + ' '

# RC4解密
c = flag.split(' ')
input = [0] * 39
for i in range(len(c) - 1):
    input[i] = c[i]
print(input)  # 得出密文
t = []
key = [0x10, 0x20, 0x30, 0x30, 0x20, 0x20, 0x10, 0x40]  # 密钥
ch = ''
j = 0
s = list(range(256))
for i in range(256):   #将s盒打乱
    j = (j + s[i] + (key[i % len(key)])) % 256
    s[i], s[j] = s[j], s[i]
i = 0
j = 0
for k in input:        #得到密钥
    i = (1 + i) % 256
    j = (j + s[i]) % 256
    s[i], s[j] = s[j], s[i]
    x = (s[i] + (s[j] % 256)) % 256
    ch += chr(eval(k) ^ s[x])
print(ch)   #flag{e10adc3949ba59abbe56e057f20f883e}

flag{e10adc3949ba59abbe56e057f20f883e}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值