2022安洵杯reverse——flower.pyc

"本文通过Python代码展示了如何进行反调试并解析Base64编码。通过跟踪函数调用,获取到Base64编码表,并利用CyberChef套用编码表解密得到了乱序的flag。最终通过排列组合得到正确flag:D0g3{It_1s_An_Easy_PYC_R1ght?}
摘要由CSDN通过智能技术生成
import sys
import xdis.std as dis
​
# esq8y43nYgdk+b2QS0W7jLi5cvf16uGXCMBHw9moZNJREaDpAx/tITKOzhVPFlUr=
b64 = ''
​
def test(a,b,c):
    global b64
    code = a.f_code
    if 'ctf.py' in str(a):
        print(code.co_name)
        # print(code.co_names)
        # print(code.co_consts)
        
        print(dis.dis(code))
​
        # print('##', a.f_locals)
        if 'My_base64_encode' in a.f_globals:
            for i in range(64):
                res = a.f_globals['My_base64_encode']('\x00\x00'+chr(i))
                print('good:', res)
                b64 += res[-1]
            b64 += '='
            print('b64_table', b64)
            print('b64_res_test', a.f_globals['My_base64_encode']('so good man'))
            exit(0)
​
# 绕过反调试
sys.gettrace = lambda :None
sys.settrace(test)
​
import PYC

运行后得到正确的base64编码表

esq8y43nYgdk+b2QS0W7jLi5cvf16uGXCMBHw9moZNJREaDpAx/tITKOzhVPFlUr=

  6:          16 LOAD_CONST           ('63356268')
​
  7:          18 LOAD_CONST           ('75344678')
​
  8:          20 LOAD_CONST           ('75386c6c')
​
  9:          22 LOAD_CONST           ('2b69755a')
​
 10:          24 LOAD_CONST           ('53546c57')
​
 11:          26 LOAD_CONST           ('31396c34')
​
 12:          28 LOAD_CONST           ('35547376')
​
 13:          30 LOAD_CONST           ('36546c73')
​
 14:          32 LOAD_CONST           ('3038736f')
​
 15:          34 LOAD_CONST           ('2b4f6167')

CyberChef套用上面得到的b64表

 

 

asyt_1t?}1ghC_Rn_E_PYs_AD0g3{I

是乱序的flag,排列组合得到正确的flag

D0g3{It_1s_An_Easy_PYC_R1ght?}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SlientRainDay

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值