這篇文章主要從防御角度來寫冯勉,防護好自己的服務器纷妆,免受對手拿flag场梆,以及如何繞過AWD模式下主辦方的checker墅冷。比賽之前都是在做逆向的,學了幾天Pwn或油,Patch方式比較粗暴寞忿,希望大佬別見怪,應該有很多疏漏顶岸,請指出腔彰。
Calc
kali下執(zhí)行該軟件叫编,輸入各種計算,構造內(nèi)存泄漏
Calc文件計算部分函數(shù)
相對應的16進制編碼
用010直接改申請的內(nèi)存空間大小
關于使用malloc需要注意的地方:
A霹抛、申請了內(nèi)存空間后搓逾,必須檢查是否分配成功。
B杯拐、當不需要再使用申請的內(nèi)存時霞篡,記得釋放;釋放后應該把指向這塊內(nèi)存的指針指向NULL藕施,防止程序后面不小心使用了它寇损。
C、這兩個函數(shù)應該是配對裳食。如果申請后不釋放就是內(nèi)存泄露矛市;如果無故釋放那就是什么也沒有做。釋放只能一次诲祸,如果釋放兩次及兩次以上會出現(xiàn)錯誤(釋放空指針例外浊吏,釋放空指針其實也等于啥也沒做,所以釋放空指針釋放多少次都沒有問題)救氯。
D找田、雖然malloc()函數(shù)的類型是(void *),任何類型的指針都可以轉換成(void *),但是最好還是在前面進行強制類型轉換,因為這樣可以躲過一些編譯器的檢查着憨。
Csgd
這些字符串讓我們想起了昔日熟悉的CS
跟進/opt/xnuca/flag.txt墩衙,我們會看到有/bin/sh
所以,就進跟進
/opt/xnuca/flag.txt
字符串, 然后F5反編譯. 結果如下:sub_402B5D這個函數(shù)的作用就是用來獲取后門
所以直接在這個函數(shù)頭部ret, 成功繞過checker
Fileparser
獲取flag路徑的16進制
這題我們直接在16進制里修改獲取flag的目錄, 沒想到居然繞過了checker.
有師傅說會被檢測到, 可能是因為沒有在相應目錄下創(chuàng)建flag.txt吧, 把路徑修改為
/home/xnuca/flag.txt
, 此外在這個目錄下構造了一個假flag.