본문 바로가기

보안

[시스템해킹] Return Oriented Programming(ROP); ret2main

  • 함수 실행 후 main으로 다시 돌아가게 가젯 구성; GOT overwrite 안해도 쉘 획득 가능임

 

  •  basic_rop_x86

-> 이번엔 32비트임, canary X

 

  • 32비트 함수 호출 규약

- rdi, rsi 등 레지스터로 인자를 전달해주던 64비트와 달리 32비트는 스택으로 전달해줌

- x86 바이너리에서 pop 명령어의 피연산자는 중요하지 않다고.. 

- 인자 2개 필요하면 pop; pop; ret 이런 가젯을 찾아야 한다고..

 

  • 익스플로잇

 

 

 

 

 

 

 

- puts_plt 구해서 read 함수 실제 주소 구하고 main으로 return

- x86 함수 호출 규약 알아야 함

- 함수 인자 개수만큼 pop 필요

- 지금 보니까 ret 가젯은 필요 없고

- 첫번째 payload로 구한 read 주소를 이용해 libc base와 system 함수 주소 구함

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

드림핵 워게임 basic_rop_x86