inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

리눅스 커널 해킹. A부터 Z까지

ret2usr exp.c 코드 이해..

276

박상준

작성한 질문수 3

0

ret2usr 익스플로잇 코드를 보면서 이해가 되지 않는 부분이 3가지가 있었습니다.

1. __attribute((regparm(3)) 이부분은 어떤 역할을 해주는 것인가요??

2. payload함수에서 mov %%rsp, %0 이렇게 되어있는데 %0값에 스택값이 저장되어 있나요..?

3.  payload함수에서 : : "r" (&rv)는 어떻게 해석하나요?? 처음보는 어셈블리어 코드라서 많이 헷갈립니다ㅠ

시스템 해킹 모의해킹 linux

답변 1

0

김현우

안녕하세요.

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

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

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

0

박상준

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

강의 들으며 정리한 글을 블로그에 공개로 올려도 될까요?

0

104

2

cred 구조체에 __randomize_layout이 적용된건가요?

0

91

1

ppt자료 문의

0

126

2

빌드환경 및 커널소스의 버전

0

154

1

Stack based BOF 강의에서 질문입니다.

0

199

2

kaslr 우회 기법에서 commit_creds, prepare_kernel_cred의 offset을 구하는 과정 질문

0

228

1

CTF 참가 시 전문 분야

0

330

1

SMAP 우회에서 궁금한게 하나 있습니다.

0

419

2

KADR 우회에서 init파일이 없는 경우는 어떻게 하나요?

0

474

1

KADR 우회에서 init파일이 없는 경우는 어떻게 하나요

0

318

1

여전히 해결책 없는 build_result

0

435

1

KASLR 강의에서 주어진 환경에서는 /proc/kallsyms 확인 못하는 것이 맞나요?

0

622

1

build_result가 안보입니다

0

299

1

kernel stack pivoting에서 gadget 관련 질문드립니다.

0

516

1

안녕하세요 수강중 궁금한 것이 있습니다.

0

583

2

pwndbg가 커널에 attach는 되는데 디스어셈코드나 레지스터 표시가 안됩니다.

0

593

1

가젯에 대해 이해가 잘 안됩니다.

0

616

1

Kernel KPTI 적용시 영향?

0

665

1

qemu 스크립트 실행시 Kernel panic이 발생합니다.

0

898

2

Kernel UAF

0

660

1

디버깅 방법

0

948

3

강의 자료 문의

0

383

1

boot.sh 실행시

0

369

1

Kernel Debugging

0

417

1