티스토리 뷰
이번 문제는 힌트가 없습니다. 한 번 보시죠.
너무 소스코드가 길어서 없어도 되는 부분은 없앴습니다.
중요한 부분은 Null Canary 를 넣어주기 때문에 인자를 길게 구성할 수 없다는 것입니다.
그래도 문제가 풀 수 있도록 구성해야 하니 fgets 함수를 제공해주네요. 어떻게 풀어야 할까요 ?
ebp 값을 저장해놓고 복구하는 과정이 없고, buffer 의 값을 0으로 모두 초기화시키니...
stdin 임시 버퍼를 사용하면 될 것 같습니다. 하지만 문제가 있습니다.
(gdb) x/4xw 0x008cb740
0x8cb740 <_IO_2_1_stdin_>: 0xfbad2288 0xb7fa9005 0xb7fa9005 0xb7fa9000
(gdb) x/4xw 0x008cb740
0x8cb740 <_IO_2_1_stdin_>: 0xfbad2288 0xb7fb5005 0xb7fb5005 0xb7fb5000
위의 결과는 stdin 임시 버퍼의 주소를 본 결과 입니다.
ASLR 이 걸려있어서 값이 고정되지 않는다는 것을 볼 수 있습니다.
그렇기때문에 하나의 주소를 정해서 공격 코드를 구성하고 브루트포스 공격을 해야합니다.
다양한 문제 풀이가 있을 수 있겠지만, 전 mprotect 를 이용하겠습니다.(처음 풀 때는 exec* 계열을 사용했습니다.)
| buf(260) | 0xb7fxx10c | leave | 0x31337 | +
| mprotect | 0xb7fxx130 | 0xb7fxx000 | 0x800 | 0x7 | +
| 0x90(256) | ShellCode(25) |
위와 같이 구성한 후에 브루트포스를 통해서 문제를 해결했습니다.
구성 자체는 간단하니 설명은 생략하겠습니다.
let me ride !
P.S. 오늘의 교훈: 귀찮을 때는 mprotect
'WarGame > LOB(Fedora_4)' 카테고리의 다른 글
[LOB] dark_stone -> cruel 문제 풀이 (0) | 2014.02.21 |
---|---|
[LOB] 문제 풀이를 위한 로컬 서버 구축 (0) | 2014.02.21 |
- Total
- Today
- Yesterday
- steampipe
- aws
- REACT
- ControlTower
- platform
- 우주와컴퓨터
- compliance
- conftest policy
- AWS #CIS
- stateType
- .get()
- CIS
- web
- findinglatestversion
- opensource
- JavaScript
- 4xx
- 계정정보저장
- ViaAWSService
- Cloud
- scp
- defaulttheme
- cloudsecurity
- security
- teplate
- fleet manager
- IAM
- 2xx
- temlate
- terraform
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |