
Automatisiert die Einrichtung von Binary-Exploitation-Challenges durch Patchen von ELF-Binaries, Abrufen passender Linker, Entstrippen der libc und Generieren von pwntools-Lösungsskripten.
pwninitEin Tool zur Automatisierung des Starts von Binary-Exploit-Challenges
ld-linux.so.*) herunterladen, der die bereitgestellte libc ohne Segfault laden kannpatchelf patchen, um das korrekte RPATH und den korrekten Interpreter für die bereitgestellte libc zu verwendenFühre pwninit aus
Führe pwninit in einem Verzeichnis mit den relevanten Dateien aus, und es erkennt, welche davon das Binary, die libc und der Linker sind. Falls die Erkennung falsch ist, kannst du die Pfade mit --bin, --libc und --ld angeben.
solve.py-TemplateWenn dir das Standard-Template nicht gefällt, kannst du dein eigenes verwenden. Gib einfach --template-path <path> an. Das Template-Format findest du in template.py. Die Namen der Bindungen exe, libc und ld können mit --template-bin-name, --template-libc-name und --template-ld-name angepasst werden.
solve.py dauerhaft verwendenDu kannst pwninit so einrichten, dass es dein eigenes Template automatisch lädt, indem du einen Alias zu deiner ~/.bashrc hinzufügst.
alias pwninit='pwninit --template-path ~/.config/pwninit-template.py --template-bin-name e'
Installiere pwninit oder
pwninit-bin aus dem AUR.
Du kannst statisch gelinkte musl-Binaries von der Releases-Seite herunterladen.
Führe folgenden Befehl aus:
cargo install pwninit
Dadurch wird das Binary in ~/.cargo/bin abgelegt.
Beachte, dass openssl, liblzma und pkg-config für den Build erforderlich sind.
$ ls
hunter libc.so.6 readme
$ pwninit
bin: ./hunter
libc: ./libc.so.6
setting ./hunter executable
fetching linker
https://launchpad.net/ubuntu/+archive/primary/+files//libc6_2.23-0ubuntu10_i386.deb
unstripping libc
https://launchpad.net/ubuntu/+archive/primary/+files//libc6-dbg_2.23-0ubuntu10_i386.deb
setting ./ld-2.23.so executable
copying ./hunter to ./hunter_patched
running patchelf on ./hunter_patched
writing solve.py stub
$ ls
hunter hunter_patched ld-2.23.so libc.so.6 readme solve.py
solve.py:
#!/usr/bin/env python3
from pwn import *
exe = ELF("./hunter_patched")
libc = ELF("./libc.so.6")
ld = ELF("./ld-2.23.so")
context.binary = exe
def conn():
if args.LOCAL:
r = process([exe.path])
if args.GDB:
gdb.attach(r)
else:
r = remote("addr", 1337)
return r
def main():
r = conn()
# good luck pwning :)
r.interactive()
if __name__ == "__main__":
main()