묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결해킹 입문부터 중급까지, 한 번에 배우는 시스템 해킹 & 리버싱
log, debug
Logging & Debugging 첫 명령으로 context.log_level = 'debug' 에 대해 설명해주시는데, level이 lovel 이라고 오타가 나있습니다...! (영상 강의)
-
미해결해킹 입문부터 중급까지, 한 번에 배우는 시스템 해킹 & 리버싱
디스코드
디스코드 초대장을 통해서 들어갔는데 메세지를 불러오지 못했어요. 라고 뜹니다.
-
미해결해킹 입문부터 중급까지, 한 번에 배우는 시스템 해킹 & 리버싱
디스코드 DM으로 이메일/과정명 인증 오류
디스코드 DM으로 인프런 이메일과 과정명을 입력하라고 되어있는데, 과정명을 입력하면 계속 오류가 발생하고 관리자에게 문의하라는 메시지만 나오네요. 확인 부탁드립니다.
-
해결됨해킹 입문부터 중급까지, 한 번에 배우는 시스템 해킹 & 리버싱
Rev-basic-0
BASIC-1은 제대로 나오는데 0이랑 2는 왜 이렇게 나오는 건가요???
-
미해결리눅스 커널 해킹. A부터 Z까지
cred 구조체에 __randomize_layout이 적용된건가요?
cred 구조체 소스코드를 elixir를 통해 확인해보니 다음과 같았습니다. (실습 버전인 5.8.5 기준)struct cred { atomic_t usage; #ifdef CONFIG_DEBUG_CREDENTIALS atomic_t subscribers; /* number of processes subscribed */ void *put_addr; unsigned magic; #define CRED_MAGIC 0x43736564 #define CRED_MAGIC_DEAD 0x44656144 #endif kuid_t uid; /* real UID of the task */ kgid_t gid; /* real GID of the task */ kuid_t suid; /* saved UID of the task */ kgid_t sgid; /* saved GID of the task */ kuid_t euid; /* effective UID of the task */ kgid_t egid; /* effective GID of the task */ kuid_t fsuid; /* UID for VFS ops */ kgid_t fsgid; /* GID for VFS ops */ unsigned securebits; /* SUID-less security management */ kernel_cap_t cap_inheritable; /* caps our children can inherit */ kernel_cap_t cap_permitted; /* caps we're permitted */ kernel_cap_t cap_effective; /* caps we can actually use */ kernel_cap_t cap_bset; /* capability bounding set */ kernel_cap_t cap_ambient; /* Ambient capability set */ #ifdef CONFIG_KEYS unsigned char jit_keyring; /* default keyring to attach requested * keys to */ struct key *session_keyring; /* keyring inherited over fork */ struct key *process_keyring; /* keyring private to this process */ struct key *thread_keyring; /* keyring private to this thread */ struct key *request_key_auth; /* assumed request_key authority */ #endif #ifdef CONFIG_SECURITY void *security; /* subjective LSM security */ #endif struct user_struct *user; /* real user ID subscription */ struct user_namespace *user_ns; /* user_ns the caps and keyrings are relative to. */ struct group_info *group_info; /* supplementary groups for euid/fsgid */ /* RCU deletion */ union { int non_rcu; /* Can we skip RCU deletion? */ struct rcu_head rcu; /* RCU deletion hook */ }; } __randomize_layout;이 중 마지막 __randomize_layout 이 뭔지 찾아보니 커널에서 정의한 매크로이고 구조체의 순서를 랜덤화하는 일종의 보호 기법이라는 것을 알았습니다. 실습을 따라가보니 uid, gid, suid, sgid를 순서대로 덮기 때문에 현재 커널에서 이 보호 기법이 적용되지 않았다는 것을 알 수 있었습니다. 이 매크로의 정의 부분은 총 두 부분이고 다음과 같았습니다.#if defined(RANDSTRUCT_PLUGIN) && !defined(__CHECKER__) #define __randomize_layout __attribute__((randomize_layout)) #define __no_randomize_layout __attribute__((no_randomize_layout)) /* This anon struct can add padding, so only enable it under randstruct. */ #define randomized_struct_fields_start struct { #define randomized_struct_fields_end } __randomize_layout; #endif #ifndef __randomize_layout # define __randomize_layout __designated_init #endif첫 번째 부분에서는 flag처럼 보이는 RANDSTRUCT_PLUGIN 과 __CHECKER__ 에 cross reference(?)가 더이상 안돼서 확인은 못했습니다만, 이게 define 되어있으면 __randomize_layout 매크로를 정의하는 것 같아보입니다. 반대로 flag가 켜져있지 않아 첫 번째 부분에서 매크로 선언이 이뤄지지 않으면 두 번째 부분에서 __designated_init 으로 어쨌든 선언은 되는 것 같습니다. 마지막으로 __designated_init 의 선언 부분을 보면 다음과 같습니다.#if __has_attribute(__designated_init__) # define __designated_init __attribute__((__designated_init__)) #else # define __designated_init #endif첨부는 했지만 어떻게 동작하는건지 잘 모르겠어서 여기부터 이해가 안됐습니다... 제 질문은 다음과 같습니다. 구조체 멤버 랜덤화가 적용되어야 할 것 같은데 강의자님께서 일부러 커널을 빌드할 때 소스코드를 수정하신건가요?아니라면 __designated_init__ 이 없기 때문에 빈 매크로가 할당된 것 같은데, 이게 어떤 플래그이며 어떻게 키고 끌 수 있는건가요?커널 소스코드를 확인할 때 RANDSTRUCT_PLUGIN 과 __CHECKER__ 같이 더 이상 cross reference가 불가능한 경우는 어떻게 값을 확인할 수 있나요?정작 __randoimze_layout 이 붙었을 때 어떻게 메모리 레이아웃을 변경하는지에 대한 로직은 못찾았는데, 이런 부분은 어디서 확인할 수 있을까요?강의자님 경험상 대회나 리얼월드 커널에서 구조체 멤버 랜덤화가 잘 적용되어있는 편인가요? 질문이 길어졌는데, 답변주시면 큰 도움이 될 것 같습니다. 감사합니다.
-
미해결해킹대회(CTF) 출전을 위한 시스템해킹(Pwnable) 입문
사이트가 안들어가져요
hacktheworld 사이트가 안들어가져요
-
미해결해킹 입문부터 중급까지, 한 번에 배우는 시스템 해킹 & 리버싱
gdb 실행
gdb 설치까지 완료햇는데... 파일을 읽어서 디버거를 실행할려고 하니 심볼이 없다고 뜹니다.. 제가 아무리 해봐도 안되는데 어떻게 해야할까요???ㅠㅠㅠ또는 함수들이 없어서 아무것도 할 수 없는 상태입니다ㅠㅠㅠ
-
미해결해킹 입문부터 중급까지, 한 번에 배우는 시스템 해킹 & 리버싱
gdb를 설치
gdb를 설치를 할려하니 sudoers가 없다고 나오고 user(kkk)에게 권한을 주려했으나 명령어가 존재하지 않다고 뜨는데 해결방법 아시나요?
-
미해결해킹 입문부터 중급까지, 한 번에 배우는 시스템 해킹 & 리버싱
gdb설치가 안됩니다.
데비안 리눅스로 설치해서 패키지를 다운로드 받을려 하니 please insert the disc labeled 라고 뜹니다,,,ㅠㅠ
-
해결됨해킹 입문부터 중급까지, 한 번에 배우는 시스템 해킹 & 리버싱
handray 문제 푸는 법을 모르겠습니다.
디버거에다가 실행했는데 뭘 어떻게 해야할지 모르겠어요
-
미해결해킹 입문부터 중급까지, 한 번에 배우는 시스템 해킹 & 리버싱
가상환경 세팅은 어디로 들어가야 볼 수 있나여?
찾아도 안보입니다..
-
해결됨리눅스 커널 해킹. A부터 Z까지
ppt자료 문의
강의 내용을 복습하며 정리하던 중, 수업 중 사용하신 PPT 자료를 참고하고 싶어 이렇게 문의드립니다.혹시 가능하시다면 해당 PPT자료를 공유해주실 수 있을까요?학습 목적으로만 활용하겠습니다.감사합니다.
-
미해결해킹 입문부터 중급까지, 한 번에 배우는 시스템 해킹 & 리버싱
basic-asm-3 문제 풀이 이해가 안돼요.
basic-asm-3 문제에서 반복하는 부분이 이해가 안돼요.
-
미해결해킹 입문부터 중급까지, 한 번에 배우는 시스템 해킹 & 리버싱
디스코드 서버
디스코드 서버 올바르지 않은 초대장이라고 떠요.
-
해결됨리눅스 커널 해킹. A부터 Z까지
빌드환경 및 커널소스의 버전
강의에서는 빌드환경 우분투18 및 커널소스 5.8.5 가 사용되었는데 25년 초 기준으로 우분투24 및 커널소스 6.14.7 (stable 기준) 까지 나온 상태입니다. 최근 버전 기준으로 환경을 세팅해도 강의를 진행하는데 문제가 없는지 궁금합니다.
-
해결됨이해하면 인생이 바뀌는 Windows API hook
8강과 9강에서 jmp해야하는 main의 상대 주소가 달라요.
안녕하세요 강사님.8강과 9강에서는 testFunc을 targetFunc의 도입부에 넣어 실행을 시키고main으로 다시 돌아오도록 코드가 되어있는데요main의 시작점과 리턴을 희망하는 위치를 계산해보면 강의 자료보다 큰 값이 나옵니다.질문1. x86으로 최적화를 하지 않고 똑같이 실행을 했는데 왜 다른지 궁금합니다.제 코드를 디스어셈블리에서 보면 강의에서 보이는것보다 많은 기계어들이 보입니다. 질문2. "jmp main + 86h" 에서 86대신 D0 이런식으로 계산 결과가 나왔을 때 빌드 에러가 발생하고 있습니다. 0xD0 이런식으로 넣으면 빌드 에러는 나지 않지만 다른곳으로 점프를 하는것 같고요. 어떻게 해결을 해야할까요?
-
미해결해킹대회(CTF) 출전을 위한 시스템해킹(Pwnable) 입문
hacktheworld 사이트가 들어가지지 않습니다
hacktheworld 사이트가 들어가지지 않습니다. 문제 실습 파일을 받고 싶은데 어떻게 해야할까요?
-
미해결리눅스 커널 해킹. A부터 Z까지
Stack based BOF 강의에서 질문입니다.
이 강의 전의 기존 ROP방식에서는카나리 다음에 레지스터값들이 저장안되었는데 이번에는 왜 저장될까요?또 위 사진 rop[i++] 14, 15번째(swapgs_restore... 바로 밑)는 왜 0x41414141로 될까요?이것도 저번 강의랑 조금 달라 질문드립니다.
-
해결됨이해하면 인생이 바뀌는 Windows API hook
Visual Studio release x86 디버깅 브레이크
안녕하세요.개발자는 아니지만 업무에 꼭 필요한 내용이 있어서 해당 강의를 수강하게 되었습니다.사전지식이 전혀 없는 상태에서 열심히 검색하며 강의를 듣고 있는 상태입니다.함수 프롤로그와 에필로그 강의 9분 20초 부분에 F9 를 눌러 브레이크 걸어주고 F5를 했을 때 브레이크가 되지 않고 넘어가버립니다.잠깐 1초정도 브레이크가 되었다가 그냥 넘어가는 바람에 디스어셈블리 창도 뜨지 않습니다.[종단점 설정 확인] [F5 실행 시 상태 확인] 혹시 제가 놓치는 부분이 있을까요?
-
미해결리눅스 커널 해킹. A부터 Z까지
kaslr 우회 기법에서 commit_creds, prepare_kernel_cred의 offset을 구하는 과정 질문
강의 영상에서 보면 루트 권한으로proc/kallsyms 파일에 내용에서 commit_creds, prepare_kernel_cred의 offset을 찾고 있는데 이건 이미 루트 권한을 획득 했을때 얘기이고 루트 권한을 얻기 위해 익스 코드를 짜야 되는 상황에서의 저런 offset은 어떻게 얻을 수 있나요?