comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[SOLUCIONADO] Violacion de segmento en una shellcode

  • 3 Respuestas
  • 1653 Vistas

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado proxy_lainux

  • *
  • Underc0der
  • Mensajes: 121
  • Actividad:
    0%
  • Reputación 0
  • belial grimoire
    • Ver Perfil
« en: Septiembre 02, 2013, 10:50:33 pm »
hola

Estaba haciendo una practica de los videos de open security training, pero tengo un problema en una shellcode, tengo una violacion de segmento al momento de ejecutar bash

en el video muestra como reemplazar alguno caracteres para eliminar los null y que la shellcode se ejecute, por ejemplo

/bin/bashABBBBCCCC

al reemplazarlo quedaria

/bin/bash089340000

que seria la ejecucion de execve

int execve(const char *filename, char *const argv[], char *const envp[])

asi es como lo hice

Código: ASM
  1. [BITS 32]
  2.  
  3. section .text
  4.  
  5. global _start
  6.  
  7. _start:
  8.  
  9. jmp callstatment
  10.  
  11. shellcode:
  12.  
  13. pop esi
  14. xor eax, eax
  15. mov byte[esi + 0x9], al
  16. mov dword[esi + 0xA], esi
  17. mov dword[esi + 0xE], eax
  18.  
  19. mov byte al, 11
  20. mov ebx, esi
  21. lea ecx, [esi + 0x9]
  22. lea edx, [esi + 0xE]
  23. int 0x80
  24.  
  25.  
  26. callstatment:
  27.  
  28. call shellcode
  29. shellvariable: db "/bin/bashABBBBCCCC",0

pero me dice que hay una violacion de segmento, hice una depuracion con GDB y me sale este mensaje

Código: [Seleccionar]
0x08048065 in shellcode ()
y en esa direccion se encuentra

Código: [Seleccionar]
Dump of assembler code for function shellcode:
   0x08048062 <+0>: pop    %esi
   0x08048063 <+1>: xor    %eax,%eax
=> 0x08048065 <+3>: mov    %al,0x9(%esi)
   0x08048068 <+6>: mov    %esi,0xa(%esi)
   0x0804806b <+9>: mov    %eax,0xe(%esi)
   0x0804806e <+12>: mov    $0xb,%al
   0x08048070 <+14>: mov    %esi,%ebx
   0x08048072 <+16>: lea    0x9(%esi),%ecx
   0x08048075 <+19>: lea    0xe(%esi),%edx
   0x08048078 <+22>: int    $0x80

Imagino que entonces el error se produce aqui

Código: [Seleccionar]
mov byte[esi + 0x9], al
Alguien sabe que podria estar fallando?


« Última modificación: Agosto 27, 2014, 08:57:27 pm por Expermicid »

Desconectado Juan

  • *
  • Underc0der
  • Mensajes: 159
  • Actividad:
    0%
  • Reputación 0
  • Ex-Drinky
    • Ver Perfil
« Respuesta #1 en: Septiembre 02, 2013, 11:30:03 pm »
No tengo Linux y no puedo depurar, pero para empezar, retorna las funciones:

Código: ASM
  1.     [BITS 32]
  2.      
  3.     section .text
  4.      
  5.     global _start
  6.      
  7.     _start:
  8.      
  9.     jmp callstatment
  10.      
  11.     shellcode:
  12.      
  13.     pop esi
  14.     xor eax, eax
  15.     mov byte[esi + 0x9], al
  16.     mov dword[esi + 0xA], esi
  17.     mov dword[esi + 0xE], eax
  18.      
  19.     mov byte al, 11
  20.     mov ebx, esi
  21.     lea ecx, [esi + 0x9]
  22.     lea edx, [esi + 0xE]
  23.     int 0x80
  24.    
  25.     ret ; RETORNO FUNCION.
  26.      
  27.     callstatment:
  28.      
  29.     call shellcode
  30.     ret ; RETORNO.
  31.  
  32.     shellvariable: db "/bin/bashABBBBCCCC",0

Sino estarías creando un bucle infinito.

saludos.

Desconectado proxy_lainux

  • *
  • Underc0der
  • Mensajes: 121
  • Actividad:
    0%
  • Reputación 0
  • belial grimoire
    • Ver Perfil
« Respuesta #2 en: Septiembre 02, 2013, 11:46:32 pm »
si sirve de algo, escribi el codigo del ejemplo, es para AT&T, tambien lo compile pero me muestra el mismo error

Código: ASM
  1. .text
  2.  
  3. .global _start
  4.  
  5. _start:
  6.  
  7. jmp MyCallStatement
  8.  
  9. ShellCode:
  10.  
  11. popl %esi
  12. xorl %eax, %eax
  13. movb %al, 0x9(%esi)
  14. movl %esi, 0xa(%esi)
  15. movl %eax, 0xe(%esi)
  16.  
  17. movb $11, %al
  18. movl %esi, %ebx
  19. leal 0xa(%esi), %ecx
  20. leal 0xe(%esi), %edx
  21. int $0x80
  22.  
  23. MyCallStatement:
  24.  
  25. call ShellCode
  26. ShellVariables:
  27.          .ascii "/bin/bashABBBBCCCC"
« Última modificación: Septiembre 03, 2013, 12:54:18 am por grimoire »

Desconectado proxy_lainux

  • *
  • Underc0der
  • Mensajes: 121
  • Actividad:
    0%
  • Reputación 0
  • belial grimoire
    • Ver Perfil
« Respuesta #3 en: Septiembre 03, 2013, 06:12:41 pm »
hola

Pues esta solucionado a medias, saque los opcodes, los ejecute como cualquier shellcode en C y me funciono, pero cuando ejecuto el archivo en ASM no funciona, talvez es por meter el string en text, o no tengo idea de porque produce ese fallo

 

¿Te gustó el post? COMPARTILO!



[SOLUCIONADO] ¿Kali Linux o Kali Linux Ligth ?

Iniciado por worq

Respuestas: 2
Vistas: 8348
Último mensaje Noviembre 21, 2017, 12:28:54 pm
por Codig0Bit
[SOLUCIONADO] ¿Como publicar un software como software libre?

Iniciado por FuriosoJack

Respuestas: 2
Vistas: 1709
Último mensaje Mayo 23, 2017, 07:24:22 am
por HATI
[SOLUCIONADO] Multiuploader de imagenes con mysql, hosting de imagenes con mysql

Iniciado por graphixx

Respuestas: 4
Vistas: 2290
Último mensaje Marzo 26, 2013, 05:42:58 pm
por Xt3mP
[SOLUCIONADO] Linux Mint, errores, errores y mas errores...

Iniciado por n1sendev

Respuestas: 12
Vistas: 3186
Último mensaje Noviembre 22, 2017, 06:50:55 am
por RuidosoBSD
[SOLUCIONADO] Ayuda urgente con Virus "Virus.Win32Sality"

Iniciado por Napsters

Respuestas: 6
Vistas: 3565
Último mensaje Junio 11, 2012, 03:38:18 am
por Satyricon