记一次ctf的RE题《pyre》的writeup
一开始拿到一个pyc文件,尝试打开却老是闪退。
于是上网搜索pyc,查到要转化成py文件才能打开
http://tools.bugscaner.com/decompyle/
在上面这个网站反编译后,得到的代码是:
'Welcome to Re World!'
'Your input1 is your flag~'
l = len(input1)
code = []
for i in range(l):
num =((input1 + i) % 128 + 128) % 128
code += num
for i in range(l - 1):
code = code ^ code
code
code = ['\x1f', '\x12', '\x1d', '(', '0', '4', '\x01', '\x06', '\x14', '4', ',', '\x1b', 'U', '?', 'o', '6', '*', ':',
'\x01', 'D', ';', '%', '\x13']
一开始,第一次碰到,看的很懵。后来根据'Your input1 is your flag~' 以及这段代码的思路想了一下,这道题应该是要我们把已经得到的code 逆着代码思路倒推出
input1,也就是要的flag。
得到思路后,就开始动手。
首先要转化code里的字符串,因为看到code = code ^ code ,字符串无法进行按位异或运算。
再者, 将code中数据从尾到头,按位异或回来,顺序不能变,因为只有code始终没变。
最后,code依次减i就能得到flag---GWHT{Just_Re_1s_Ha66y!}
其实,说到底就是逆运算。挺简单,但由于是第一次接触ctf,又是自己拿到的第一个flag,所以还是值得纪念的。。嘻嘻
接下来,是我的傻乎乎的代码:
code = ['\x1f', '\x12', '\x1d', '(', '0', '4', '\x01', '\x06', '\x14', '4', ',', '\x1b', 'U', '?', 'o', '6', '*', ':',
'\x01', 'D', ';', '%', '\x13']
s = ''
i = 0
for i in range(len(code)):
code = ord(code)
code = code^code
code = code^code
code = code^code
code = code^code
code = code^code
code = code^code
code = code^code
code = code^code
code = code^code
code = code^code
code = code^code
code = code^code
code = code^code
code = code^code
code = code^code
code = code^code
code = code^code
code = code^code
code = code^code
code = code^code
code = code^code
code = code^code
print()
print()
print()
i = 0
c = 0
for i in range(0,23):
code = (code - i)%128
s+=chr(code)
print(s)
总结:
1.ord()以及cha()的使用
2.按位异或 ^ 的使用
3.复习了下好久没用到的 %
最后大佬不喜勿喷,本人萌新小菜鸡一枚。。。开心就好!! sos218909 发表于 2019-12-5 11:47
给你点个赞,下次代码可以用代码块,不然看着很累
还不知道,论坛代码块怎么发。。我努力探索一下。 code = ['\x1f', '\x12', '\x1d', '(', '0', '4', '\x01', '\x06', '\x14', '4', ',', '\x1b', 'U', '?', 'o', '6', '*', ':','\x01', 'D', ';', '%', '\x13']
for i in range(len(code)-2,-1,-1):
code=chr(ord(code)^ord(code))
for i in range(len(code)):
print(chr((ord(code) - i)%128),end="") 给你点个赞,下次代码可以用代码块,不然看着很累 看不懂,研究中 Culaccino 发表于 2019-12-5 11:14
code = ['\x1f', '\x12', '\x1d', '(', '0', '4', '\x01', '\x06', '\x14', '4', ...
因为之前学的是c++,对py不熟。用循环一直得不到正确答案。。。。谢谢啦学会了。 加油一起学习 广外校赛哈哈 skye231 发表于 2019-12-5 20:47
广外校赛哈哈
校友吗?见笑了哈哈
页:
[1]
2