일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- LoB
- 파일 시스템
- HTML
- 암호수학
- web
- 파이썬
- 두근두근 자료구조
- 자료구조
- windosw 문자열
- 큐
- 재귀
- C
- windosws wbcs
- ftz
- c언어
- 미로 탐색 알고리즘
- System
- 시간복잡도
- War Game
- ftz level13
- level13
- SWiFT
- pwnable.kr
- 스택
- Java
- 백준
- PHP
- Stack
- 정렬 알고리즘
- OSI
Archives
- Today
- Total
나의 기록, 현진록
[War Game] ftz level13 본문
반응형
ftz level13
다음은 hint의 내용이다.
버퍼 오버플로우 기법으로 ret 값에 쉘코드의 주소를 넣으면 된다.
단, i 변수에 저장된 값이 0x1234567을 그대로 보존해야만 한다.
ret까지의 거리와 i 변수의 거리를 알아야 한다.
ebp부터 sfp까지의 거리는 0x418 -> 1048byte이다.
1052byte부터 ret의 주소
0x1234567이 저장된 곳을 확인해보자(굳이 안 해도 된다.).
0x01234567(==0x1234567)이 저장되어 있음
그렇다면 ebp부터 i변수가 저장된 곳은 어디일까
AT&T 문법에서 intel 문법으로 바꿔보자.
main+69를 보면
0x1234567을 ebp-12와 비교한다.
hint의 내용에서 if문에 속한다.
ebp-12은 i 변수라는 의미이다.
ebp-1048이 sfp까지의 거리이다.
그렇다면 i 변수는 1036byte부터 시작할 것이다.
환경변수에 쉘코드를 저장하고 주소를 출력한다.
페이로드 작성
ret 값은 1052byte부터 이다.
[ buf + 1024 ] + [ 쓰레기 + 12 ] + [ i 변수 + 4 ] + [ 쓰레기 + 8 ] + [ sfp + 4 ] = 1052
이 다음에 쉘코드를 넣으면 된다.
반응형
'War Game > ftz' 카테고리의 다른 글
[War Game] ftz level15 (0) | 2018.01.28 |
---|---|
[War Game] ftz level14 (0) | 2018.01.28 |
[War Game] ftz level12 (0) | 2018.01.26 |
[War Game] ftz level11 (0) | 2018.01.26 |
[War Game] ftz level10 (0) | 2018.01.19 |