日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

REVERSE-PRACTICE-BUUCTF-11

發(fā)布時間:2023/12/10 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 REVERSE-PRACTICE-BUUCTF-11 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

REVERSE-PRACTICE-BUUCTF-11

    • [FlareOn4]IgniteMe
    • [MRCTF2020]Xor
    • [GKCTF2020]BabyDriver
    • [MRCTF2020]hello_world_go

[FlareOn4]IgniteMe

exe程序,運行后提示輸入flag,無殼,ida分析
主邏輯在start函數(shù)中,讀取輸入后check,驗證輸入成功則輸出“G00d j0b!”

分析sub_401050函數(shù),input和v4異或后放入byte_403180,v4有一個初始值,且在循環(huán)中不斷變化,實際上的運算效果為
當i==input_len-1時,byte[i]=v4^input[i],
當i等于從input_len-2到0時,byte[i]=input[i]^input[i+1]
運算完畢后byte_403180數(shù)組和byte_403000數(shù)組比較,驗證輸入

寫腳本前需要先得到v4的那個初始值,直接查函數(shù)或者調(diào)試得到v4的初始值為4,寫腳本即可得到flag

[MRCTF2020]Xor

exe程序,運行后提示輸入flag,輸入錯誤打印“Wrong”,無殼,ida分析
字符串交叉引用來到主邏輯函數(shù)部分,不能F5反編譯,直接看匯編
主要就是將輸入與對應的下標異或,input[i]^i

寫腳本即可得到flag

[GKCTF2020]BabyDriver

sys文件,ida分析
字符串交叉引用來到sub_140001380函數(shù),分析可知是個走迷宮的題目,map的長度為224,具體分析可知map為14x16,即14行16列的地圖,起始點為o,終止點為#,不能碰到*,23-上,37-下,36-左,38-右

__int64 __fastcall sub_140001380(__int64 a1, __int64 a2) {__int64 v2; // rbx__int64 v3; // rdi__int64 v4; // raxint v5; // ecx__int16 *v6; // rsi__int64 v7; // rbp__int16 v8; // dxchar v9; // dlCHAR *v10; // rcxv2 = a2;if ( *(_DWORD *)(a2 + 48) >= 0 ){v3 = *(_QWORD *)(a2 + 24);v4 = *(_QWORD *)(a2 + 56) >> 3;if ( (_DWORD)v4 ){v5 = index; // v5=10v6 = (__int16 *)(v3 + 2);v7 = (unsigned int)v4;while ( *(_WORD *)(v3 + 4) ){ LABEL_28:v6 += 6;if ( !--v7 )goto LABEL_29;}map[v5] = '.';v8 = *v6;if ( *v6 == 23 ) // 23-上{if ( v5 & 0xFFFFFFF0 ){v5 -= 16;goto LABEL_21;}v5 += 208;index = v5;}if ( v8 == 37 ) // 37-下{if ( (v5 & 0xFFFFFFF0) != 208 ){v5 += 16;goto LABEL_21;}v5 -= 208;index = v5;}if ( v8 == 36 ) // 36-左{if ( v5 & 0xF ){--v5;goto LABEL_21;}v5 += 15;index = v5;}if ( v8 != 38 ) // 38-右goto LABEL_22;if ( (v5 & 0xF) == 15 )v5 -= 15;else++v5; LABEL_21:index = v5; LABEL_22:v9 = map[v5];if ( v9 == '*' ) // 不能碰到*{v10 = "failed!\n";}else{if ( v9 != '#' ) // 起始點為o,終止點為#{ LABEL_27:map[v5] = 'o';goto LABEL_28;}v10 = "success! flag is flag{md5(input)}\n";}index = 16;DbgPrint(v10);v5 = index;goto LABEL_27;}} LABEL_29:if ( *(_BYTE *)(v2 + 65) )*(_BYTE *)(*(_QWORD *)(v2 + 184) + 3i64) |= 1u;return *(unsigned int *)(v2 + 48); }

由于是sys文件,其使用的不是ascii碼,而是鍵盤碼,可知23-I-上,37-K-下,36-J-左,38-L-右

走完迷宮,再md5散列路線即可得到flag

[MRCTF2020]hello_world_go

elf文件,無殼,ida分析
左側(cè)函數(shù)窗最后一個main_main函數(shù),內(nèi)容很亂,在runtime_memequal函數(shù)的一個參數(shù)unk_4D3C58中找到了flag

__int64 __fastcall main_main(__int64 a1, __int64 a2) {__int64 v2; // r8__int64 v3; // r9__int64 v4; // r8__int64 v5; // r9__int64 v6; // rdx__int64 v7; // r8__int64 v8; // rcx__int64 v9; // rdx__int64 v10; // r9signed __int64 v11; // rax__int64 result; // rax__int64 v13; // ST58_8__int64 *v14; // [rsp+8h] [rbp-A8h]char v15; // [rsp+18h] [rbp-98h]__int64 *v16; // [rsp+60h] [rbp-50h]__int128 v17; // [rsp+68h] [rbp-48h]__int128 v18; // [rsp+78h] [rbp-38h]__int128 v19; // [rsp+88h] [rbp-28h]__int128 v20; // [rsp+98h] [rbp-18h]if ( (unsigned __int64)&v18 + 8 <= *(_QWORD *)(__readfsqword(0xFFFFFFF8) + 16) )runtime_morestack_noctxt();runtime_newobject(a1, a2);v16 = v14;*(_QWORD *)&v20 = &unk_4AC9C0;*((_QWORD *)&v20 + 1) = &off_4EA530;fmt_Fprint(a1, a2, (__int64)&v20, (__int64)&unk_4AC9C0, v2, v3, (__int64)&go_itab__os_File_io_Writer, os_Stdout);*(_QWORD *)&v19 = &unk_4A96A0;*((_QWORD *)&v19 + 1) = v16;fmt_Fscanf(a1,a2,(__int64)&go_itab__os_File_io_Reader,(__int64)&v19,v4,v5,(__int64)&go_itab__os_File_io_Reader,os_Stdin,(__int64)&unk_4D07C9,2LL);v8 = v16[1];if ( v8 != 24 )goto LABEL_3;v13 = *v16;runtime_memequal(a1, a2, v6, (unsigned __int64)&unk_4D3C58);// flag{hello_world_gogogo}if ( !v15 ){v8 = 24LL; LABEL_3:runtime_cmpstring(a1, a2, (__int64)&unk_4D3C58, v8, v7);if ( (signed __int64)&v19 >= 0 )v11 = 1LL;elsev11 = -1LL;goto LABEL_5;}v11 = 0LL; LABEL_5:if ( v11 ){*(_QWORD *)&v17 = &unk_4AC9C0;*((_QWORD *)&v17 + 1) = &off_4EA550; // Wrongresult = fmt_Fprintln(a1,a2,v9,(__int64)&go_itab__os_File_io_Writer,v7,v10,(__int64)&go_itab__os_File_io_Writer,os_Stdout);}else{*(_QWORD *)&v18 = &unk_4AC9C0;*((_QWORD *)&v18 + 1) = &off_4EA540; // OK!You are right!result = fmt_Fprintln(a1,a2,v9,(__int64)&go_itab__os_File_io_Writer,v7,v10,(__int64)&go_itab__os_File_io_Writer,os_Stdout);}return result; }

總結

以上是生活随笔為你收集整理的REVERSE-PRACTICE-BUUCTF-11的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。