분류 전체보기
[Dreamhack] exploit tech : Return Address Overwrite
드림핵을 기반으로 작성한 내용이다. 버퍼오버플로우에 대한 익스 테크이므로 아래의 글을 참고하면 좋다. [system][hacking] stack buffer overflow - 스택 버퍼 오버플로우 드림핵 내용을 기반으로 내 방식으로 이해한 내용을 정리했다. (잘못된 내용이 있다면 댓글로 알려주세요..!) 스택 버퍼 오버플로우 스택의 버퍼에서 발생하는 오버플로우 버퍼 데이터가 목적지 3omh4.tistory.com 예제 코드 // Name: rao.c // Compile: gcc -o rao rao.c -fno-stack-protector -no-pie #include #include void init() { setvbuf(stdin, 0, 2, 0); setvbuf(stdout, 0, 2, 0); } ..
[System][Dreamhack] stack buffer overflow - 스택 버퍼 오버플로우
드림핵 내용을 기반으로 내 방식으로 이해한 내용을 정리했다. (잘못된 내용이 있다면 댓글로 알려주세요..!) 스택 버퍼 오버플로우 스택의 버퍼에서 발생하는 오버플로우 버퍼 데이터가 목적지로 이동되기 전에 보관되는 임시 저장소 데이터가 저장될 수 있는 모든 단위를 뜻하기도 함 스택 버퍼 스택에 있는 지역변수 힙 버퍼 힙에 할당된 메모리 영역 버퍼가 필요한 이유 데이터의 처리속도 차이 때문 처리 속도가 다른 두 장치 사이의 데이터 전달 시 abcdefg를 전달했지만 받는 쪽에서는 abcd만 받을 수 있음 → 이를 방지하기 위해 수신 측과 송신 측 사이에 버퍼 둠 버퍼 오버플로우 버퍼가 넘치는 것 버퍼는 일정한 크기를 가지고 있다. int로 선언한 지역변수 = 4bytes char[10] = 10bytes 1..
[Linux] 심볼릭 링크 & 하드 링크 (symbolic & hard)
윈도우의 바로가기 같은 개념으로, 리눅스에 링크 개념이 있다. 링크에는 하드 링크(hard link)와 심볼릭 링크(symbolic link)가 있다. 심볼릭 링크 (symbolic link) 데이터가 있는 파일은 하나뿐이고, 그 원본 파일을 가리키는 링크만을 가지는 파일을 만드는 것이다. 원본 파일을 삭제하면 역할을 수행할수는 없지만, 여전히 같은 경로를 가리키면서 남아있다. 따라서 전혀 다른 파일이어도 원본 파일과 이름이 같으면 계속 사용할 수 있다. 이 점이 레이스컨디션 공격으로 이어질 수 있다. 심볼릭 링크 생성 방법 ln -s [원본 파일] [링크 파일 이름] 심볼릭 링크의 내부 작동 방식 - 새로운 inode 생성 원본파일과 링크 파일의 inode가 다른 것을 확인할 수 있다. 즉, 아래의 그..
[System] 레이스 컨디션(Race Condition)
더 자세한 내용은 추후에 더 추가할 예정이다. 레이스 컨디션? 한정된 자원을 여러 프로세스들이 사용하기위해 경쟁하는 것을 의미한다. 즉 둘 이상의 프로세스나 스레드가 공유자원에 동시에 접근하여 비정상적인 결과가 발생하는 것을 말한다. 레이스 컨디션 공격 레이스컨디션에 의해 비정상적인 상황이 발생한 경우 악용하는 공격으로, 관리자 권한(setuid를 통한 권한상승)으로 실행되는 프로그램 중간에 끼어들어 자신이 원하는 작업을 하는 일종의 가로채기이다. 실행되는 프로세스가 임시파일을 만드는 경우 프로세스의 실행 중 끼어들어 임시파일을 목적파일로 연결(심볼릭 링크)하여 임시파일의 내용을 확인하는 등 악의적인 행워를 할 수 있다. 만약 프로세스가 setuid로 인해 root 권한으로 실행된다면 권한 상승을 통해 ..
[System] 함수 프롤로그 & 에필로그 (Prologue & Epilogue)
우선 함수의 프롤로그와 에필로그에 들어가기 전 스택프레임을 알아야한다. 스택프레임이란? 스택 세그먼트 내부의 단위를 스택 프레임(stack frame)이라고 한다. 이 스택프레임은 함수가 호출될 때 생성되고, 반환될 때 해제된다. 즉 그 함수만의 스택영역을 구분하기 위해 생성되는 공간을 말한다. 스택 프레임 영역을 할당하기 위해 함수 프롤로그(prologue)와 함수 에필로그(epilogue)가 수행된다. 함수 내에서 다른 함수 호출을 위해 필요한 일 돌아갈 위치를 스택에 push한다. 이전 함수의 스택 base addr를 스택에 push한다. 함수를 수행을 마치고 호출 위치로 돌아갈 준비를 위해 스택을 다시 복원한다. 함수를 종료한다. 스택 base pointer를 이전 함수의 스택 base addr로..
[FTZ] 해커스쿨 FTZ Level5 - Write Up
접속 정보 ID : level5 PW : level4의 결과 내가 푼 방법 이번에도 level6권한의 파일이 있는지 찾아본다. 존재한다! 이제 힌트를 확인해본다. 힌트를 통해 /usr/bin/level5 프로그램이 /tmp 디렉토리에 level5.tmp라는 임시파일을 생성하는 것을 알 수 있다. 이제 해당 프로그램을 실행 후 /tmp 디렉토리에 level5.tmp파일이 생성되는지 확인해본다. 아무런 변화도 없다. 임시파일이라 /usr/bin/level5 프로그램의 실행이 끝나면 사라지는 것으로 보인다. 이제 level5.tmp의 내용을 확인해야되는데, 이를 위해 level5.tmp를 /tmp 디렉토리에 생성했다. 만약 /tmp 디렉토리에 같은 이름의 파일이 있다면 해당 파일의 내용을 덮어쓰지 않을까 라고..
[FTZ] 해커스쿨 FTZ level4 - Write Up
접속 정보 ID : level4 PW : level3 결과 (suck my brain) 문제 해결 앞의 level들 처럼 level5의 권한으로 쉘명령을 실행해 level5의 비밀번호를 알아내면 될 것이라 생각해서 앞의 문제들처럼 setuid가 level5로 설정된 파일을 찾아봤다. 하지만 아무것도 나오지 않아 바로 hint를 출력해봤다. 백도어?? 백도어란 시스템에 비인가적인 접근을 시도하는 프로그램을 의미한다. 즉, 정상적인 인증 과정을 거치지 않고 운영체제나 프로그램 등에 접근할 수 있도록 만든 일종의 뒷구녕같은 개념이다. 여태 setUID로 다음 레벨의 쉘명령을 실행하던 것도 백도어의 개념으로 볼 수 있다. 넓은 의미에서 익스플로잇을 뜻하기도 한다고 한다. 권한없는 쉘을 따는 것이라 이해하면 될 ..
[Linux] 데몬(Daemon)이란?
FTZ level4를 풀다가 /etc/xinetd.d 폴더에 관련된 내용이 나와 검색해보던 중 xinetd데몬의 내용이 나와 데몬과 관련된 내용을 정리하고 넘어가려고 한다. 데몬(Daemon)?? 리눅스 시스템이 처음 가동될 때 실행되는 백그라운드 프로세스들의 일종으로, 메모리에 상주하다가 요청이 오면 즉시 응답하도록 하는 대기 프로세스이다. 여기서 핵심은 백그라운드 프로세스라는 것이다. 데몬 종류 - standalone & xinetd standalone 독단적으로 움직이는 방식으로, 항상 단독으로 메모리에 상주하고 있다가 요청이 오면 바로바로 처리해준다. 빠르다는 장점이 있지만, 메모리에 계속 상주하고 있어야 되므로 메모리를 많이 잡아먹는다. → 요청이 많은 프로세스는 항상 상주하고 있지 않는다면, ..