SROP 빠른 감 잡기: sigreturn로 레지스터 풀세팅
SROP(Sigreturn Oriented Programming)는 sys_rt_sigreturn을 호출해 커널이 스택에 있는 sigcontext를 그대로 복원하게 만드는 기법입니다. ROP 체인 길이를 줄이거나, 가젯이 부족할 때 레지스터를 한 번에 세팅할 수 있어요. 핵심은 가짜 시그널 프레임을 스택에 올리고 syscall; ret로 rt_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”라고 기억하면 쉽습니다. 가젯이 부족한 바이너리에서 특히 강력합니다.