인프런 커뮤니티 질문&답변
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. 제갈융님.
ROP (Return-Oriented Programming) 관련 문제에서 의도한대로 ls 명령을 실행했는데도 기대한 결과가 표시되지 않는 경우에는 여러 가지 원인이 있을 수 있습니다. 다음은 고려할 만한 몇 가지 사항입니다:
메모리 손상 여부: ROP 체인 구성 시, 스택에 잘못된 값이 덮어쓰여 프로그램 흐름이 예상과 다르게 진행될 수 있습니다. 메모리 주소와 오프셋을 다시 한번 점검해보세요.
라이브러리 버전 차이: 로컬 환경과 서버 환경의 라이브러리 버전 차이로 인해 메모리 주소 등이 상이할 수 있습니다. 실행 환경을 최대한 동일하게 맞추거나, ASLR(Address Space Layout Randomization) 등의 무작위화 기법이 영향을 미치고 있지는 않는지 확인이 필요합니다.
출력 버퍼링 문제: 출력이 버퍼링되어 stdout에 표시되지 않을 수 있습니다.
stdio(표준입출력)를 언버퍼링(Unbuffering) 모드로 설정해보세요. 이를 위해setvbuf(stdout, NULL, _IONBF, 0);를 사용하거나,fflush(stdout);을 적절한 위치에 삽입할 수 있습니다.권한 및 경로 문제:
flag파일의 경로나 권한에 따라 접근이 제한될 수도 있습니다.ls를 실행했을 때 해당 파일이 나오는지 확인하세요. 디렉토리의 모든 파일과 디렉토리를 일일이 탐색해보는 것도 방법입니다.
추가적으로 참고할 수 있는 유사한 질문 및 답변은 다음과 같습니다:
질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해 드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.





