buuctf pyre

1.下载下来是一个pyc文件,之前做题了解到实验室有大佬知道pyc。然后get到一个超爽的网站直接把pyc转成python
2.接下来,看代码喽

print 'Welcome to Re World!'
print 'Your input1 is your flag~'
l = len(input1)
for i in range(l):

num = ((input1[i] + i) % 128 + 128) % 128
    code += num

for i in range(l - 1):
    code[i] = code[i] ^ code[i + 1]

print code
code = [    '\x1f',    '\x12',    '\x1d',    '(',    '0',    '4',    '\x01',    '\x06',    '\x14',    '4',    ',',    '\x1b',    'U'    '?',    'o',    '6',    '*',    ':',    '\x01'    'D',    ';','%',`

3.其实一个(输入的字符+序列)再加一个第一个和后一个逆或就搞定的事,费了这么长时间。😫
。然后再细说
num = ((input1[i] + i) % 128 + 128) % 128
这个东西呢,首先要知道一个公式(a%c+b%c)%c=(a+b)%c然后就可以化简了,我的理解是把b看成0,再把数带到公式里去后。然后就可以得到(input1【i】+i)%128。这个式子我想了好久该怎么去得到input1,我本来想就当他是个数学题做,但就是做不成,后来看师傅们的wp,把它理解成输入的字符+序列,他这个取余是为了保证他的ascll码在128里面,咱也保证就可了,就好逆了。
再说第二函数其实就是异或^,没啥好说我逆或我自己等于啥都没有。但是范围要注意的他原来是0到l-2,然后在逆这回去。
4,code = ['\x1f','\x12','\x1d','(','0','4','\x01','\x06','\x14','4',',','\x1b','U','?','o','6','*',':','\x01','D',';','%','\x13']换行 input1=['']这里换行 for i in range(len(code) - 2,-1,-1):换行 code[i] = chr(ord(code[i])^ord(code[i + 1]))换行 for i in range(len(code)):换行 print ( chr((ord(code[i])-i)%128),end='')
不知道为啥就变得这么丑了,手动换行,运行get flag。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值