xctf攻防世界maze writeup

2021-10-10 06:12:06 字數 1240 閱讀 8533

ida64開啟,f5分析:

輸入乙個24位字串,儲存到s1裡,經過一系列判斷處理,才能到達congratulations!

__int64 __fastcall main(__int64 a1, char **a2, char **a3)

' )// 要求輸入的s1長度為24,開頭和結束應該是nctf{}

// v3 = 5ll;

if ( strlen(&s1) - 1 > 5 )

if ( (unsigned __int8)v4 == 'o' ) // 如果等於o,v10就加1,賦值給v6,列數加1,向右

}else

if ( (unsigned __int8)v4 == '0' ) // 行數加1,向下

}label_15:

if ( !(unsigned __int8)sub_400690((__int64)asc_601060, v10, v9) )// 不是空格或者#就結束

goto label_22;

if ( ++v3 >= strlen(&s1) - 1 ) // 處理下乙個字元,並判斷是不是結尾

}} if ( asc_601060[8 * v9 + v10] != '#' ) // #是最終正確答案,從這裡看出,v9和v10就是不斷找尋正確的符號,從這裡看出v9類似於行數,v10類似於列數

goto label_20;

v7 = "congratulations!";

label_21:

puts(v7);

return 0ll;

}

結合asc_601060,畫出如下迷宮

正確順序:右下右右下下左下下下右右右右上上左左

答案:nctf

400690必須是空格或者#才能返回1。

__int64 __fastcall sub_400690(__int64 a1, int a2, int a3)

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攻防世界 Reverse IgniteMe

檔案用ida開啟,反編譯主函式 int cdecl main int argc,const char ar const char envp if v13 125 else else return result 看到返回 congratulations 的if條件,可猜測函式sub 4011c0為判斷...