hackerschool
-
level 16. 풀이System hacking training/Hackerschool F.T.Z 2017. 12. 3. 17:39
해커스쿨 F.T.Z level 16 풀이를 해보았습니다. 로그인 후 힌트 파일을 확인하면.. 이전 문제들과는 다르게 main() 외에 2개의 함수가 더 있는것을 확인할 수 있습니다. void shell()에서 level 17의 권한을 걸고, system()를 이용하여 쉘을 띄어주는군요ㅎ 또 main()에서 void (*call)() = printit; 이 부분을 중요하게 볼 필요가 있는데요. c언어를 공부하신 분들은 아시겠지만 이는 함수 포인터라고 하는 녀석입니다. 말 그대로 함수를 담는 변수라고 할 수 있는데요. 아시다시피 포인터 변수는 주소값을 저장하는 변수입니다. 배열과 마찬가지로 printit 과 같이 함수의 이름을 넣어줌으로서 시작 주소를 call 이라는 함수 포인터에 넣어줍니다. 따라서 쉘을 ..
-
level 14. 풀이System hacking training/Hackerschool F.T.Z 2017. 11. 12. 18:29
엄청난 뻘짓끝에 F.T.Z level 14도 풀이를 했습니다. level14 풀이를 해보았습니다. 로그인 후 level15에 실행 권한이 주어진 파일을 찾은 모습입니다. 간단히 ls -al 명령어로 찾을 수 있습니다. 이번에도 변태같은 attackme가 공격을 바라며 기다리고 있네요 ㅎ 힌트 파일을 열어 힌트를 확인 해 보니.. char buf[20]; 으로 20 byte 크기의 배열이 존재합니다. 하지만 크기에 맞지 않게 fgets() 함수에서는 45 byte 를 입력받고 있는 모습입니다. 따라서 버퍼오버플로우 취약점이 존재하는 것을 확인 할 수 있습니다. 또한 if 문의 조건으로 check 이라는 int 형 변수에 0xdeadbeef 라는 문자가 존재한다면 쉘을 실행 시켜 주네요. ㅎ 저 if 문의 ..
-
level13. 풀이System hacking training/Hackerschool F.T.Z 2017. 11. 5. 22:17
해커스쿨 F.T.Z level 13을 풀이해 보았습니다. 로그인 후 힌트를 열어본 화면입니다. attackme에 대한 소스코드인것 같습니다. char 형으로 buf[1024] 만큼 버퍼를 할당해주었고, long 형 i 에 1234567이 들어가 있는것을 알 수 있었습니다. 또한 입력값을 buf에 복사해주는 strcpy 함수가 보이네요. 이 함수는 버퍼오버플로우 공격에 취약합니다. 입력값의 길이를 지정하지 않아, 입력값을 그대로 복사해서 만일 buf 크기 즉, 1024 보다 큰 길이의 입력값이 들어온다면 엉뚱한 것들을 건드려서 프로그래머의 의도와는 다르게 작동할 수 있습니다. 또한 setreuid()를 호출하여 '특권'을 주는것을 볼 수 있습니다. 하지만 이전과는 다르게 if문을 이용하여 i에 0x1234..
-
hackerschool trainer1~5System hacking training/Hackerschool F.T.Z 2017. 8. 27. 21:05
해커스쿨 F.T.Z trainer1~10 에 대한 내용들 간단히 정리해봤습니다. level을 풀때 기억이 안나서 trainer만 계속하게 되서..ㅎ trainer1. ls(현 위치에서 파일과 디렉토리를 보여줌)옵션 : -l : 구체적인 정보 출력 ls 입력시 디렉토리와 파일들이 나옵니다.맨 앞부분이 '-' 라면 파일 , 'd' 라면 디렉토리 라고 하는군요 ㅎ 쉽게 구분이 가능합니다. 또한 ls 명령 옵션 -al 을 입력하면 ( ex) ls -al )숨겨진 파일 + 구체적인 정보가 출력이 됩니다. trainer1에는 기본적인 리눅스 명령어인 ls 와 디렉토리와 파일 구분하는것을 배웠네요 ^^ 시스템해킹 별거 없다고 생각이 드는군요 흠.. 바로 이어 trainer2~10까지 정리 해 보겠습니다. traine..