Return Oriented ProgrammingROP는 리턴 가젯을 사용하여 복잡한 실행 흐름을 구현하는 기법이다. 공격자는 이를 이용해서 문제 상황에 맞춰 return to library, return to dl-resolve, GOT overwrite 등의 페이로드를 구성할 수 있다. ROP 페이로드는 리턴 가젯으로 구성되는데, ret 단위로 여러 코드가 연쇄적으로 실행되는 모습에서 ROP chain이라고도 불린다. 아래 예제 코드를 스택 카나리, NX을 적용하여 컴파일한 바이너리를, ROP를 이용한 GOT Overwrite으로 익스플로잇하는 실습을 진행해보자. 📌 ROP 실습 예제 코드// Name: rop.c// Compile: gcc -o rop rop.c -fno-PIE -no-pie#in..
WebGoat를 도커 컨테이너에 올려 실습을 진행한 후 실습이 마무리 되어 종료하고 다시 실행할 경우에는 어떻게 다시 WebGoat 실습 환경으로 접속할 수 있을까? 그 방법에 대해 자세히 알아보고자 한다 1.1 명령어로 재실행우선 윈도우 파워쉘을 관리자 권한으로 열고, 명령어로 컨테이너를 재시작하기 위해서는 어떤 컨테이너를 가동할지 컨테이너 리스트를 확인해주어야 한다. docker ps : 컨테이너의 리스트를 불러오는 명령어docker ps -a : 종료된 컨테이너를 포함한 모든 컨테이너 리스트를 출력하는 명령어 가동할 컨테이너의 리스트를 확인했다면 'docker start [가동할 컨테이너의 ID 또는 이름]'으로 실행시킬 수 있다. 우리는 WebGoat를 실행시킬 것이기 때문에 'docker sta..