前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【愚公系列】2021年12月 攻防世界-简单题-CRYPTO-009(easychallenge)

【愚公系列】2021年12月 攻防世界-简单题-CRYPTO-009(easychallenge)

作者头像
愚公搬代码
发布2021-12-27 08:05:25
2440
发布2021-12-27 08:05:25
举报
文章被收录于专栏:历史专栏

文章目录


前言

题目描述:你们走到了一个冷冷清清的谜题前面,小鱼看着题目给的信息束手无策,丈二和尚摸不着头脑 ,你嘿嘿一笑,拿出来了你随身带着的笔记本电脑,噼里啪啦的敲起来了键盘,清晰的函数逻辑和流程出现在 了电脑屏幕上,你敲敲键盘,更改了几处地方,运行以后答案变出现在了电脑屏幕上。


提示:以下是本篇文章正文内容,下面案例可供参考

一、easychallenge

题目链接:https://adworld.xctf.org.cn/task/answer?type=crypto&number=5&grade=0&id=5109&page=1

二、使用步骤

1.uncompyle6

发现是一个.pyc文件

需要反编译成py文件

uncompyle6是一个原生python的跨版本反编译器和fragment反编译器,是decompyle、uncompyle、uncompyle2等的接替者

代码语言:javascript
复制
pip install uncompyle6

uncompyle6 -o . test.pyc

得到py代码如下:

代码语言:javascript
复制
import base64

def encode1(ans):
    s = ''
    for i in ans:
        x = ord(i) ^ 36
        x = x + 25
        s += chr(x)

    return s


def encode2(ans):
    s = ''
    for i in ans:
        x = ord(i) + 36
        x = x ^ 36
        s += chr(x)

    return s


def encode3(ans):
    return base64.b32encode(ans)


flag = ' '
print 'Please Input your flag:'
flag = raw_input()
final = 'UC7KOWVXWVNKNIC2XCXKHKK2W5NLBKNOUOSK3LNNVWW3E==='
if encode3(encode2(encode1(flag))) == final:
    print 'correct'
else:
    print 'wrong'

流程分析

encode1函数是把输入的字符串分割成单独的字符,先转换为ascii数值,再与36异或,然后+25,接着转回字符,最后拼接为新的字符串输出。因此对应的decode1函数应该是先-25,再与36异或(异或的逆操作还是异或)。encode2函数是把输入的字符串分割成单独的字符,先转换为ascii数值,再+36,然后与36异或,接着转回字符,最后拼接为新的字符串输出。因此对应的decode2函数应该是先与36异或,再-36。encode3函数是调用base64库里的b32encode()函数进行base32运算。因此对应的decode3函数应该是base64.b32decode()。

2.解密py文件

代码语言:javascript
复制
import base64

def decode1(ans):
    s = ''
    for i in ans:
        x = ord(i) - 25
        x = x ^ 36
        s += chr(x)

    return s


def decode2(ans):
    s = ''
    for i in ans:
        x = i^ 36
        x = x - 36
        s += chr(x)

    return s


def decode3(ans):
    return base64.b32decode(ans)


final = 'UC7KOWVXWVNKNIC2XCXKHKK2W5NLBKNOUOSK3LNNVWW3E==='
flag=decode1(decode2(decode3(final)))
print(flag)

得到对应的flag为cyberpeace{interestinghhhhh}


总结

  • uncompyle6
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/12/26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 文章目录
  • 前言
  • 一、easychallenge
  • 二、使用步骤
    • 1.uncompyle6
      • 2.解密py文件
      • 总结
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档