[FTZ] 해커스쿨 FTZ level 11
2021. 4. 12. 19:25
Wargame/Hackerschool FTZ
1. 문제 소스 코드를 보면 strcpy 시 bof가 발생한다. 따라서 쉘 코드를 삽입하고 ret 전까지를 dummy 값으로 채운 뒤 리턴 해주면 될 듯하다. 2. 문제 해결 과정 앞에서 예측한 대로 페이로드는 다음과 같을 것이다. payload = shellcode(41 byte) + dummy + str의 시작 주소 따라서 버퍼와 ret 까지의 offset을 구해보자. 그때의 esp는 return address를 가르키고 있다. 그때의 eax에는 버퍼의 시작 주소가 들어가있다. shellcode : \x31\xc0\xb0\x31\xcd\x80\x89\xc1\x89\xc3\x31\xc0\xb0\x46\xcd\x80\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x..
[FTZ] 해커스쿨 FTZ level 10
2021. 3. 26. 20:58
Wargame/Hackerschool FTZ
hint를 확인한 모습이다. 힌트에 따르면 공유 메모리를 사용하여 만든 프로그램을 도청하는 것이 문제 핵심입니다. 공유메모리란? 공유 메모리는 IPC(Inter-Process Communication)의 한 가지 방법으로 프로세스간 통신이 필요할 경우 사용합니다. 공유 메모리를 통한 통신은 둘 이상의 프로세스가 공통 메모리에 액세스 할 수 있는 개념으로 한 프로세스에서 변경한 메모리 공간의 내용을 다른 프로세스에서 접근할 수 있습니다. ipcs -m 명령어를 통해 공유 메모리 세그먼트에 대해 알 수 있습니다. key는 7530 byte이며, 크기는 1028 byte입니다. 이제 공유메모리에 접근해서 프로그램을 도청해봅시다. 공유 메모리를 사용하지 위해서는 아래의 헤더파일을 include 해주어야 합니다...
[FTZ] 해커스쿨 FTZ level 9
2021. 3. 26. 19:32
Wargame/Hackerschool FTZ
문제 힌트를 확인한 결과입니다. fgets 함수를 통해 buf에 입력을 받는데, buf의 크기인 10보다 큰 40 byte 만큼 입력을 받고 있습니다. 따라서 버퍼 오버플로우가 발생합니다. 이때 우리의 목표는 level 10의 권한으로 쉘을 실행시키는 것으로, buf2의 값이 "go"일 때 level 10의 권한으로 "/bin/bash"가 실행됩니다. 따라서 버퍼 오버플로우를 통해 buf2의 값을 "go"로 변경하면 될 것으로 보입니다. 그럼 이제 offset을 구하고 payload를 작성해보겠습니다. Offset 구하기 gdb를 이용해 디버깅을 해보겠습니다. 그런데 /usr/bin/bof 파일에 gdb를 실행시키니 permission denied가 뜹니다. 그래서 hint에서 주었던 소스 코드를 가지고..
[FTZ] 해커스쿨 FTZ level 8
2021. 3. 23. 23:13
Wargame/Hackerschool FTZ
힌트를 확인한 결과입니다. shadow 파일이란? 패스워드를 암호화 하여 보호하기 위해 만들어진 것으로 기존의 /etc/passwd 파일에 있던 비밀번호를 shadow 파일에 암호화하여 저장하게 됩니다. 이이 파일은 일반적으로 root 만의 접근 권한이 존재합니다. 또한 패스워드에 대한 마료 갱신기간, 최소 기간 등의 시간상의 관리 정책을 저장하고 있습니다. 힌트대로 level 9의 shadow 파일을 찾기 위해 용량이 2700인 파일을 찾는 find 명령어를 사용합니다. find / -size 2700c 2>/dev/null find 명령어를 통해 /etc/rc.d/found.txt라는 txt 파일이 나옵니다. cat 명령어를 통해 이 파일을 읽어보니 level 9의 shadow 파일임을 알 수 있었습..
[FTZ] 해커스쿨 FTZ level 7
2021. 3. 23. 22:30
Wargame/Hackerschool FTZ
힌트를 확인한 결과입니다. 힌트에 적힌 /bin/level 7을 실행하니 'Insert The Password'라고 뜨며 패스워드를 입력하라고 합니다. 일단 아무거나 입력하니 - 과 _ 으로 이루어진 암호문이 뜹니다. 힌트를 참고해 위 암호를 우선 2진수로 바꿔줍니다. - : 1 /_ : 0 을 의미합니다. 1101101 1100001 1110100 1100101 그리고 공학용 계산기를 통해 2진수를 10진수로 변환해줍니다. 109 97 116 65 마지막으로 10진수를 16진수로 변환해줍니다. 6D 61 74 41 그리고 이것을 아스키 코드를 통해 문자로 변환해주면 암호는 해독이 됩니다. 문자열 "mate"가 나옵니다. 2진수 1101101 1100001 1110100 1100101 10진수 109 9..
[FTZ] 해커스쿨 FTZ level 6
2021. 3. 23. 22:09
Wargame/Hackerschool FTZ
level6로 로그인을 하자마자 hint가 출력됩니다. 이때 bbs란 PC 통신하던 시절 텔넷으로 접속하던 게시판입니다. 지금 서버가 프로세스를 실행중인 상태인데, 그것을 어떻게 중지하고 쉘로 돌아갈 수 있을까요? Ctrl+C 를 누르자 쉘로 돌아갔습니다. Ctrl+C를 통해 interrupt를 건 것입니다. level 6 홈 디렉토리에서 ls -al 명령어를 통해 password 파일이 존재함을 알 수 있습니다. password 파일 안에 level 7의 패스워드가 적혀있습니다. ※ 참고 : 프로세스 인터럽트 vmilsh.tistory.com/392 egloos.zum.com/rousalome/v/9971347 [리눅스커널] 인터럽트(Interrupt)란? 인터럽트란 무엇일까요? 인터럽트란 일반적인 상..
[FTZ] 해커스쿨 FTZ level 5
2021. 3. 23. 21:09
Wargame/Hackerschool FTZ
hint를 확인한 결과입니다. 힌트대로 /usr/bin/level5를 실행하고 /tmp 디렉토리를 확인해보았지만 임시파일은 존재하지 않았습니다. 이를 통해 임시파일은 프로그램이 종료되기 전에 삭제됨을 알 수 있습니다. 그렇다면, 임시 파일이 삭제되기 전에 파일을 어떻게 가로챌 수 있을까요? (삭제 되기 전 파일의 내용을 확인하는 방법) 바로 심볼릭 링크를 이용하면 됩니다. 심볼릭 링크란? 어떤 파일을 가르키는 파일로 windows의 바로가기와 비슷한 개념입니다. ln -s 목표파일 새로만들 파일 먼저 /tmp 폴더에 test 파일을 만들어주고, 심볼릭 링크를 통해 level5.tmp 파일이 test 파일을 가르키도록 합니다. cd /tmp touch test ln -s test level5.tmp 그 결..
[FTZ] 해커스쿨 FTZ level 4
2021. 3. 23. 20:55
Wargame/Hackerschool FTZ
hint를 확인한 결과입니다. /etc/xinetd.d/ 파일들 : xinetd 기반 서비스들의 개별 설정 파일들 더보기 /etc/xinetd.d/ 디렉터리는 xinetd 데몬이 참조하는 서비스 설정 파일들이 존재한다. 유닉스 계열에서는 데몬이란 시스템의 기능을 제공하거나 백그라운드에서 항시 실행되는 프로그램으로 뜻합니다. 예를 들어 telnet, http, sendmail 등을 데몬이라 할 수 있습니다. 이때 데몬의 실행 방식은 크게 stand_alone 방식과 xinetd 방식이 있습니다. stand_alone 방식은 데몬이 시작되면 말 그대로 자기 스스로 시스템에서 상주하며 클라이언트 요청에 응답을 보내주는 방식으로, 항상 메모리에 상주해 있다는 것이 특징입니다. ineted 방식은 스스로 독립적으..