attackme의 코드를 훑어봅시다.각가 crap 4바이트 check 4바이트 buf 20바이트를 할당해주고 fgets함수로 buf에 입력 받은 값을 집어넣습니다.이번 문제는 if문을 실행하는 부분의 메모리주소만 찾으면 되겠습니다. 56바이트 만큼의 공간을 할당하고 값을 받아옵니다. ebp-16 에서 if문의 조건절을 검사하므로 굳이 메모리의 구조를 알지 못하더라도 쓰레기값을 40바이트를 주고 0xdeadbeef를 넣으면 shell을 얻을 수 있다는 것을 알아냈습니다. (python -c 'print "A"*40 + "\xef\xbe\xad\xde"';cat)|./attackme 끝!
ftz writeup
ls명령어를 통해 디렉터리 안을 확인하고 hint파일의 내용을 cat명령어로 봅니다.key_t = 7530 -> 공유 메모리를 구별하는 식별 번호가 7430임을 확인. ------------ 공유 메모리란?공유 메모리(Shared memory)는 컴퓨터 환경에서 여러 프로그램이 동시에 접근할 수 있는 메모리입니다..그림으로 그려서 나타내자면, 원래 프로세스는 이렇게 각각의 메모리를 가지고있는 상태이지만 만약 프로세스 b가 공유 메모리를 만든다면 이렇게 접근 권한이 있는 모든 프로세스에서 공유 메모리로 접근이 가능합니다. ------------ 문제에서 공유 메모리를 언급하였고 key값도 주어졌으니 공유 메모리에 접근할 실행파일을 만들어줍시다. *shmget() 함수* int shmget(key_t key..
힌트 파일을 cat명령어로 확인해봅시다./usr/bin/level5를 실행시키면 /tmp디렉토리에 level5.tmp라는 파일이 생기는 듯 합니다. /usr/bin/level5 파일을 확인했습니다.실행해봅시다. 실행했지만 /tmp 디렉토리에 파일이 생기지 않았습니다.무언가 level5.tmp 파일을 지우는 듯 합니다. 그러므로 vi편집기로 level5.tmp 파일을 만들어줍니다.내용은 아무거나 채워 넣었습니다. 다시 /usr/bin/level5 를 실행시켜주고 level5.tmp를 보면 비밀번호가 나와있는 것을 확인하실 수 있습니다.
ls로 디렉토리를 확인해보니 [hint]라는 파일이 존재합니다. cat명령어로 hint파일을 확인해보니 "텍스트 파일 편집 중 쉘의 명령을 실행시킬 수 있다는데 ... "라고 뜹니다.Vi 에디터를 얘기하는 듯 합니다. level 1과 마찬가지로 setuid가 걸린 level3권한의 파일을 찾아줍니다. editor는 디렉토리가 아닌 듯 하네요. /usr/bin 디렉토리로 이동해서 editor파일이 있는지 확인합니다. editor을 실행시켜줍니다. Vim 편집기가 뜨네요.명령어 모드로 전환하기 위해 [esc] 를 눌러줍니다. vim 편집기는 외부명령도 편집기 내에서 할 수 있게 하는 명령어가 존재합니다. :! 를 친 후 bash를 입력해주면 외부명령으로 인식되며 level3의 권한을 얻게 됩니다. level..