전체 글

tech blog
· Pwnable/FTZ
ID : level11 PW : what!@#$? 1. 로그인 후 hint 파일을 읽어주자. 못 보던 attackme 파일도 있네. 코드를 분석해보자. #include #include int main( int argc, char *argv[] ) { char str[256]; //str배열의 크기를 256바이트로 지정 setreuid( 3092, 3092 ); //level12 권한 strcpy( str, argv[1] ); //argv[1]값을 str에 복사 printf( str ); //str 출력 } strcpy 함수는 NULL 문자 전까지의 문자열을 복사하는 함수이다. strcpy 함수에는 취약점이 존재하는데, 문자열의 길이를 검사하지 않기 때문에 버퍼의 크기보다 더 큰 문자열이 들어갈 경우 오버..
· Pwnable/FTZ
ID : level10 PW : interesting to hack! 1. hint를 읽어 줍니다. 두 명의 사용자가 대화를 나눈 대화방의 정보를 알려 줬군요 ! 그 대화방은 공유 메모리를 이용하여 만들어졌으며, key_t의 값은 7530이라고 합니다. 공유 메모리에 접근하는 소스코드를 작성해서 공유 메모리 데이터를 읽는 문제입니다. 📌 공유 메모리란? 공유 메모리 (Shared momory)는 여러 프로세스가 함께 사용하는 메모리를 말합니다. 이 공유 메모리를 이용하면 프로세스끼리 통신을 할 수 있으며, 같은 데이터를 공유할 수 있습니다. 이렇게 같은 메모리 영역을 공유하기 위해서는 공유 메모리를 생성한 후, 프로세스의 자신의 영역에 첨부를 한 후에 마치 자기 메모리를 사용하듯 사용합니다. 출처: ht..
· Pwnable/FTZ
ID: level9 PW: apple 1. level9에 로그인해주고 cat 명령어로 hint 파일을 읽어주자. 만약 buf2의 첫 두글자가 "go" 라면, Good Skill!을 출력하고 3010,3010권한으로 bash를 실행시켜 주는 코드인 것 같다 ! 3010,3010은 level10 권한이겠지! 그렇다면 어떻게 buf2 변수에 go 문자열을 넣을 수 있을까? 스택은 이렇게 되겠지? — — — RET[4] → 높은 주소 SFP[4] buf2[10] buf[10] → 낮은 주소 — — — 문제에서 요구하는 건 buf2의 첫 두글자가 "go"여야 하는데, 소스를 보면 buf만 입력받기 때문에 불가능하다. 하지만 ! 이 소스코드에서 취약점은 fgets 이다. 이 함수에서는 buf가 10바이트인데도 불구..
· Pwnable/FTZ
ID: level8 PW: break the world 1. 루트 디렉토리로 이동해서 find 명령으로 사이즈가 2700인 파일들만 출력했다. 📌 참고 ! 우선, 텍스트 파일을 읽기 위해 /etc/rc.d 디렉토리로 이동하여 found.txt를 읽었다. 똑같은 문자열이 여러개 출력되었다. 패스워드 파일의 형식인 것 같으니 분석 해보자 ! (level8의 shadow 파일!) 패스워드 파일이란, 한 서버를 사용하는 사용자들의 모든 정보를 기록해 놓은 파일이다. 1 : 2 : 3 : 4 : 5 : 6 : 7 : 8 : 9 1: 사용자명 2: 패스워드 3: 패스워드 파일 최종 수정일 4: 패스워드 변경 최소일 5: 패스워드 변경 최대일 6: 패스워드 만료 경고 기간 7: 패스워드 파기 기간 (패스워드 파기 후..
· Pwnable/FTZ
1. 역시 가장 먼저 열어보는 hint 파일. /bin/level7 명령을 실행하면 패스워드 입력을 요청한다니 /bin/level7 명령을 실행해보자 ! 힌트에 나온대로, /bin/level7을 실행하면 패스워드 입력을 요청한다. 아무말이나 입력했더니 wrong.txt 라는 파일이 없다는 에러메세지가 출력된다. 좀 멘붕이 와서 구글링 했더니, 이는 해커스쿨 FTZ 오류란다. 원래는 bin 디렉토리에 아래와 같은 내용이 있어야 한다. 올바르지 않은 패스워드 입니다. 패스워드는 가까운곳에... ——- —__- —--__ —__-- 그래서 이 문제를 풀려면 /bin 디렉토리에 wrong.txt 라는 파일을 추가해줘야 한다. 2. wrong.txt 파일을 포함시키기 위해선, vi 에디터로 내용을 붙여넣으면 되지..
· Pwnable/FTZ
1. 로그인 하자마자 hint가 보인다. bbs : 쉽게 말해 전자게시판, 오래전에 쓰던 방식 텔넷 : 원격접속 서비스를 제공하는 네트워크 프로토콜 엔터를 치니 이런 화면이 나왔다. 하이텔, 나우누리, 천리안 모두 예전에 쓰던 PC 통신 방법이다. 1, 2, 3번 모두 선택해 보아도 터미널이 그냥 종료된다. 인터넷에 검색해보니, ctrl + c (작업 중지)를 누르면 명령어를 입력하는 창이 나온대서 눌렀더니, Can't use ctrl+c가 출력됐다. 그래서 초기화면에서 ctrl + c를 입력했더니 해결되었다. 이번엔 특이하게 password 파일이 대놓고 보인다. cat 명령으로 password 파일을 읽어주면 level7의 비번이 come together 이라는 것을 알 수 있다. 💡 bbs에서 많이..
· Pwnable/FTZ
1. ls 명령을 입력하니 아까 만든 backdoor 파일이 있네? 그래서 /home/level5 로 이동해주었다. 역시 hint 파일이 있으니 열어볼까 tmp 디렉토리는 아무나 들어갈 수 있는 곳이며 임시파일을 저장하는, 일종의 공동화장실 같은 곳이다. 2. /usr/bin/level5 파일의 정보를 출력해보자. 이 파일의 소유주는 level6이고 setuid도 걸려있다. 즉 이 파일을 가지고 쉘을 실행시키거나, my-pass를 실행시키면 level6의 패스워드를 알 수 있다. 해당 파일을 실행시키면, level5.tmp를 만든다고 했는데, 한 번 실행시켜보자. /usr/bin/level5 파일을 실행시키고 tmp에 와서 확인해보았지만 level5.tmp는 보이지 않는다. 어찌 된 것일까?? /usr/..
· Pwnable/FTZ
1. 백도어 (뒷문, 개구멍) '뒷문', '개구멍'이라는 의미로 시스템 관리자가 시스템 유지 보수를 할 때 좀 더 편하게 접근 하기 위해 만들어 놓은 보안상의 구멍. 해커들은 이를 이용해 루트 권한을 획득한 후 재침입을 위해 사용하곤 함. 2. /etc/xinetd.d 디렉토리에 들어가서 ls 명령어로 backdoor 파일이 있다는걸 확인했다. rm 명령어로 backdoor을 지워주려고 했지만 되지 않는다.. 어 근데 생각해보니 나는 보안을 지키는 쪽이 아니라 해킹을 하는 사람이었다. 그렇다면 이 backdoor을 이용하여 root권한을 획득하면 될 것이다. 우선 cat 명령으로 backdoor을 실행시켰다. finger 서비스로 실행되는 백도어이며, level5의 권한으로 /home/level4/tmp..
lvolzoo
sing