완료됨
포맷 스트링 실습 다른 답

이런 답은 불가능 한가요?
%x",flag);//
이렇게 넣어서
printf("%x",flag);//");

이런식으로 flag 출력은 안되나요??

#시스템해킹
작성자 정보
더 깊이 있는 답변이 필요할 때
드림핵 팀과 멘토에게 직접 문의해 보세요!
답변 1
2dedce
워게임 고인물

printf(buf);에서 buf = "%x\",flag);//"가 된다고 한들 printf("%x",flag);//");가 되지 않고 printf("%x\",flag);//");이 됩니다. 기대하는 것처럼 단순히 printf(buf);에서 buf가 %x",flag);//로 치환되는 방식으로 작동하지 않습니다. 몇몇 스크립트 언어에서 치환 방식으로 작동하기 때문에 그런 방식으로 리터럴을 벗어나서 원하는 코드를 인젝션할 수 있지만 C언어는 컴파일 언어로 실행 중 C코드를 임의로 수정하지 못합니다. 즉 "는 문자열 리터럴을 벗어나지도 않고 //는 주석 역할을 하지 못합니다.

2020.08.02. 15:56