[BUUCTF] REVERSE - [Zer0pts2020] easy strcmp

[Zer0pts2020] easy strcmp

annektieren

Schritt

  1. Routineinspektion, 64-Bit-Programm
    Fügen Sie hier eine Bildbeschreibung ein
  2. 64-Bit-IDA ist offen. Ein
    Fügen Sie hier eine Bildbeschreibung ein
    sehr einfaches Programm, das das a2-Array mit zer0pts{********CENSORED********}derselben Eingabeaufforderung richtig vergleicht!
    Dann müssen Sie wissen, welche Operationen a2 durchlaufen hat, bevor Sie die Hauptfunktion aufrufen. Dies sollte daran liegen, dass es sich nicht um eine exe-Datei handelt. Ich kann sie nicht anpassen. Normalerweise muss ich sie anpassen, um herauszufinden, wo der eingehende Vorgang ausgeführt werden soll string a2. Operation Ich habe mir die Funktionsliste neben mir angesehen und festgestellt, dass die Funktion mit dem Parameter a2
    Fügen Sie hier eine Bildbeschreibung ein
    um 3 Stellen nach rechts verschoben ist, was einer Aufteilung des Strings in 8 Gruppen und dem entsprechenden Wert entspricht von qword_201060 wird subtrahiert. Get zer0pts{********CENSORED********}
    Fügen Sie hier eine Bildbeschreibung ein
    Hinweis: Der Speicher wird als Little-Endian-Speicher gespeichert, daher müssen wir die Reihenfolge nach der Konvertierung der Zeichenfolge in ASCII umkehren
enc = "********CENSORED********"
m = [0x410A4335494A0942, 0x0B0EF2F50BE619F0, 0x4F0A3A064A35282B]
 
import binascii
 
flag =b""  #由于是字节操作,需要在前面加上b
for i in range(3):
    p = enc[i*8:(i+1)*8]     #将enc字符串8位一组分开
    print(p)
    a = binascii.b2a_hex(p.encode('ascii')[::-1])   #将分开后的字符串转每一位转换成ascii,然后逆序
    print(a)
    b = binascii.a2b_hex(hex(int(a,16) + m[i])[2:])[::-1]   #(enc[i]的ascii+m[i])的结果是16进制,[2::]是舍弃开头的0x,然后[::-1]逆序
    print(b)
    print('\n')

    flag += b  #拼凑每组还原后的结果
    
print (flag)

Fügen Sie hier eine Bildbeschreibung ein

Ich denke du magst

Origin blog.csdn.net/mcmuyanga/article/details/113567716
Empfohlen
Rangfolge