• 카테고리

    질문 & 답변
  • 세부 분야

    보안

  • 해결 여부

    미해결

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)는 어떻게 해석하나요?? 처음보는 어셈블리어 코드라서 많이 헷갈립니다ㅠ

답변 1

답변을 작성해보세요.

0

안녕하세요.

1.  __attribute((regparm(3)) 는 말 그대로 gcc 컴파일 과정에서 해당 함수에 대한 attribute를 지정하는 것이며 대략 해석하자면, 해당 함수 포인터를 호출할 때 3개까지의 파라미터는 레지스터를 이용하여 전달하라는 뜻입니다.

2 ~ 3. 이 부분은 c언어의 inline assembly 문법이며, &rv를 input 변수(inline assembly 코드에 넘겨주는 파라미터)로 사용하여 rsp에 mov 하라는 뜻입니다. 즉, mov rsp, &rv 와 같습니다.

해당 내용들은 구글링을 통해 어렵지 않게 찾을 수 있으니, 참고하시기 바랍니다.

박상준님의 프로필

박상준

질문자

2021.07.22

답변 감사드립니다 :) 커널 넘 재밌어요