Level9
level9의 계정으로 접속하여 hint의 내용을 확인하면 다음과 같습니다.
bof 프로그램은, buf2 배열의 첫 2byte에 go라는 문자열이 들어가면, level10의 권한으로 shell을 실행시킵니다. 문제 해결을 위해 tmp Directory에 bof의 소스와 동일한 프로그램을 하나 만들어서 스택구조를 파악하였습니다.
스택의 총 크기는 40byte임을 확인할 수 있습니다. 다음으로 buf와 buf2사이의 거리가 얼마인지 알기 위해 다음과 같이 코드를 추가한 후 실행시켜 보았습니다.
buf와 buf2 사이의 거리는 0x10 (16byte)만큼 떨어져 있음을 알 수 있습니다. 이를 토대로 스택을 다음과 같이 나타낼 수 있습니다.
스택 구조를 토대로 Payload를 작성해보면, 먼저 16byte 만큼 문자를 채워주고, 그 다음 2byte에 go 문자열을 채워주면 level10의 shell이 실행될 것 같습니다.
Payload 대입 결과 level10의 Password를 알 수 있었습니다.
No comments:
Post a Comment