level15
-
LEVEL 15 assassin write-upSystem hacking training/Hackerschool LOB 2018. 5. 13. 15:37
giant -> assassin [문제 + 힌트] 소스코드 먼저 분석을 해보면 argc가 2이상 즉 인자값이 2개 이상이여야하고 argv[1][47] 가 \xbf 혹은 \x40이면 안된다. 저 말은 return 할 주소가 \xbf 로 시작하는 스택의 어느 공간도 안되고 \x40으로 시작하는 코드영역도 안된다는 것이다. 그리고 취약점은 strcpy()의 사용으로 인해서 bof가 터진다. 그 후 memset()로 buffer+SFP를 0으로 초기화하면서 프로그램이 종료된다. 이 문제는 간단하게 ret가젯을 이용하여 쉽게 우회가 가능하다. ret의 주소는 \xbf도 \x40도 아니기 때문에 ret 가젯을 이용하여 system()를 불러오던 환경변수에 쉘코드를 넣고 쉘코드를 실행시키던 할 수 있다. objdum..
-
level 15. 풀이System hacking training/Hackerschool F.T.Z 2017. 11. 26. 23:24
F.T.Z level 15를 풀이해 보았습니다. 로그인 후 힌트를 확인해보니 level14의 소스코드와 유사합니다. 하지만 포인터 변수를 사용한 점이 다른것을 알 수 있습니다. 즉, check이 가리키는 값이 0xdeadbeef 와 일치해야 쉘을 띄어주는 것을 확인할 수 있습니다.또 이전의 문제와 같이 fgets함수의 입력길이가 잘못되었으므로 버퍼오버플로우 공격을 하면 쉘을 띄울 수 있을것으로 보입니다. level15의 디렉토리에서 gdb사용이 제한되므로 공격해야할 attackme 라는 파일을 cp 명령어로 tmp 파일로 복사를 해줍니다. 이렇게 복사한 파일을 gdb를 통해 확인해 봅니다. lea eax, [ebp-56] 한 다음 eax를 push 해주는 것으로 보아 버퍼의 시작임을 알 수 있습니다. 또..
-
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 문의 ..