system hacking

Layer7 포너블 2차시 과제 - basic_exploitation_000 풀이

leesu0605 2022. 9. 21. 13:06

일단 C언어 코드가 들어있는 파일을 VSC로 열어보았다.

이와 같은 코드가 나오는데, 잘 보면 buf의 길이는 128이지만, 입력받는 길이는 141바이트인 걸 볼 수 있다.
또, buf의 주소도 있기 때문에 buf에 쉘코드를 넣고, main의 ret주소를 buf의 주소로 변조하면 쉘을 따낼 수 있을 것이다.

한 번 페이로드를 구성해보자.

이렇게 (쉘코드와 dummy값으로 buf와 sfp까지 = 배열의 크기 : 128 + sfp : 4 = 132) 채우고, buf의 주소로 ret를 변조해 main함수가 리턴될 때 eip를 쉘코드로 옮겨 쉘을 따내도록 실행 흐름을 조작했다.

한번 실행해보자.

이렇게 쉘이 따지고 플래그도 출력된 걸 볼 수 있다.

flag : DH{465dd453b2a25a26a847a93d3695676d}