REVERSE-PRACTICE-BUUCTF-14
REVERSE-PRACTICE-BUUCTF-14
- [FlareOn3]Challenge1
- [GUET-CTF2019]number_game
- [GWCTF 2019]re3
- [網鼎杯 2020 青龍組]singal
[FlareOn3]Challenge1
exe程序,運行后提示輸入密碼,輸入錯誤退出程序,無殼,ida分析
main函數邏輯清晰,讀取輸入,對輸入進行變表base64編碼,驗證編碼結果
之前遇到過變表base64的題目,見REVERSE-PRACTICE-BUUCTF-7或REVERSE-PRACTICE-BUUCTF-10或base64原理及其編解碼的python實現
這道題用一個工具,加密解密小玩具,來解,非常方便
[GUET-CTF2019]number_game
elf文件,無殼,ida分析
main函數,獲取輸入,檢驗輸入長度是否為10且均為0~4的數字,先后經過先序遍歷和中序遍歷改變輸入中各個字符的位置,再順序地放入數獨“#”位置,最后檢驗數獨
sub_400758函數和sub_400807函數先后經過先序遍歷和中序遍歷改變輸入中各個字符的位置,本人一直想不通,于是動調,當輸入為0123456789時,sub_400807函數調用結束后的v7為7381940526,于是可以知道輸入中字符位置變換的規律
變換前的下標:0 1 2 3 4 5 6 7 8 9
變換后的下標:7 3 8 1 9 4 0 5 2 6
再解數獨,在sub_400917函數中可知為5x5的數獨
寫代碼換成正確的位置即可得到flag
由于輸入長度只有10位,且均為0~4的數字,也可以寫腳本爆破得到flag
[GWCTF 2019]re3
elf文件,無殼,ida分析
main函數,讀取輸入,檢驗輸入長度是否為32,有一段SMC,自修改代碼
ida靜態分析,先寫idapython腳本完成smc
smc執行前,地址0x402219處是一大段數據
smc的idapython腳本
smc執行完成后,按c轉換成代碼
在地址0x402219處右鍵->Edit function,將函數結束地址修改為retn指令所在地址,完成后F5反匯編
用插件Findcrypt發現sub_402219是對輸入的AES加密,密鑰為unk_603170,密文為res
遠程調試elf,得到密鑰unk_603170
寫AES解密腳本即可得到flag
[網鼎杯 2020 青龍組]singal
exe程序,運行后提示輸入string,無殼,ida分析
main函數,分析可知是vm的題目,dword_403040中的數據作為opcode傳入vm_operad函數中
進入vm_operad函數,分析可知
opcode為10時,讀取輸入,長度為15
opcode為1時,v4被賦值
opcode為7時,v4和下一個opcode比較,于是7后面的opcode為密文
其余的opcode為input的相關運算
提取出114個opcode,手動進行分類,并按照操作碼得到input[0~14]的變換過程
寫逆運算腳本即可得到flag
此題目也可以用angr一把梭
總結
以上是生活随笔為你收集整理的REVERSE-PRACTICE-BUUCTF-14的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python3 基础学习笔记 C07【函
- 下一篇: 招行现金分期手续费是多少 招行现金分期5