# 程式安全 Reverse Homework Write-Up ## **[0x03] fifo** 首先使用readelf檢查是否有藏東西,看起來是沒有因此使用IDA直接跳到main做靜態分析  整個流程大概是fifo執行擋會去開檔/tmp/khodsmeogemgoe並且寫入一段data(byte_4040)使其成為執行檔,接下來透過fork()函數 執行/tmp/khodsmeogemgoe子程序,那首先先繼續trace父程序 父程序會新增資夾/tmp/bnpkevsekfpk3並且在資料夾裡面使用mkfifo()創建一個FIFO檔案aw3movsdirnqw後開檔在寫入一些data(byte_2020) 接下來使用IDA打開子程序可以看到/tmp/khodsmeogemgoe會去讀aw3movsdirnqw檔案裡的東西後並把FIFO檔移除並對讀到的資料做一些處理,如下圖  從decompiler的結果就可以很輕易的看出a1是傳入的24byte資料,會對a1的每一byte做4次XOR,這4個XOR的對象分別是剛剛父程序傳給子程序的那一串data(byte_2020,因此直接去父程序找那串data,如下圖  做完就可以的得到`FLAG{FIFO_1s_D1sGVsTln9}`了 比較要注意的是他是data讀到第65個的時後要從頭開始讀data,所以a1的第17byte要跟data[64]、data[0]、data[1]、data[2]做XOR 然後我是手動做的,並未寫script,所以沒有script檔。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up