Bugku-QAQ

  • 下载cipher.txt里面的内容为:
1
2
FSAnRAIzNlMjPQMjNyBJNTs6NlIFPFIqDDVTJy0zGE8rKxZBJDIrJkYoPUQML1M3MDYJZTElFyI7
UzE6DTtSNxckNDw2Mxk9Jzc=
  • 是一段base64,但是解码以后是乱码。

  • QAQ文件用十六进制查看器打开后发现了.py, main 之类的关键词,一看就是个pyc文件,拓展名改为pyc文件后进行反编译。

  • 用在线工具进行反编译的话, 提示有部分代码没有反编译成功, 并且在没有反编译成功的地方加了注释告诉我们这个位置有没有反编译成功的代码。

  • 转变方向,追求更高效的反编译方法。

  • 在网上得知了一款名为uncompyle6的工具。

  • 由此反编译得到了完整的py代码。
  • 针对这个文件写了一个解密脚本 decode.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
def decrypt(key, plain):
cipher = ''
for i in range(len(plain)):
cipher += chr(ord(key[(i % len(key))]) ^ ord(plain[i]))

return cipher


def getPlainText():
plain = ''
with open('cipher.txt') as (f):
while True:
line = f.readline()
if line:
plain += line
else:
break

return plain.decode('base_64')


def main():
key = 'LordCasser'
plain = getPlainText()
cipher = decrypt(key, plain)
with open('plain.txt', 'w') as (f):
f.write(cipher)


if __name__ == '__main__':
main()
  • 如果用编译器运行该脚本的话,需要把 open(‘cipher.txt’) 这种变成 open(‘绝对路径’)这种形式。
  • 如果不是编译器,需要保证.py脚本与脚本中用到的文件在同一路径。如图。

  • 运行脚本得到 plain.txt,内容为:
1
2
3
4
YOU ARE FOOLED
THIS IS NOT THAT YOU WANT
GO ON DUDE
CATCH THAT STEGOSAURUS
  • 根据提示, 百度搜了搜那个STEGOSAURUS…结果…

  • 剑龙…???

  • 应该不会是让我们去抓住那个剑龙…

  • 谷歌一番,找到了这个

  • 看不太懂, 翻译一波

  • 链接在这。

传送门

  • 所以这个应该是一种工具。搞下来以后根据用法来用。

  • 欺负我Windows上只安了python2.7.15…..

  • 无奈打开kali,因为我kali安python3了…

  • 得到flag
1
flag{fin4lly_z3r0_d34d}