python-trade


python-trade

難度系數: ⭐⭐⭐
題目來源: NJUPT CTF 2017
題目描述: 菜雞和菜貓進行了一場Py交易
題目場景: 暫無

 

文件是pyc,直接反編譯出源碼

import base64

def encode(message):
    s = ''
    for i in message:
        x = ord(i) ^ 32
        x = x + 16
        s += chr(x)
    
    return base64.b64encode(s)

correct = 'XlNkVmtUI1MgXWBZXCFeKY+AaXNt'
flag = ''
print 'Input flag:'
flag = raw_input()
if encode(flag) == correct:
    print 'correct'
else:
    print 'wrong'

然后分析,大致掃一眼,就是輸入的一個值(flag)等於correct就會輸出correct,基本就清楚了,correct就是flag的值,應該這樣說,flag經過加密最后成了correct。

着手解密就好了

 ord(i)返回的是i的ASCLL碼,然后異或32,再移位16,再返回對應的ASCLL碼的值

邏輯清楚了,就可以寫啦

import base64

correct = "XlNkVmtUI1MgXWBZXCFeKY+AaXNt"
temp = base64.b64decode(correct).decode("ISO-8859-1") //找了一個帖子,說這里只能用這個編碼,我試了一下,還真是
flag=''

for i in temp:
    s = chr((ord(i)-16)^32)
    flag += s
print(flag)

結果出來了是

nctf{d3c0mpil1n9_PyC}

 

加油!未來可期!!!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM