iT邦幫忙

2023 iThome 鐵人賽

DAY 21
0

前言

今天一樣是在 Hackme CTF 找題目~因為很多題目都是 linux 環境的執行檔,時間應該會來不及,最後選了一題應該是 Python 環境的題目 pyyy

Write-up

雖然是 Python 題,但後來發現不是 Python 3 而是 Python 2,總之先用 pyenv 裝一下 XD

下載下來是一個 pyc 檔案,其實就是經過編譯的 bytecode,也是可以直接執行的:

> python pyyy.pyc
Channenge #0:

看起來應該是要我們輸入東西來取得 flag。

在 Google 搜尋 pyc,就可以看到前幾個就有反編譯工具,我們丟上去試試看。
解出來大致長這樣(太長了去頭去尾):

...
for i, f in enumerate(F):
    n = pow(f, m, g)
    this_is = 'Y-Combinator'
    l = (lambda f: (lambda x: x(x))(lambda y: f(lambda *args: y(y)(*args))))(lambda f: lambda x: 1 if x < 2 else f(x - 1) * x % n)(g % 27777)
    c = raw_input('Channenge #%d:' % i)
    if int(c) != l:
        print 'Wrong~'
        exit()
    z.append(l)
...

很明顯就是中間的 if int(c) != l: 在影響結果,先把反編譯後的程式碼直接貼到一個新的 .py 檔並執行:

> python pyyy.py
Channenge #0:

看來是可以執行的 XD。
因為有迴圈會跑很多次,我們直接把使用者輸入那行改成 c = l 就可以不用輸入很多次了。

執行,成功得到 flag~
https://ithelp.ithome.com.tw/upload/images/20231005/20162615oSajN6HwoO.png

後記

老實說每天都寫真的不太容易 XD,但想著就算寫一點也比放棄好,寫著寫著也過了 2/3 了。確實這樣下來也累積了一些進步,如果這些學習的紀錄剛好能對誰有幫助那就太好了。


上一篇
Day 20. Reverse - Ghidra
下一篇
Day 22. Reverse - 實戰(下)
系列文
進了資安公司當後端 RD 才入門資安會不會太晚了30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言