inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

cr4 overwrite 질문입니다.

236

tjdrnrwlals1

작성한 질문수 7

0

1.  memset 함수로 rop 배열 전체에 A 를 채워넣은것이 맞나요? 만약 그렇다면 사용되지 않은 8, 9번째 인덱스들은 의미가 없는건가요?

2. 15번째줄 ~ 17번째줄에서 rop 인덱스에 대입하는 16진수의 저 코드들은 어떻게해서 구할 수 있는건지 궁금합니다. 알기 위해선 어떤 공부가 필요한가요? 

모의해킹 시스템 해킹 linux

답변 1

1

김현우

안녕하세요.

1. memset 함수로 rop[0] 부터 rop[3] 까지 A 더미값을 넣어 준 것입니다. (코드상에선 ~ rop[4] 까지 채우지만, 실제론 그 다음 줄에 의해 ~ rop[3] 까지만 적용됩니다.)

이는 강의에서 설명이 나오다시피 커널 스택에서 return address가 저장된 부분에 rop payload를 맞춰 넣기 위한 작업입니다. 

그리고 질문주신 내용대로 8~9 인덱스들은 의미가 없습니다.

2. 15 ~ 17 번째 줄에서는 intel 아키텍쳐의 어셈블리 언어가 작성되어 있습니다.

해당 부분을 c언어로 간단히 표현하자면,

cr4 = 0x1006f0 - (1<<20);

위와 같이 표현할 수 있겠습니다. cr4는 변수가 아니라 레지스터 이지만요.

cr4 레지스터에 대한 설명은 강의에 포함되어 있습니다.

이 15 ~ 17 번째 줄 부분은 인텔 아키텍쳐의 어셈블리 언어(어셈블리 언어는 아키텍쳐 별로 다릅니다)를 공부하시고, 구글에 ROP(return oriented programming) 를 검색하여 공부하시면 도움이 될 것 같습니다.

감사합니다.

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

0

103

2

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

0

90

1

ppt자료 문의

0

125

2

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

0

152

1

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

0

199

2

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

0

228

1

CTF 참가 시 전문 분야

0

328

1

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

0

418

2

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

0

472

1

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

0

317

1

여전히 해결책 없는 build_result

0

433

1

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

0

622

1

build_result가 안보입니다

0

298

1

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

0

514

1

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

0

581

2

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

0

591

1

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

0

615

1

Kernel KPTI 적용시 영향?

0

664

1

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

0

895

2

Kernel UAF

0

659

1

디버깅 방법

0

948

3

강의 자료 문의

0

383

1

boot.sh 실행시

0

368

1

Kernel Debugging

0

417

1