[FTZ] 해커스쿨 FTZ level 2
2021. 3. 23. 20:17
Wargame/Hackerschool FTZ
문제 풀이 방법 : Vim 편집기 실행 -> level3의 권한으로 쉘 명령어 입력 level 3 권한에 setuid가 걸린 파일이 있는지 찾기 위해 find 명령어를 사용합니다. find / -user level3 -perm -4000 2>/dev/null Find 명령어로 찾은 파일인 /usr/bin/editor를 실행하니, vim 편집기가 실행되는 것을 알 수 있습니다. 이때, vim 편집기가 Hint 상의 텍스트 편집기임을 알 수 있습니다. 힌트의 내용처럼 Vim 편집 중 쉘로 빠져나가지 않고 외부명령어를 실행해보았습니다. : !my-pass Level 3 권한으로 실행 중인 상태에서 My-pass를 입력하니 level 3의 패스워드가 나왔습니다. 참고 : vim 쉘 빠져나가지 않고 명령어 실행 ..
[FTZ] 해커스쿨 FTZ level 1
2021. 3. 23. 19:56
Wargame/Hackerschool FTZ
문제 풀이 방법 : #find 명령어 #SetUID→권한변경 조건에 맞는 '파일을 찾기 위해' find 명령어를 이용합니다. find / -user level2 -perm -4000 2>/dev/null 다음과 같이 /bin/ExecuteMe를 실행하여 my-pass(*해당 계정의 비밀번호를 획득하는 FTZ 명령어)를 제외한 명령어를 사용할 수 있음을 확인하였습니다. level2 권한으로 bash를 실행시켜 my-pass 명령어를 입력하는 방법으로 암호를 획득하였습니다. 참고 : http://logonluv.blogspot.com/2015/02/find-perm.html 리눅스 find 명령어 옵션 중 -perm linux에서 find명령어의 옵션 중 -perm에 관한 설명입니다. 특정 실행권한을 찾을 ..
[HackCTF] RTL_World
2021. 3. 20. 20:19
Wargame/HackCTF
1. 문제 파일을 실행시키니 뭐가 굉장히 많이 나왔다. 일단 1번을 클릭하자, 문제에 적용된 보호기법들이 나왔다. NX bit가 적용된 것으로 보아 스택에 쉘을 넣어 실행하지는 못할 것으로 보인다. 그리고 2,3,4 번은 돈(Gold)과 관련된 것들이었다. 이번엔 ida로 파일을 열어보았다. 메뉴 선택 > switch문 별로 나눠지는 것 같다. 그 중에서도 case 5(Attack)에 해당하는 것이 눈에 띄었다. buf에 0x400u 즉, 1024 byte 만큼 입력을 받고 있는데, buf의 크기는 고작 128 byte이다. 따라서 bof를 일으켜 RET 값을 변경할 수 있을 것이다. 그런데, NX 보호 기법이 적용되어있기에 그것을 우회하기 위해 실행 가능한 영역에 있는 코드 즉, 외부 라이브러리 함수를..
[HackCTF] x64 Simple_size_BOF
2021. 3. 19. 23:34
Wargame/HackCTF
1. 문제 의도 파악 파일을 한번 실행시켜보았다. 오 자살방지 문제라니.. 쉽나보다 다행.... printf 함수를 통해 v4의 주소가 leak 되고 있다. 나중에 써먹으면 될 듯하다. 그리고 gets 함수로 입력을 받아 v4 버퍼에 저장하는데, gets 함수는 입력값을 검증하지 않기에 bof를 일으켜 RET 값을 변경할 수 있을 것이다. 2. Offset 구하기 main의 스택 프레임은 위와 같다. v4의 시작주소는 RBP-0x6D30이므로, RBP로부터 27952 Byte 만큼 떨어져있다. -> offset은 (27952 + 8)이다. 따라서 버퍼에 shellcode를 넣고 RET 전까지를 dummy 값으로 채운 뒤 RET에 v4의 시작 주소를 넣으면 될 듯하다. payload는 다음과 같을 것이다...
[HackCTF] Basic_FSB
2021. 3. 19. 21:46
Wargame/HackCTF
1. 문제 의도 파악하기 버퍼 s에 입력을 받은 뒤, snprintf 함수를 통해 format에 s를 저장한다. 그런데 이때, 서식지정자를 지정하지 않고 바로 s를 저장하기에 FSB 취약점이 발생한다. 그렇다면 이걸로 뭘 할 수 있을까? 바로 FSB 취약점을 이용해 특정 메모리 주소에 뭔가를 쓰거나 읽을 수 있다. 그리고 우리의 목표는 아마 flag 함수를 실행 시키는 것이다. 따라서 FSB를 이용해 특정 메모리 주소에 flag 함수 주소를 overwrite 시켜 flag 함수를 실행시키면 될 것이다. 이때 snprintf 함수 다음에 printf가 실행된다. 그래서 printf_got에 "%n"을 이용하여 flag 함수 주소를 overwrite 시키면 될 것이다. 그렇다면 우선 입력값이 몇번째 포맷 스..
[HackCTF] Basic_Bof #2
2021. 3. 19. 21:40
Wargame/HackCTF
1. 문제 의도 파악하기 v5는 함수 포인터로, sup 함수의 메모리 주소가 담겨있다. sup 함수는 s를 출력해 반환하는 함수이다. 그리고 gets 함수로 입력을 받아 버퍼 s에 저장하는데, 버퍼의 크기인 128 byte보다 큰 133만큼 입력을 받아 bof를 발생시킬 수 있을 것으로 보인다. 다만, 133byte 로는 RET까지 가지 못하므로 return address를 변경하는 것은 아닐 듯 싶다. 이때 함수들을 살펴보니 /bin/dash를 실행하는 shell 함수가 존재한다. 그래서 아마 버퍼 크기인 128만큼을 dummy 값으로 채우고, 그 뒤에 있는 v5에 shell의 주소를 넣으면 될 것으로 보인다. 즉, payload는 다음과 같을 것이다. payload = "A"*128 + shell 함..