(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. | ||
<< - < - > - >> |