쓰기 권한이 있는 tmp 디렉터리로 이동하여 attackme 파일을 gdb 로 분석한다.
hint 에서 언급한 코드에서 str[256] 은 위 빨간 박스에서 할당된다.
할당은 264만큼 받았음으로 dummy가 8byte 존재하게된다.
스택 구조를 그려보면 아래와 같다.
41byte shell code는 아래와 같다.
\x31\xc0\xb0\x31\xcd\x80\x89\xc3\x89\xc1\x31\xc0\xb0\x46
\xcd\x80\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69
\x6e\x89\xe3\x50\x53\x89\xe1\x31\xd2\xb0\x0b\xcd\x80
위 shell code를 export 명령을 통해 아래와 같이 환경변수에 등록해준다.
환경변수에 등록된 shell code의 주소를 찾기 위해 아래와 같이 코드 작성 후 컴파일하여 실행한다.
위에서 계산했던 268byte에 "A"를 채워넣고 뒤에 shell code주소를 호출하면 오버플로우에
의해 return 실행 부분에서 shell code가 실행된다.
아래는 작성된 페이로드 코드이다.
[ftz] hacker school level13 풀이 (0) | 2020.04.28 |
---|---|
[ftz] hacker school level12 풀이 (0) | 2020.04.27 |
[ftz] hacker school level10 풀이 (0) | 2020.04.27 |
[ftz] hacker school level9 풀이 (0) | 2020.04.27 |
[ftz] hacker school level8 풀이 (0) | 2020.04.27 |