완료됨
FSB 관련 질문이 있습니다
payload가 %16c%6$hhn%16c%6$hn이면
- 6$에 위치한 주소 값을 역참조
- 역참조 후 0x10으로 값 변경
- 변경된 주소값을 역참조 후 0x20으로 변경
인줄 알았는데
결과는 6$에 위치한 주소값을 0x20으로 바꾸는 작업만 하고 끝납니다
printf가 payload를 어떤 순서로 읽어내는지 아시는 분 계신가요?
그리고 문제 푸신 분들은 fprintf함수를 2번 이상 호출했는지도 궁금합니다
#pwnable
작성자 정보
답변
1
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 이런식으로요.