일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 암호수학
- 정렬 알고리즘
- ftz
- OSI
- LoB
- c언어
- level13
- Stack
- windosws wbcs
- PHP
- SWiFT
- 자료구조
- ftz level13
- pwnable.kr
- War Game
- 시간복잡도
- 파이썬
- web
- 파일 시스템
- windosw 문자열
- 미로 탐색 알고리즘
- 두근두근 자료구조
- Java
- 스택
- HTML
- C
- System
- 백준
- 재귀
- 큐
Archives
- Today
- Total
나의 기록, 현진록
[War Game] LOB skeleton 본문
반응형
LOB skeleton
buffer로부터 +44~48 byte 바이트를 제외하고 모두 0으로 초기화된다.
ret이후부터 0xbfffffff까지의 영역은 ret부터 커널 전까지의 영역을 말한다.
어디 영역을 사용해야 하는 것일까?
공부할 때 모르는 부분이 있을 때는
답안을 보고 공부를 하는 것도 한가지 방법이라고 생각한다.
다른 블로그를 보고 공유 라이브러리를 이용하는 문제라는 것을 알게 되었다.
다음은 메모리의 구조이다.
[kernel] [program name] [env] [argv] -중략- [buf] [ret] [공유 라이브러리] [heap] [data]
커널 이후부터 (0xbfffffff)
ret까지 초기화 된다면
공유 라이브러리는 초기화 되지 않을 것이다.
프로그램을 시작할 때 공유 라이브러리가 가장 먼저 적재된다.
이때 적재란 데이터가 메모리에 할당되는 것을 말한다.
LD_PRELOAD라는 환경변수에 라이브러리를 등록하면
다른 공유 라이브러리보다 먼저 참조하게 된다고 한다.
단, LD_PRELOAD에 함수나 변수가 등록되지 않을 경우엔
그 외의 공유 라이브러리를 참조한다고 한다.
이름이 쉘코드인 파일을 하나 만들어 LD_PRELOAD 환경변수에 등록해보자.
golem.c 파일을 가지고 해도 된다.
-fPIC
object file 파일을 만드는 옵션
-shared
공유 라이브러리를 우선으로 링크하는 옵션
공유 라이브러리로 사용될 오브젝트 파일을 만드는 옵션이다.
이 파일을 그대로 LD_PRELOAD 환경변수에 넣는다.
환경변수에 적용되었으니
환경변수가 저장된 주소를 확인한다.
저장된 주소는 0xbffff542
이 주소 이후의 주소를 ret값에 덮는다.
페이로드 작성
반응형
'War Game > LOB' 카테고리의 다른 글
[War Game] LOB darkknight (0) | 2018.02.19 |
---|---|
[War Game] LOB golem (0) | 2018.02.14 |
[War Game] LOB vampire (0) | 2018.02.11 |
[War Game] LOB troll (0) | 2018.02.09 |
[War Game] LOB orge (0) | 2018.02.08 |