| (c) teso. all rights reversed. | ||
| exploiting format string vulnerabilities - 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. | ||
| << - < - > - >> | ||