逆向练习3(python效率编程学习)

BUUCTF——[De1CTF2019]Re_Sign

这道题很早之前和朋友一起做的,我只是脱了壳,但后面没有做出来,这一次自己试着做,这次自己做了出来。
脱壳了的程序不能运行,就用源程序直接动调,静态看脱壳后的ida,关键函数是sub_401f0a,这道题是魔改的base64,所以动调找到改后的表
在这里插入图片描述
进入函数动调,发现sub_402160是一个判断的关键点
在这里插入图片描述
进入发现了一个正常base64的表,动调发现出来和要对比的byte_41E377相比,发现出来的结果我们输入后第一次魔改base64加密的字符串在正常base64_table里面的位置,所以按照这种方法逆推回去就行(这里用的自己之前写的一个base64加密的脚本,自己写点工具脚本还是挺好的)

def mo64_decode(a):
    tb = "0123456789QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm+/"                       #魔改的表
    c=''
    for i in range(len(a)):
        b=str(bin(tb.index(a[i]))).replace("0b","").zfill(6)        #6 base64   5 base32   4 base16
        c+=str(b)
    m=""
    i=0
    for i in range(0,len(c),8):
        m+=chr(int(c[i:i+8],2))
    return m
def mo64_encode(a):
    tb='0123456789QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm+/'
    c=''
    for i in range(len(a)):
        b=str(bin(ord(a[i]))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值