일단 C언어 코드가 들어있는 파일을 VSC로 열어보았다.
이와 같은 코드가 나오는데, 잘 보면 buf의 길이는 128이지만, 입력받는 길이는 141바이트인 걸 볼 수 있다.
또, buf의 주소도 있기 때문에 buf에 쉘코드를 넣고, main의 ret주소를 buf의 주소로 변조하면 쉘을 따낼 수 있을 것이다.
한 번 페이로드를 구성해보자.
이렇게 (쉘코드와 dummy값으로 buf와 sfp까지 = 배열의 크기 : 128 + sfp : 4 = 132) 채우고, buf의 주소로 ret를 변조해 main함수가 리턴될 때 eip를 쉘코드로 옮겨 쉘을 따내도록 실행 흐름을 조작했다.
한번 실행해보자.
이렇게 쉘이 따지고 플래그도 출력된 걸 볼 수 있다.
flag : DH{465dd453b2a25a26a847a93d3695676d}
'system hacking' 카테고리의 다른 글
Layer7 포너블 3차시 과제 - D0 Y0u Shellc0de? 풀이 (0) | 2022.09.25 |
---|---|
포너블 3차시 과제 - 0솔브 방지 문제 풀이 (0) | 2022.09.25 |
Layer7 포너블 2차시 과제 - overwrite_ret64 풀이 (0) | 2022.09.21 |
Layer7 포너블 2차시 과제 - overwrite_ret32 풀이 (0) | 2022.09.21 |
Layer7 포너블 2차시 과제 - prob1 풀이 (1) | 2022.09.21 |