반응형
Gadget의 본래의 개념은 프로그램 상에서 코드 조각을 지칭하였으며, 프로그램 내에 존재하는 명령어 조각.
기존 프로그램에 존재하지만 libc파일에도 존재하며, ret로 끝나는 연속된 명령어들을 의미.
하는 함수의 인자가 3개 일 경우 : "pop; pop; pop; ret" |
호출 하는 함수의 인자가 2개 일 경우 : "pop; pop; ret" |
호출 하는 함수의 인자가 1개 일 경우 : "pop; ret" |
호출 하는 함수의 인자가 없을 경우 : "ret" |
참고 : https://hg2lee.tistory.com/entry/%EC%8B%9C%EC%8A%A4%ED%85%9C-Gadget-%EA%B0%80%EC%A0%AF
Gadget 구하는 방법
1. ROPgadget 활용
설치 방법
$ python3 -m pip install ROPgadget --user
--re 옵션을 사용하면 정규표현식으로 가젯을 필터링
ROPgadget --binary (파일명) | grep '(찾을 가젯)'
사용 예시
$ ROPgadget --binary ./rtl --re "pop rdi"
2.objdump 이용
objdump -d "파일명" | grep -B(숫자) "가젯명"
-d 는 파일을디스어셈블 작업할 때 사용하는 명령어고,
grep 뒤에 붙어있는 -B(숫자)는 "패턴이 매치된 각 라인기준으로 (숫자)만큼의 줄을 출력"의 기능을 가지고 있습니다.
대충 둘을 같이 쓰면
파일을 디스어셈블해서 그 안에 내가 찾아달라고 했던 가젯이 있으면 걔를 기준으로 (숫자)줄 만큼 출력해줘
반응형