FTZ level11pw : what!@#$? 드디어 이제부터 bof를 익히는 11레벨입니다. 먼저 ls명령을 통해 확인해보겠습니다. attackme 라는 setuid가 걸린 파일과 hint가 있군요! 힌트를 보겠습니다. argv[1]을 str변수안에 strcpy를 합니다. 여기서 bof취약점이 발생하게됩니다. 리턴 어드레스를 덮어서 값을 수정해 쉘코드가 있는 부분으로 점프해주면 되겠네요. NOP sled 방식으로 풀어보겠습니다. 디버깅을 하기위해 tmp폴더로 attackme파일을 옮기겠습니다. 그 후, gdb로 분석하도록 하겠습니다. 인텔로 바꾼 뒤 분석해보겠습니다. 0x108만큼 스택 프레임을 구성합니다. 264바이트입니다. 아까 str변수가 256바이트로 선언되어있으니 dummy는 8바이트 입니다...
FTZ level10pw : interesting to hack! 레벨10입니다. 먼저 힌트를 보겠습니다. ? 공유메모리 ? 무엇인가 어려워 보입니다.공유 메모리에 대해 공부해보겠습니다. 보통 프로세스에서 사용되는 메모리영역은 해당 프로세스만이 사용할 수 있는데요. 하지만 때때로 여러개의 프로세스가 특정 메모리영역을 사용해야하는 때가 있습니다. 공유메모리를 위해 사용하는 함수가 대표적으로 shmget, shmat 함수가 있습니다. 공유메모리에 대한 개념과 사용법에 대해서는 아래링크를 참고해주세요.http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/system_programing/IPC/SharedMemory 중요한 부분은 key_t의 값인데요, key_t의 값..
FTZ level9pw : apple 레벨 9입니다. 먼저 힌트를 보겠습니다. 재밌어보이는 코드가 나왔습니다. fgets로 40바이트 만큼 크기가 10인 buf에 입력을 받네요.ㅋㅋㅋ 이것은 버퍼 오버플로우가 발생합니다. 그리고 buf2의 첫 2바이트가 “go”이면 쉘을 실행시켜줍니다. 버퍼 오버플로우로 buf2의 값을 수정하면 될 것 같습니다.참고로 알아야 할 것이 있습니다. ‘먼저 선언된 변수는 높은 주소를 가진다’ 라는 것 인데요.따라 메모리상에서 | buf | buf2|low high address 이렇게 배정이 됩니다. 메모리에서 변수는 2의 승만큼 배정되기 때문에 10바이트를 선언하니 16바이트가 메모리에 배정되죠. 따라서 buf[16]을 입력하고 go라는 문자열을 입력하면 되겠죠? 쉘이 실행..
FTZ level8pw : break the world 레벨 8입니다. 먼저 hint를 확인하겠습니다. shadow 파일이 서버 어딘가에 숨어있다고 합니다.용량이 2700이라네요. find 명령어를 이용해 찾아보도록 하겠습니다. 먼저 find 명령에 대해서 알아보도록 하겠습니다. find [찾고자하는 디렉토리] [옵션]find [찾고자하는 디렉토리] -size [찾을용량][단위] [단위]: b [512byte]: c [byte]: k [kbyte]: w [2byte] 이제 find명령어를 이용해 찾아보겠습니다. 4개의 파일이 나옵니다. found.txt라는 파일이 의심이 되는군요. 오잉 이상한 문자열들이 반복해서 적혀있습니다. 문제에 있는 힌트인 shadow 파일에 대해서 찾아보면 password 부분은..
FTZ level7pw : come together level7입니다. hint를 확인해보겠습니다. 일단 /bin/level7를 실행해보겠습니다. 이러한 문구와 함께 아무 문자열을 대입해보니 ?? 인터넷을 찾아보니 개인이 ftz서버를 열었다면 wrong.txt가 안나온다고 합니다. ㅠ아마 핵심적인 힌트가 있는 파일일텐데요. 해결법은 root계정으로 /bin/wrong.txt를 만들어줘야 한다고 합니다. 그래서 wrong.txt의 내용을 인터넷에서 긁어왔는데요. password값을 무작위 대입하니, password를 찾을 수 없다면서 밑에 이상한 문자열을 주는데요. 아까 힌트에 있던 이진법을 십진법으로 바꾸는 것을 생각 해보고, -를 1로 대입하고_를 0으로 대입해보면 될 것 같습니다. 그렇게 대입을 해보..
FTZ level5pw : what is your name? Level5입니다. ls명령으로 hint를 확인해보겠습니다. /usr/bin/level5 프로그램은 임시파일을 만든다고 합니다. 이 프로그램이 실행되면, /tmp디렉토리에 level5.tmp라는 임시파일을 생성한다고 하네요. 함 실행시켜보겠습니다. /tmp엔 아무 파일이 없군요. 아마도 프로그램을 실행하면 임시파일을 생성하고 다시 지우는 것 같은데요. 하지만 원래 tmp파일에 level5.tmp라는 파일이 있으면 임시파일을 생성할 때 내용이 덮어쓰이지 않을까요? 아무내용이 적힌 level5.tmp를 만들었습니다. 그리고 level5를 실행해보겠습니다. 실행 후 tmp 파일의 level5.tmp를 실행해보니, 예상과 같았습니다. Level6 pa..
FTZ level4pw : suck my brain level4 입니다. 힌트를 보니, 누군가가 백도어를 심어놓았다고 합니다. Xinetd는 리눅스의 네트워크 데몬을 가동하는 슈퍼 데몬입니다.네트워크 데몬이란, FTP, 텔넷, SSH, 아파치 등과 같은 네트워크 통신을 위한 데몬을 의미합니다. Xinetd의 역할은 네트워크서비스에 대한 접근제어, login에 대한 접근제어 등을 합니다. cd명령어로 저 디렉토리에 가보겠습니다. backdoor라는 파일이 있습니다. backdoor파일을 열어보니 이런 내용이 있습니다. finger 서비스에는 다양한 속성들과 속성 값들이 있는데요, 그 중에서 server부분은 해당서비스를 실행할 데몬프로그램을 지정한다고 합니다. 또, user부분을 보면 level5로 되어있..
- srop
- oob
- hacking
- fsop
- HackCTF
- pwnable.tw
- codegate
- shellcoding
- rt_sigreturn
- FSB
- TLS
- tcache
- fastbin
- glibc
- pwnable
- pwable
- exit
- 해킹
- SQLi
- heap
- ebp change
- 본선가고싶다
- stack reusing
- fastbindup
- overflow
- Total
- Today
- Yesterday