일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- ftz level13
- 미로 탐색 알고리즘
- 자료구조
- System
- ftz
- 재귀
- OSI
- 암호수학
- 큐
- web
- 파이썬
- 정렬 알고리즘
- 백준
- 시간복잡도
- pwnable.kr
- level13
- Stack
- 파일 시스템
- 스택
- windosw 문자열
- PHP
- SWiFT
- 두근두근 자료구조
- c언어
- HTML
- C
- War Game
- Java
- windosws wbcs
- LoB
Archives
- Today
- Total
나의 기록, 현진록
[War Game] LOB goblin 본문
반응형
LOB goblin
가장 먼저 bash2 실행
다음은 orc 파일의 소스 내용이다.
if 문이 두개와 for문 한개가 있다.
첫번째 if문은 실행 인자가 없을 경우 종료
for문에서 environ은
extern으로 선언되었다.
extern은 외부참조 변수이다.
즉, 환경 변수라고 이해할 수 있다.
for문의 내용을 보면
environ의 내용을 전부 0으로 바꾼다.
환경변수를 참조할 경우 그 내용을 모두 0으로 바꾼다는 의미이다.
환경변수를 사용할 수 없다.
두번째 if문은
실행인자의 48번째 문자가 \xbf 가 아닐 경우
종료한다.
그렇다면 환경변수를 쓰지 않고, 48번째 문자가 \xbf인 상태로
쉘코드를 실행하면 된다.
일단 gdb로 더 알아보자.
orc 파일을 복사해야 goblin 권한으로 gdb 분석할 수 있다.
sfp까지의 크기는 0x2c -> 44byte
아까 두번째 if문에서 48번째 문자가 \xbf를 필요로 했다.
48은 ret주소이다.
ret 주소에 입력 받는 곳의 주소를 넣어주면 될 것 같다.
실행인자로 넘어온 곳의 주소를 알아보자.
buffer에 배열에 넣기 전 브레이크 포인트를 설정하고
48번째 문자가 필요로하는 \xbf에 맞게 입력한다.
0xbffffc34에 입력된다.
ret 값에 0xbfffc34를 입력하고
이 주소에 놉은 적당히 채운 후
이 주소에 쉘코드를 넣어주자.
페이로드 작성
반응형
'War Game > LOB' 카테고리의 다른 글
[War Game] LOB wolfman (0) | 2018.02.02 |
---|---|
[War Game] LOB orc (0) | 2018.02.02 |
[War Game] LOB cobolt (0) | 2018.01.31 |
[War Game] LOB gremlin (0) | 2018.01.31 |
[War Game] LOB gate (0) | 2018.01.31 |