日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

XCTF-Reverse:logmein

發布時間:2025/3/15 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XCTF-Reverse:logmein 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目地址:https://adworld.xctf.org.cn/task/answer?type=reverse&number=4&grade=0&id=5078&page=1


發現程序是一個ELF文件,將其放入Linux環境中進行分析,發現程序是64位的
直接拖進ida64

step1、從main函數開始分析,使用F5查看偽代碼
題目說是涉及算法逆向,應該是通過一系列比較可以得到正確的結果

void __fastcall __noreturn main(__int64 a1, char **a2, char **a3) {size_t v3; // rsiint i; // [rsp+3Ch] [rbp-54h]char s[36]; // [rsp+40h] [rbp-50h]int v6; // [rsp+64h] [rbp-2Ch]__int64 v7; // [rsp+68h] [rbp-28h]char v8[8]; // [rsp+70h] [rbp-20h]int v9; // [rsp+8Ch] [rbp-4h]/* v8是":"AL_RT^L*.?+6/46"這個字符串 V7是一個ll型的十進制數28537194573619560 然后逆序進行計算的話,28537194573619560轉換為16進制是65626d61726168 接著轉文本得到ebmarah 然后通過別的題解了解到這個需要將其倒序使用harambe */v9 = 0;strcpy(v8, ":\"AL_RT^L*.?+6/46"); //將指定字符串復制到v8v7 = 28537194573619560LL;//ebmarah 單擊鼠標右鍵,先轉化為十六進制,再轉化為字符串v6 = 7;printf("Welcome to the RC3 secure password guesser.\n", a2, a3);printf("To continue, you must enter the correct password.\n");printf("Enter your guess: ");__isoc99_scanf("%32s", s);//s是用戶輸入的字符串,先進行比較長度v3 = strlen(s);if ( v3 < strlen(v8) )//如果長度比v8小,則進入sub_4007C0函數sub_4007C0();//雙擊查看,可以看出輸出字符串Incorrect password,然后,退出for ( i = 0; i < strlen(s); ++i )//如果長度大于或等與v8則進入下面的循環{if ( i >= strlen(v8) )sub_4007C0();if ( s[i] != (char)(*((_BYTE *)&v7 + i % v6) ^ v8[i]) )//如果輸入的字符串和經過運算后的后字符串不等,則進入sub_4007c0sub_4007C0();//輸出Incorrect password}sub_4007F0();//You entered the correct password!\nGreat job!\n }

補:這里(char)(((_BYTE )&v7 + i % v6) ^ v8[i])
BYTE 經查詢,是相當于unsigned char
然后可以得到一個二進制碼與后面v8[i]進行異或運算,然后轉換為char類型依次比較
所以把每一個比較的字符存儲進行輸出就可以得到flag
證明輸入的字符串就是flag

發現算法的關鍵在于 V6、V7、V8 的異或處理,通過分析得到如下代碼:

key1=":\"AL_RT^L*.?+6/46" #v8 key2="harambe" #v7 key3=7 #v6 flag='' for i in range(0,len(key1)):flag += chr(ord(key1[i])^ord(key2[i%key3])) print(flag)


RC3-2016-XORISGUD

ord():是將字符串轉換為ascii格式,為了方便運算
chr():是將ascii轉換為字符串

至于為什么要倒序使用harambe也是看了大佬的WP才知道的 [●′?`●] ~~
x86系列的CPU都是以小端序儲存數據的,即低位字節存入低地址,高位字節存入高地址,所以正確的字符串應該反過來

總結

以上是生活随笔為你收集整理的XCTF-Reverse:logmein的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。