Badchars

bo

los badchars son caracteres que no funcionan (inválidos) ya que el programa a explotar no los acepta, esto puede afectar en nuestro shellcode y no nos van a permitir seguir, por eso hay que detectarlos y mitigarlos.

pip install badchars # libreria necesaria
badchars -f python # nos dara una lista de chars
  • lo que nos de este comando hay que copiarlo desde el primer paréntesis "(" hasta el final

este lo pegaremos en nuestro exploit, para eso cambiaremos la variable payload

payload = contenido_que_copiaste

Ahora, en nuestro immnity debugger vamos a utilizar el siguiente comando de mona que nos ayudara a encontrar los badchars :

!mona bytearray -b ''\x00"

nos abrira esta ventana y en el directorio de trabajo de mona que definimos anteriormente se creara el archivo bytearray donde vienen los badchars

mona

o también podemos ver el contenido en la parte donde esta nos dice [+] preparing output file

aqui podemos ver los archivos :

bytearray.txt

Debemos abrir en immunity debugger denuevo el brainpan porque recordemos que ha hecho crash

Enviamos nuestro exploit nuevo y vemos que ha crasheado.

En immunity debugger debemos identificar el ESP

ESP

en mi caso y el caso de los que están siguiendo paso a paso la guía para resolver la brainpan nuestro ESP debería de ser de 005FF910 , este lo usaremos para descubrir cuales son los badchars mediante mona

El ESP (Extended Stack Pointer) es un registro de la CPU que es clave para manejar la pila (stack) en la memoria (básicamente un controlador o gestor). La pila es una estructura de datos que se utiliza para almacenar información temporal durante la ejecución de un programa, como las direcciones de retorno y los valores locales de las funciones.

Porque se usa el ESP para reconocer los badchars ? : Porque Cuando realizas un buffer overflow, estás sobrescribiendo la pila para manipular valores como la dirección de retorno (que apunta a la siguiente instrucción a ejecutar). Para hacer esto de manera exitosa, necesitas colocar un payload (como un shellcode) en la pila.

!mona compare -f C:\ubicacion\del\directorio\donde\mona\trabaja\bytearray.txt -a ESP_AQUI

al ejecutar el comando en immunity debugger, mona nos dirá si hay badchars, haciendo una comparación junto al archivo que habíamos generado anteriormente.

hemos ejecutado el comando y se nos habre la siguiente ventana :

mona

En este caso, vemos la sección de badchars vacía, por lo que esta maquina (afortunadamente) no tiene badchars. En el caso de encontrar algún badchar solo es cuestión de ir a tu exploit y eliminarlos del payload.

Last updated