【NewStarCTF】逆向—week3
這周考了挺多知識點的…
Zzzzzz3333
這題明顯是在考z3求解器的應用,本人對此了解不多就不多BB了 )。附上我寫的腳本,z3的基本格式大致都是長這樣
1 | import z3 |
將求出的key輸入到原程序中,就可直接出flag
EzTea
程序的運行流程很簡單,就是將用戶輸入放到一個函數進行加密,然後對比。等等分析後可以看出該加密函數是3種Tea加密中的xxtea
進入加密函數,將紅框中的代碼與xxtea
的加密代碼( 附在了下方 )進行對比,可以發現基本上是差不多的,只修改了部分地方
附:xxtea
的加解密通用腳本,n>1
時為加密、n<-1
時為解密
1 |
|
對比後發現修改的地方為:DELTA
、z>>5
與成z>>4
、z<<4
變成z<<5
1 | // 以下是修改後: |
最終的解密腳本如下:
1 |
|
Annnnnggrr
這題考點是Angr
,入門Angr
的話建議可以看下這個視頻→click_me,講得還是相當不錯的。以下附上我寫的腳本,每行代碼都有大致的注釋
1 | import angr |
注:腳本運行→python solve.py Annnnnggrr.exe
The Slider’s Labyrinth
main
函數因為存在花指令,導致IDA無法正常分析,找到下圖這個地方,使用IDA插件Keypatch
將0x04010E5地址處nop
掉
nop
掉後,若看到下方有形如這樣IDA未分析出來的地方,可在對著第1行按c
,手動將其分析成代碼
接著向下看,發現第2處花指令,用同樣方法處理
處理完後,選中main
函數的所有部分( 0x00401080~0x04011DC ),然後按P
將選中部分生成一個函數,然後再按F5
查看偽代碼
- 雖然還有一部分未能正常分析出來,但並不影響解題
- 可以看出這是一道迷宮題,
w
、a
、s
、d
對應上下左右四個方向,且每次會走好幾步,直到遇到#
才會停下,然後繼續輸入,直到到達O
才結束 - 最後將走出來的路徑進行
md5(path)
就得到flag
在shift+F12
中找到地圖,將其dump出來
dump出來後發現地圖大小為160
,而由下圖可以看出每行占16
,所以這是一個16*10
的地圖
- 整理後地圖長這樣,
s
是起始位置( 由v8 = 17
這句判斷出來的 ) - 然後就是走迷宮,我的方法是手動走,第一次走的路徑為:
sdsdwdsasdwds
,提交後發現不對 - 由此可知路徑不唯一,應該是要最短的路徑。第二次走的路徑為:
dsasdwds
,結果就對了,看來我走迷宮還是有點東西的,也挺幸運^^
funnyOTL
- 整體加密邏輯如下圖所示( 有大致注釋 ),若知道
posLogMe
的值就能很輕易地求出flag,但posLogMe
是隨機數,所以其中一種做法或許可以爆破( 但我沒爆出來 ),所以只能動調獲取 - IDA動調ELF文件需用到Linux虛擬機,我用的是Ubuntu22.04版本,建議使用這個版本來動調( 之前用20.04版本連文件都打不開。
真係哭撚左…) IDA動調ELF文件的教程( 以Ubuntu22.04為例,需要先開放23946端口,指令:
sudo ufw allow 23946/tcp
)
動調→獲取每次循環的posLogMe
並記錄下來
腳本:
1 |
|