본문으로 건너뛰기

SROP 빠른 감 잡기: sigreturn로 레지스터 풀세팅

SROP(Sigreturn Oriented Programming)는 sys_rt_sigreturn을 호출해 커널이 스택에 있는 sigcontext를 그대로 복원하게 만드는 기법입니다. ROP 체인 길이를 줄이거나, 가젯이 부족할 때 레지스터를 한 번에 세팅할 수 있어요. 핵심은 가짜 시그널 프레임을 스택에 올리고 syscall; retrt_sigreturn을 트리거하는 것.

흐름

  • 취약점으로 RIP 제어
  • 스택에 sigcontext 구조를 채움 (RSP, RIP, RDI/RSI/RDX 등)
  • rax=15(rt_sigreturn) 후 syscall
  • 커널이 레지스터 복원 → 원하는 코드로 점프

CTF 팁

  • pwntools.SigreturnFrame()로 프레임 생성
  • read(0, rsp, size)로 프레임을 추가로 덮어쓰기 가능
  • PIE/ASLR 환경이면 leak → SROP로 이어 붙이기

SROP는 “레지스터를 통째로 셋업하는 특수 ROP”라고 기억하면 쉽습니다. 가젯이 부족한 바이너리에서 특히 강력합니다.