得到一個可能是elf檔案
折騰一會發現是個壓縮包,加上字尾後打開
又是一個沒有字尾的壓縮包
再次修改後打開得到檔案Catch_me
ida打開
先跑一下看下結果
得到一個提示假的flag
開始看ida
前半部分v3通過個挺複雜的函數得到值,然後v3與一些數 and 後存儲着
接下來重要的是 getenv 這個函數,函數主要作用就是擷取名為 ASIS 和 CTF 的環境變量
然後兩個的與運算後 xor v3 結果符合的話将6012ac的位置存儲 ASIS 的環境變量
再就是一個while循環
while内haystack實際上在後面存儲着正确flag
最後将haystack内的值全部替換成 bad_
看到這裡大概有一個通過動态截取flag的思路
然後先通過動态調試得到 v3 = 0xb11924e1
實際上在動态中需要通過第一部分的if才能繼續下面的讀寫flag
ida動态就不清楚怎麼跳轉不了
就參考 https://blog.csdn.net/nocbtm/article/details/98037862 内的思路和做法
一個關鍵就是wp内 0x601280是haystack數組的位址
最後也得到了結果