Kernel Debugging
kernel ROP강의 내용중에서 질문이 있습니다.
왜 그러는지 test_write함수를 부를 때 kernel스택 상황을 보고 싶어서 디버깅을 해보았지만 여기서 막힌 상태입니다ㅠㅠ
```
/usr/src/linux-headers-$(uname -r)/scripts/extract-vmlinux bzImage > vmlinux
gdb ./vmlinux
target remote:1234
```
이후에는 write함수에서 syscall에서 si로 커널 쪽에서 gdb가 작동하는 것을 봤지만 심볼들이 다 죽어있어 test_write함수를 실행할 때 break point를 걸 수 없었습니다.
결론적으로는 왜 arr[8]인데 memset으로 40만큼 채워주는지 원인을 찾아내지 못 했습니다.
심볼이 다 죽어있고 test_write함수(디바이스 소스코드)를 디버깅할 때 break point를 어떻게 걸 수 있을까요?

Answer 1
0
안녕하세요.
1. exp.c 에서 memset(rop,0x41,40); 를 해주고 있지만, 이후 rop[4] 부터 rop 가젯을 넣었기 때문에 실제론 40바이트가 아닌 32바이트의 더미 값만 들어가게 됩니다(32바이트 이후부터 커널 스택의 return address가 저장되어 있음).
2. 커널이 실행되고, init 스크립트로 인해 모듈이 등록된 후엔 /proc/kallsyms에서 모듈의 심볼을 확인할 수 있습니다.
init 스크립트를 수정하여 root권한으로 변경한 뒤, cat /proc/kallsyms | grep test_write 명령을 통해 함수의 주소를 확인할 수 있습니다.
강의 들으며 정리한 글을 블로그에 공개로 올려도 될까요?
0
68
2
cred 구조체에 __randomize_layout이 적용된건가요?
0
79
1
ppt자료 문의
0
104
2
빌드환경 및 커널소스의 버전
0
131
1
Stack based BOF 강의에서 질문입니다.
0
175
2
kaslr 우회 기법에서 commit_creds, prepare_kernel_cred의 offset을 구하는 과정 질문
0
211
1
CTF 참가 시 전문 분야
0
312
1
SMAP 우회에서 궁금한게 하나 있습니다.
0
402
2
KADR 우회에서 init파일이 없는 경우는 어떻게 하나요?
0
460
1
KADR 우회에서 init파일이 없는 경우는 어떻게 하나요
0
310
1
여전히 해결책 없는 build_result
0
423
1
KASLR 강의에서 주어진 환경에서는 /proc/kallsyms 확인 못하는 것이 맞나요?
0
602
1
build_result가 안보입니다
0
285
1
kernel stack pivoting에서 gadget 관련 질문드립니다.
0
501
1
안녕하세요 수강중 궁금한 것이 있습니다.
0
570
2
pwndbg가 커널에 attach는 되는데 디스어셈코드나 레지스터 표시가 안됩니다.
0
579
1
가젯에 대해 이해가 잘 안됩니다.
0
604
1
Kernel KPTI 적용시 영향?
0
652
1
qemu 스크립트 실행시 Kernel panic이 발생합니다.
0
878
2
Kernel UAF
0
646
1
디버깅 방법
0
928
3
강의 자료 문의
0
374
1
boot.sh 실행시
0
359
1
./boot_sh를 통해 qemu-script 실행 시 커널 실행이 안됩니다.
0
369
3

