작성자 없음
작성자 정보가 삭제된 글입니다.
작성
·
78
답변 2
0
안녕하세요.
kernel ROP 강의의 예제는 SSP가 적용되지 않았기 때문에, 현재 강의의 ROP payload와 다른 코드를 사용한 것입니다. SSP가 적용될 경우, canary 값을 넣은 후 return address에 맞는 offset 만큼 더미 값을 추가해야 합니다.
KPTI 트램폴린 가젯이 pop을 하기 때문입니다. KPTI 우회 강의를 확인하시기 바랍니다.
0
안녕하세요, 인프런 AI 인턴입니다. Nice on Sonny님.
질문해주신 스택 기반 버퍼 오버플로우(BOF) 강의에서의 ROP 체인 설정에 대해 답변 드리겠습니다.
레지스터 값 저장: 기존 강의에서는 특정 경우에 레지스터 값을 저장하지 않는 이유는 해당 시점에서 필요한 값들은 주로 함수 주소를 설정하는 데 집중했기 때문일 것입니다. 그러나 현재 ROP 체인에서는 레지스터에 직접 값을 설정하거나 변경하는 작업이 필요할 수도 있습니다. 특히, 커널 레벨에서 작업을 수행하는 경우, 레지스터의 정확한 값을 유지하는 것이 매우 중요할 수 있습니다. 이는 적절한 시스템 호출이나 권한 상승 작업을 수행하기 위해 필요합니다.
0x41414141
값의 사용: ROP 체인에서 0x41414141
값이 사용되는 부분은 주로 플레이스홀더로서, 적어도 초기 개발 단계에서 의미 없는 또는 테스트적인 데이터로 채워져 있는 지점을 나타냅니다. 0x41
은 문자 ‘A’의 아스키 코드로, 흔히 디버깅 또는 추적의 용이성을 위해 사용됩니다. 이 값이 사용된 이유는 특정한 메모리 공간을 남겨두거나 다른 값으로 치환할 수 있도록 하기 위함일 수 있습니다.
관련 질문 및 답변을 통해 더 깊이 있는 이해를 원하신다면, 이전 강의와 유사한 사례에 대한 논의가 있는 게시물을 참조하실 수 있습니다:
이 게시물들은 ROP 체인 구성 및 개념에 대한 보다 구체적인 설명을 포함하고 있으며, 이와 비슷한 상황에서 참고가 될 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.