FSB 관련 질문이 있습니다

payload가 %16c%6$hhn%16c%6$hn이면

  1. 6$에 위치한 주소 값을 역참조
  2. 역참조 후 0x10으로 값 변경
  3. 변경된 주소값을 역참조 후 0x20으로 변경

인줄 알았는데

결과는 6$에 위치한 주소값을 0x20으로 바꾸는 작업만 하고 끝납니다

printf가 payload를 어떤 순서로 읽어내는지 아시는 분 계신가요?

그리고 문제 푸신 분들은 fprintf함수를 2번 이상 호출했는지도 궁금합니다

#pwnable
작성자 정보
답변 1
avatar
Sechack
2024 Invitational Contenders

일단 당장 질문하신 내용에 대한 답변을 하자면

https://github.com/leesh3288/CTF/blob/master/2020/TWCTF_2020/blindshot/writeup.md

위 글을 읽어보세요. printf_internal 내부에서 첫 positional argument를 만나는 순간 이후 사용할 모든 argument를 전부 캐싱한다는 내용이 담겨있습니다. 따라서 값을 바꾸고 바꾼 값에 접근하고 싶다면 positional argument를 최대한 늦게 사용해야 합니다. %5$hn대신 %c%c%c%c%hn 이런식으로요.

2024.01.11. 20:17
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기