완료됨
포맷 스트링 실습 다른 답
이런 답은 불가능 한가요?
%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코드를 임의로 수정하지 못합니다. 즉 "는 문자열 리터럴을 벗어나지도 않고 //는 주석 역할을 하지 못합니다.