-
카테고리
-
세부 분야
보안
-
해결 여부
미해결
ret2usr exp.c 코드 이해..
21.07.20 23:06 작성 조회수 115
0
ret2usr 익스플로잇 코드를 보면서 이해가 되지 않는 부분이 3가지가 있었습니다.
1. __attribute((regparm(3)) 이부분은 어떤 역할을 해주는 것인가요??
2. payload함수에서 mov %%rsp, %0 이렇게 되어있는데 %0값에 스택값이 저장되어 있나요..?
3. payload함수에서 : : "r" (&rv)는 어떻게 해석하나요?? 처음보는 어셈블리어 코드라서 많이 헷갈립니다ㅠ
답변을 작성해보세요.
0
김현우
지식공유자2021.07.22
안녕하세요.
1. __attribute((regparm(3)) 는 말 그대로 gcc 컴파일 과정에서 해당 함수에 대한 attribute를 지정하는 것이며 대략 해석하자면, 해당 함수 포인터를 호출할 때 3개까지의 파라미터는 레지스터를 이용하여 전달하라는 뜻입니다.
2 ~ 3. 이 부분은 c언어의 inline assembly 문법이며, &rv를 input 변수(inline assembly 코드에 넘겨주는 파라미터)로 사용하여 rsp에 mov 하라는 뜻입니다. 즉, mov rsp, &rv 와 같습니다.
해당 내용들은 구글링을 통해 어렵지 않게 찾을 수 있으니, 참고하시기 바랍니다.
답변 1