일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- c언어
- 시간복잡도
- HTML
- 재귀
- 파이썬
- SWiFT
- web
- 큐
- level13
- 미로 탐색 알고리즘
- Java
- 자료구조
- System
- windosw 문자열
- windosws wbcs
- ftz
- 두근두근 자료구조
- 암호수학
- War Game
- LoB
- 백준
- C
- 정렬 알고리즘
- pwnable.kr
- 파일 시스템
- 스택
- Stack
- ftz level13
- PHP
- OSI
Archives
- Today
- Total
나의 기록, 현진록
[War Game] LOB bugbear 본문
반응형
LOB bugbear
execve의 주소와 argv[44]의 입력된 값이 같아야한다.
execve함수를 이용한 RTL 기법을 사용해보자.
다음은 execve 함수의 간단한 설명이다.
설명
execve 함수는 새로운 프로그램을 실행시킴과 동시에 현재 프로그램을 종료한다.
사용법
execve (const char *filename, char *const argv [], char *const envp[]);
1. filename이 가리키는 파일을 실행한다.
2. argv는 새로 시작할 프로그램에 전달될 인자이다.
3. 설정된 환경변수를 사용한다.
페이로드는
1. main ret 값에 execve 주소를 덮어 함수를 실행한다,
2. execve 함수의 첫번째인자가 실행되고 exit 함수로 인해 바로 종료된다.
3. 종료되어 execve ret에 저장되어 있는 system 함수를 실행할 때 두번째 인자인 /bin/sh이 실행된다.
각각의 주소를 구해보자.
execve 주소 0x400a9d48
sysytem 주소 0x40058ae0
exit 주소 0x400391e0
/bin/sh 주소 0x400fbff9
NULL 주소 0xbffffffc
페이로드 작성
[ ebp 44 byte ] [ (main ret) execve 주소 ] [ (execve ret) system 주소 ] [ exit 주소 ] [ /bin/sh 주소 ] [ NULL ]
페이로드를 " " 로 감싼 이유는 \x0a를 인식하지 못하기 때문이다.
반응형
'War Game > LOB' 카테고리의 다른 글
[War Game] LOB assassin (0) | 2018.03.01 |
---|---|
[War Game] LOB giant (0) | 2018.02.27 |
[War Game] LOB darkknight (0) | 2018.02.19 |
[War Game] LOB golem (0) | 2018.02.14 |
[War Game] LOB skeleton (0) | 2018.02.12 |