대기중
*d 작동 과정에 대하여..

busybox 문제를 해결할 방법과 페이로드를 다 구상하였습니다. 그런데 마지막에 *를 이용해서 return 주소를 바꾸려고 하였는데 의도한 대로 변하지 않네요. 풀이 코드를 공개 할 수가 없어서 곤란하지만 *d를 사용하는 부분만 넣자면

one_gadget = 0xe6c84
libc_start_main = 0x270b3

payload = b"%c" * 8 + b"%" + str(one_gadget-libc_start_main-8).encode() + b"c" + b"%*9$d" + b"%n"

다음과 같습니다. *를 이용하여 __libc_start_main 하위 4바이트를 가져와 return 주소가 원가젯이 되기를 기대하였는데 다음과 같이 이상한 주소로 변합니다.

어느 부분이 문제인지 궁금합니다. 혹은 *를 사용안하고도 풀 수 있는 방법이 존재하는건가요? 답변 부탁드립니다.

(문제를 풀긴 했는데 아직도 이게 왜 안되는지 모르겠습니다.. 환경 문제인 건지.. 이유가 짐작 가시는 분은
답변 부탁드립니다.)

#pwnable
작성자 정보
더 깊이 있는 답변이 필요할 때
드림핵 팀과 멘토에게 직접 문의해 보세요!
답변 0