(c) teso. all rights reversed.
exploiting format string vulnerabilities - Exploiting (einfachster Fall)

Exploiting (einfachster Fall)

zum Beispiel ähnlich wie QPOP 2.53 oder bftpd:
{
	char	outbuf[512];
        char    buffer[512];

        sprintf (buffer, "ERR Wrong command: %400s", user);
	sprintf (outbuf, buffer);
}
In diesem Fall, der nicht immer so offensichtlich ist, sondern sich auch in Unterfunktionen verstecken kann, ist es möglich die "%400s" Begrenzung im zweiten sprintf zu brechen. Der usersupplied String user muss dabei etwa so aussehen:

"%516d\x3c\xd3\xff\xbf<nops><shellcode>"

und gleicht einem herkömmlichen Bufferoverflow. Durch den Format-Parameter "%516d" wird outbuf bereits bei weitem überschrieben. Jetzt wird wie gewohnt die return address auf dem Stack ersetzt, und in den nop-buffer gesprungen.

Die GNU C Library enthält dabei einen Fehler, der bei der Verwendung von %<n>d mit n > 1000 zum Absturz führt. Das ist eine von vielen Möglichkeiten, die GNU C Library remote zu identifizieren ;-).
Wird %.<n>d verwendet, tritt das Problem nicht auf.

<< - < - > - >>