[61dctf] stheasy

題目下載:ctf2.b93676be23733b2fcda3988c1133c1c1

解題思路:

是個 Linux 下的 ELF 文件,拖到 IDA 中分析,定位 main 函數,F5 看代碼。

邏輯很簡單,先輸入 flag,然後重點在 if 語句的判斷,也就是 sub_8048630 函數是對 flag 進行檢查,雙擊進去。

s 就是輸入的 flagv1 顯然是 flag 的長度,首先 v1 要等於 29,可以確定 flag 長度是29,爲了清晰點,先修改一下變量名。

可以確定 flag 要滿足的邏輯:flag[i] == A[ B[i] / 3 - 2 ]。其中,A、B數組在下圖

用 python 腳本跑出 flag。此處要注意,A 數組的第一個字節 0x6C 和 B 數組的 0x48 要包含進來。

#coding:utf8
A = 'lk2j9Gh}AgfY4ds-a6QW1#k5ER_T[cvLbV7nOm3ZeX{CMt8SZo]U'
B = [0x48, 0x5d, 0x8d, 0x24, 0x84, 0x27, 0x99, 0x9F, 0x54, 0x18, 0x1E, 0x69, 0x7E, 0x33, 0x15, 0x72, 0x8D, 0x33, 0x24, 0x63, 0x21, 0x54, 0x0C, 0x78, 0x78, 0x78, 0x78, 0x78, 0x1B]


flag = ''

for i in range(len(B)):
    flag += A[B[i]/3 - 2]

print flag
# kctf{YoU_hAVe-GOt-fLg_233333}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章