본문 바로가기
Q&A2021년 10월 18일1분 읽기

ROP(Return Oriented Programming)이 뭔가요?

임
임하늘
조회 618댓글 2

시스템 해킹에서 ROP 기법이 뭔지 설명해주세요. 어려워서 이해가 안 됩니다.

댓글 2

김김영삼5년 전

ROP는 DEP(NX bit)로 스택에서 코드 실행이 불가능할 때 기존 코드 조각(gadget)을 연결하여 공격하는 기법입니다.

원리:

  1. 프로그램에 이미 존재하는 코드 조각(gadget) 찾기 — pop rdi; ret 같은 조각
  2. 스택에 가젯 주소를 순서대로 배치
  3. ret 명령어가 다음 가젯으로 점프
  4. 가젯들을 체인으로 연결하여 원하는 동작 수행

예시 (system("/bin/sh") 호출):

[buffer overflow]
[pop rdi; ret] ← gadget 1
["/bin/sh" 주소] ← rdi에 들어갈 값
[system() 주소] ← 다음 ret로 점프

도구:

  • ROPgadget — 가젯 검색
  • ropper — 가젯 검색 + 체인 자동 생성
  • pwntools — Python 익스플로잇 프레임워크
송송민지(guest)5년 전
많이 배웠습니다.
Ctrl+Enter로 등록