ISCC2021-Re部分题解

ISCC2021 RE wp

练武题

0x00 Garden

题目描述:

花园里藏了一个小宝贝,你能找到他吗?

pyc文件直接反编译然后看源码
在线工具
在这里插入图片描述
异或顺序随便换 但是最后的结果不变,相异为一,相同为零。

f= '2(88\x006\x1a\x10\x10\x1aIKIJ+\x1a\x10\x10\x1a\x06'
flag="
for i in f:
     flag+=chr(ord(i)^123)
print(flag)

0x01 Analysis

题目描述:

分析就完事了!

打开IDA分析
在这里插入图片描述
通过字符串 找到关键点:
在这里插入图片描述
进入mix查看:
在这里插入图片描述
上脚本:

cpt = [67,-33,20,3,13,44,9,1,23,23,8,-4,43,-6,20,23,-7,37,-11,34,61,-50,24,22,10]
mix = [82,69,86,69,82,83,69]

for k in range(len(mix)):
    mix[k] %= 64 
  #加密用的密钥都是取余之后的,所以先取余操作
for n in range(len(cpt)):
    if mix[n%7] & 1:
        cpt[n] -= 2
    else:
        cpt[n] -= 1
  #先逆加一和加二      
for m in range(len(cpt)//2):
    x = cpt[m]
    cpt[m] = cpt[len(cpt)-1-m]
    cpt[len(cpt)-1-m] = x
 #对称互换
for l in range(len(cpt)):
    cpt[l] -= mix[l%7]
 #逆自加,既自减
for j in range(len(cpt)-2,-1,-1):
    cpt[j] += cpt[j+1]
 #从后往前,因为最后一个字符是不变的
for i in range(len(cpt)):
    cpt[i] += 64
  #加回64
for i in range(len(cpt)):
    cpt[i] = chr(cpt[i])
flag = ''.join(cpt)
print(flag)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1in__

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值