오늘은 간단하게 Format String Bug Payload를 자동으로 작성해주는 함수에 대해 작성해보려한다.
여태까지 사용자의 입력값이 출력되는 offset을 찾고, Payload를 직접 하나하나 계산해서 작성했었는데 Pwntools에 있는 fmtstr_payload 함수를 사용하면 손쉽게 Payload를 작성해준다.👍
사용방법은 간단하다.
payload = fmtstr_payload(offset, {주소 : 덮을 값})
# ex.
payload = fmtstr_payload(6, {changeme_addr:value})
이런 식으로 작성해주면 알아서 FSB Payload를 작성해준다.
참고로 offset은 사용자의 입력값이 나타나는 offset을 의미한다.
위의 상황일 때, offset은 6이 된다.
context.bits = 64
64비트 환경이라면, context.bits를 통해 64비트 환경임을 명시해줘야한다. context.bits를 통해 명시해주지 않으면, 오류가 발생한다.
좀 더 fmtstr_payload 함수에 대해 알고싶으면, 아래의 docs를 확인해보자.
👉 https://docs.pwntools.com/en/stable/fmtstr.html