stack

System Hacking Advanced

[dreamhack] __environ

개념정리프로세스는 환경 변수 정보를 저장하고, 필요할 때마다 불러와서 사용한다. 환경 변수 (Environment Variable)는 매번 변할 수 있는 동적인 값들의 모임으로, 시스템의 정보를 갖고 있는 변수다. 사용자가 직접 추가 및 수정하거나 삭제할 수 있는 값으로 리눅스에서 제공하는 명령어들은 “/bin”, “/usr/bin” 등의 디렉터리에 위치한다. 명령어를 입력하면 환경 변수에 명시된 디렉터리에서 명령어를 탐색하고, 실행하기 때문에 명령어의 경로를 입력하지 않아도 된다. 환경 변수는 터미널 뿐만 아니라 프로그램에서도 참조한다. 프로그램에서도 명령어를 실행해야 하는 경우가 종종 있으며, 절대 경로를 입력하지 않아도 명령어를 실행할 수 있다. 이 또한 프로세스를 로드하면서 환경 변수를 초기화하기..

ftz

[ftz] level11

문제분석#include #include int main( int argc, char *argv[] ){ char str[256]; setreuid( 3092, 3092 ); strcpy( str, argv[1] ); printf( str );}○ 코드 분석1) str[256] 선언2) setreuid()를 통해 level12의 권한으로 설정3) argv[1]을 받고 str[256]에 복사4) str[256] 출력 level12 권한으로 설정 후 argv[1]을 str[256]에 복사하고 있다. 복사하는 과정에서 argv[1]에 대한 검증이 없다. 따라서 argv[1]을 이용해서 버퍼 오버플로우 공격을 수행할 수 있다. 디렉토리의 파일들을 확인해보면 attackme라는 level12의 setuid ..

ftz

[ftz] level9

문제분석 & 풀이bof 코드를 알려주고 있다. buffer overflow 취약점을 실습하는 첫번째 문제다. ○ 코드 분석1. buf2[10], buf[10] 배열을 선언한다.2. fgets()를 이용하여 사용자에게 입력을 받아서 40바이트 만큼 buf[]에 저장한다.3. strncmp()를 통해 buf2[]의 앞 두자리가 "go"인지 확인하고 맞으면 level10의 password를 알려준다. 사용자가 입력한 값을 buf에 저장하는데, 우리가 값을 넣고 싶은 배열은 buf가 아닌 buf2다. 그렇다면 어떻게 buf2에 "go"를 넣을 수 있을까? 앞에서 언급했듯이 buffer overflow를 이용하면 된다!. ○ BOF (buffer overflow)메모리에 생성된 버퍼 크기보다 더 많은 양의 입력값..

keyme
'stack' 태그의 글 목록