DIE查殼
32位,無殼
32位ida開啟
介面很難看,按\後得到加密程式
關注這個while迴圈,明明是個迴圈16次,但卻v1卻只有四個元素
從宣告變數這裡可以看到v1是int陣列,每個元素佔四位元組
梳理一下邏輯,v1是我們需要求的flag,也就是傳入的資料,這裡透過第一個while迴圈進行了兩次if判斷,處理輸入的flag,也就是v1中的每個位元組
最後用第二個whlie迴圈將處理後的v1與預設字串v12進行比較
可以逆向加密程式求flag,也可以爆破,這裡我們選擇爆破
enc = 'Qsw3sj_lz4_Ujw@l'
flag = ''
for i in range(len(enc)):
for k in range(128):
j = k
if j > 64 and j <= 90:
j = ((j - 51) % 26 + 65)
if j > 96 and j <= 122:
j = ((j - 79) % 26 + 97)
if j == ord(enc[i]):
flag += chr(k)
print(flag)
得到flag:Cae3ar_th4_Gre@t
開啟ida