buuctf [GWCTF 2019]pyre 1 wp

下载好文件一看是个pyc文件,找个python的在线解密
在线解密python的网址:https://tool.lu/pyc/

#!/usr/bin/env python
# visit http://tool.lu/pyc/ for more information
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#元素+下标,与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",
    ";",
    "%",
    "\x13",
]

注释已经写在代码上了,那接下就是对写脚本对代码进行反操作一波,首先是到着读它,两次异或等于不异或。

code = [
    '\x1f',
    '\x12',
    '\x1d',
    '(',
    '0',
    '4',
    '\x01',
    '\x06',
    '\x14',
    '4',
    ',',
    '\x1b',
    'U',
    '?',
    'o',
    '6',
    '*',
    ':',
    '\x01',
    'D',
    ';',
    '%',
    '\x13']
i=len(code)
for j in range(i-2,-1,-1):#要倒着异或,,从倒数第二个开始,到0,(因为前面是正序的)
    code[j]=chr(ord(code[j])^ord(code[j+1]))
for j in range(i):
                print(chr((ord(code[j])-j)%128),end='')

然后得到结果GWHT{Just_Re_1s_Ha66y!}
记得改为flag{}格式!
这是我第一次写出来python的逆向题,之前在V&N线上赛的见过但是比这个难得多,没写出来,没有对应的插件
此篇由于是第一次写python的逆向题,有借鉴其他人的wp,

下次一定回更好!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值