[BUUCTF] PWN —— picoctf_2018_leak_me (setzt '\ x00' umgeht die Ausgabe sensibler Daten)

picoctf_2018_leak_me

annektieren

Schritt

  1. Routineinspektion, 32-Bit, nx-Schutz ist aktiviert
    Fügen Sie hier eine Bildbeschreibung ein
  2. Führen Sie es lokal aus, um die allgemeine Situation anzuzeigen
    Fügen Sie hier eine Bildbeschreibung ein

  3. Fügen Sie hier eine Bildbeschreibung ein
    Der ungefähre Ablauf des 32-Bit-IDA-Ladeprogramms besteht darin, zuerst den Namen und dann das Kennwort einzugeben. Auf dem Zielcomputer sollte eine password.txt vorhanden sein, um zu überprüfen, ob die Eingabe korrekt ist Die Flag-Funktion wird aufgerufen und die Flag-Funktion druckt das Flag aus
    Fügen Sie hier eine Bildbeschreibung ein
  4. Die Position des Parameters v5 (Speichername) und des Parameters s (Speicherflag) auf dem Stapel ist nicht weit entfernt, und wenn der Parameter v5 in Daten eingelesen wird, können die Parameter s überschrieben werden. Der
    Fügen Sie hier eine Bildbeschreibung ein
    Fügen Sie hier eine Bildbeschreibung ein
    Unterschied zwischen ihnen 0x154-0x54=0x100und Die Länge der Daten, die wir für v5 eingeben, beträgt genau 0x100. Sie können v5 füllen, gefolgt von s. 34 Zeilen in der Hauptfunktion drucken v5, Puts werden gestoppt, wenn sie auf '\ x00' stoßen, und der Inhalt in v5 ist jetzt 0x100*a+password+'\x00'*4c, so dass das Passwort zusammen mit ihm gedruckt wird.
    Hier verwende ich zyklisch, um die Zeichenfolge zum Lesen des Passworts zu generieren, um das Passwort zu
    Fügen Sie hier eine Bildbeschreibung ein
    erhaltena_reAllY_s3cuRe_p4s$word_f85406
  5. Als nächstes erneut nc und geben Sie das Passwort ein
    Fügen Sie hier eine Bildbeschreibung ein

Sie müssen für diese Frage überhaupt keine exp schreiben, aber lassen Sie uns nach dem Lesen des Artikels darüber schreiben.

from pwn import *

p = remote("node3.buuoj.cn",28171)

password = "a_reAllY_s3cuRe_p4s$word_f85406"
p.sendlineafter("What is your name?\n","A")
p.sendlineafter("Please Enter the Password.\n",password)

p.interactive()

Ich denke du magst

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