檔案用ida開啟,反編譯主函式
int __cdecl main
(int argc,
const
char
**ar**,
const
char
**envp)}if
( v13 ==
125)
else
}else
return result;
}
看到返回「congratulations」的if條件,可猜測函式sub_4011c0
為判斷flag的關鍵函式,進去看內容:
bool __cdecl sub_4011c0
(char
*a1)
的內容 v8[v6]=0
; v5 =0;
v3 =0;
memset
(v4,0,
0x20u);
for( i =0;
;++i )if(
!v3 && v8[i]
>=
'a'&& v8[i]
<=
'z')
v8[i]+=
32;v4[i]
= byte_4420b0[i]
^sub_4013c0
(v8[i]);
v3 =0;
}return
strcmp
("gondphygjpekruv
其中函式sub_4013c0
內容為:
int __cdecl sub_4013c0
(int a1)
根據函式邏輯反向運算就能得到flag
t =[13
,19,23
,17,2
,1,32
,29,12
,2,25
,47,23
,43,36
,31,30
,22,9
,15,21
,39,19
,38,10
,47,30
,26,45
,12,34
,4]s=
"gondphygjpekruv'
)
執行得到flag
eis
xctf 攻防世界 key
好久沒有去攻防世界玩了 主要是這段時間太忙了 有很多 雜事 纏身吧 然後沒事看看堆 就。看自閉了 然後這道題其實還是很簡單的 有很多函式 還有指令其實感覺 用od 或者ida 直接靜態 就能查出來什麼意思 就沒有必要 去深究 裡面的演算法 點進去 主要的函式 發現了這個東西 注意這個 memory ...
XCTF攻防世界warmup
擷取字串從0到?重新賦值給 page page,0 mb strpos page 尋找第乙個?的座標 if in array page,whitelist page urldecode page url解碼 page mb substr page,0,mb strpos page if in arr...
xctf攻防世界maze writeup
ida64開啟,f5分析 輸入乙個24位字串,儲存到s1裡,經過一系列判斷處理,才能到達congratulations!int64 fastcall main int64 a1,char a2,char a3 要求輸入的s1長度為24,開頭和結束應該是nctf v3 5ll if strlen s1...