본문 바로가기

ROP3

ROP 기법 정리 ROP에 대해서 정리해 보겠다. ROP(Return Oriented Programming) ROP는 ASLR과 같은 메모리 보호 기법을 우회하기 위한 공격 기법이다. 더 잘 이해하기 위해서 연계적으로 설명하자면원래는 단순히 BOF로 return address를 조작하여 shell을 실행했었다.이를 막기 위해서 stack canary가 등장했지만 우회가 가능했고 aslr을 통해서 라이브러리 주소를 무작위로 배치하여 단순 bof를 불가능하게 하였다. 또한 스택이나 다른 실행 권한이 필요하지 않은 영역에서의 실행 권한을 제외하는 NX 보호가 생기게 된다. 그러나 aslr이 특정 영역은 변형하지 않는다는 조건을 위해 plt와 got를 이용한 라이브러리 주소를 도출하는 ROP, RTL 등의 기법이 나오게 된다. .. 2025. 11. 17.
[Dreamhack] basic_rop_x64 문제 풀이 Dreamhack의 pwnable 트랙에 있는 내용들을 미리 학습하고 오시면 이해가 편할 것이다. EnvironmentArch: amd64-64-littleRELRO: Partial RELROStack: No canary foundNX: NX enabledPIE: No PIE (0x400000) Partial RELRO가 적용되어 있어서 got overwrite가 가능하다. 코드를 보자면 #include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1);}void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbu.. 2025. 11. 16.
[Dreamhack] rop 문제 풀이 개인적으로 지금까지 문제 중 가장 어려웠고 가장 재밌었던 문제였다. Arch: amd64-64-little RELRO: Partial RELRO Stack: Canary found NX: NX enabled PIE: No PIE (0x400000) Stripped: No checksec으로 취약점을 확인해봤다. x64, Partial RELRO, Stack Canary, NX가 적용되어있다.Partial RELRO이므로 GOT overwrite가 가능하다.이유로는 plt는 고정 주소이고, .Partial RELRO는 .got.plt를 수정할 수 있기 때문에 plt를 통한 함수 흐름 제어가 가능해진다.이 부분은 다음에 완.. 2025. 10. 21.