FTZ

ftz

[ftz] level13

문제분석 & 풀이코드 분석1) i, buf[1024]를 선언2) setreuid()를 통해 level14의 권한으로 설정3) argv[1]을 통해 입력받은 값을 buf에 복사4) 만약, i의 값이 바뀔 경우 BOF로 간주하고 프로그램 강제종료 이전 문제와 다른점은 변수 i를 통해 BOF가 발생하는지 안하는지를 체크하고 있다는 점이다. 이것을 우회하기 위해 변수 i가 바뀌지 않는 선에서 페이로드를 만들어서 BOF를 진행해야 할 것 같다. attackme를 tmp 폴더로 복사하여 GDB로 디버깅했다. main 시작 후에 0x418 만큼 스택공간을 할당한다. 0x418 = 1048임으로 [buf 1024바이트] + [더미 24바이트]가 포함됐다는 것을 알 수 있다. 그러나 더미 24바이트안에는 변수 i의 공간..

ftz

[ftz] level12

문제분석 & 풀이○ 코드 분석1. str[256] 선언2. setreuid()를 통해 level13 권한으로 설정4. gets()로 사용자에게 값을 입력받는다.  level11번과 마찬가지로 입력값에 대한 검증을 진행하지 않고 있기 때문에, 버퍼오버플로우 문제라는 것을 직감할 수 있다. 그러나 level11과의 차이점은 level11의 경우 argv[1]을 통해 입력값을 받았지만 이번 문제는 프로그램 시작 후에 입력값을 받고 있다. 따라서 페이로드를 작성할 때 파이프를 사용해야 할 것 같다. 문제로 돌아와서, 페이로드 작성 시를 제외해서는 level11번 문제와 동일하므로 똑같이 진행해보도록 하겠다. 먼저, str[256] 부터 ret 까지의 거리를 알아내기 위해서 attackme를 디버깅해야한다. 따라..

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] level10

문제분석 & 풀이공유 메모리를 이용한 취약점으로 패스워드를 알아내는 문제다. ○ 공유메모리여러 프로세스에서 동시에 접근할 수 있는 메모리를 뜻한다. 즉, 2명의 사용자가 대화방을 통해 대화를 한다고 했는데, 대화방이 공유 메모리이고 사용자가 프로세스라고 생각하면 될 것 같다. 우리가 해야할 것은 key_t가 7530인 공유 메모리에 접근하여 내용을 가져오는 것이다.  먼저, 필자는 공유메모리와 관련된 함수에 대해 조사했다. ○ 공유메모리 관련 함수1) shmget()설명 : 공유메모리를 생성하거나 사용할 수 있는 함수이다.형식 : int shmget(key_t key, int size, int shmflg);- key_t key : 공유메모리의 key 값- int size : 공유 메모리의 크기반환 : ..

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)메모리에 생성된 버퍼 크기보다 더 많은 양의 입력값..

ftz

[ftz] level8

문제분석 & 풀이level9 shadow 파일이 서버에 있으며 용량이 "2700"이라는 힌트를 줬다. ○ shadow 파일/etc/passwd 파일에 있는 비밀번호를 암호화하여 저장한 파일이다. 패스워드를 암호화하고 보호하기 위해 만들었다. 용량 "2700"을 이용하기위해 위와 같이 명령어를 입력해서 파일을 검색했다. 검색결과가 아무것도 나오지 않아서 조금 당황했다. 무엇이 문제인지 감이 안잡혀서 find 명령어 -size 옵션에 대해 조사했다. 이후 새롭게 알아낸 사실은 size 옵션의 경우 파일의 사이즈 단위를 설정해 검색 할 수 있다는 것이다. ○ -size 옵션 파일 사이즈 단위b (block)c (byte)k (Kbyte)w (2byte word)m (Mbyte)g (Gbyte) 파일 사이즈를 ..

keyme
'FTZ' 태그의 글 목록 (2 Page)