일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- cwe-506
- newbie
- Kernel
- liblzma
- rootfs
- CVE-2024-3094
- kernel build
- 백도어
- xz-utils
- kernel img
- kernel image
- Today
- Total
목록전체 글 (80)
ZZoMb1E

※ 잘못된 부분이 있으면 알려주세요. 확인 후 수정하도록 하겠습니다. ※ Frame Pointer Overflow (간략하게 설명)sfp를 변조하는 것으로, 결과적으로 보았을 때, IP 레지스터를 변조하는 기법이다.sfp 영역에 최소 1바이트 이상의 overflow가 가능해야 한다.main()이외의 함수가 필요하다. 이 기법은 Epilogue 때문에 가능하다. leave - ret는 이전 함수의 sfp를 복구하고, return을 수행한다.각 구성을 제대로 살펴보면 아래와 같다.leave - mov esp, ebp - pop ebpret - pop eip - jmp eip 간단한 그림을 가지고 살펴보겠다.일반적으로 함수가 호출되면 위와 같은 구조를 지니게 된다.이제 여기에 FPO를 시행해보겠다.먼저 mo..

※ 잘못된 부분이 있으면 알려주세요. 확인 후 수정하도록 하겠습니다. ※ Out Of Bounds는 배열의 인덱스 값을 음수 혹은 배열의 크기를 벗어난 값을 입력했을 때 발생한다. 개발할 때 인덱스에 대한 검증 과정 코드만 넣어주면 방지가 가능하다. if (idx = 128) { printf("Invalid index!\n"); return; } 아래 예제를 가지고 살펴보도록 하겠다.// gcc -no-pie -fno-stack-protector -z execstack -o ex ex.c#include #include void gift() { printf("Hello! ZZoMblE"); system("/bin/sh");}void initialize() { set..

※ 잘못된 부분이 있으면 알려주세요. 확인 후 수정하도록 하겠습니다. ※ canary leak을 다룰 때도 사용했던 기법이다.https://whrdud727.tistory.com/entry/PWNABLE-Canary-%EC%9A%B0%ED%9A%8C [PWNABLE] Canary 우회※ 잘못된 부분이 있으면 알려주세요. 확인 후 수정하도록 하겠습니다. ※ 이전 포스팅에서 canary에 대해 다루었다. 이번에는 그 우회 방법들을 다루겠다. 1. canary leak 2. got overwrite (간단하게만 설whrdud727.tistory.com canary뿐만 아니라 stack, pie_base, libc_base 등의 값을 leak할 때 가장 많이 사용하는 친구 중 하나이다.일반적으로 printf(..

※ 잘못된 부분이 있으면 알려주세요. 확인 후 수정하도록 하겠습니다. ※ libc 파일 내에서 execve('/bin/sh',0,0) 과 같은 셀을 실행주는 부분을 찾아주는 tool이다.다시 말해서 stack의 ret 위치에 one_gadget이 들어간다면 shell을 바로 얻을 수 있다는 것이다. 설치 방법gem install one_gadget 보통 ctf같은 곳에서는 libc파일을 제공해주지만 우리는 예제를 가지고 할 것이기 때문에 로컬 libc 파일을 가지고 해보겠다.사용 방법은 이미지와 같이 사용하면 된다.one_gadget {libc} 총 4개의 one_gadget이 있다고 나와있다.다 똑같은 거 아니냐고 말할 수 있는데, 기능은 같은게 맞지만 사용할 수 있는 상황이 다르다.예를들어 가장 ..

※ 잘못된 부분이 있으면 알려주세요. 확인 후 수정하도록 하겠습니다. ※ Double State Format String Bug버퍼가 전역 변수로 선언되어 있는 등의 상황에서 사용하는 fsb 기법이다. //gcc -no-pie -fno-stack-protector -z execstack -o ex ex.c#include #include char buf[128];void gift() { printf("Hello! ZZoMblE"); system("/bin/sh");}void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0);}void vuln() { char str[128] = "He..

※ 잘못된 부분이 있으면 알려주세요. 확인 후 수정하도록 하겠습니다. ※ fmtstr_payload는 fsb 취약점을 Explot하는 것을 자동화해주는 함수이다. payload = fmtstr_payload(offset, {주소 : 덮을 값})payload = fmtstr_payload(7, {addr:value})위와 같이 사용하면 된다. 64비트 환경에서 사용하고자 한다면 아래 코드를 붙여줘야 한다.context.bits = 64 앞에서 사용한 예제의 payload를 가지고 비교를 해보겠다.from pwn import*target = b'./ex'p = process(target)e = ELF(target)gift = e.sym['gift']exit_got = e.got['exit']payloa..

※ 잘못된 부분이 있으면 알려주세요. 확인 후 수정하도록 하겠습니다. ※ FSB는 Format String Bug의 약자로 이름 그대로 형식 지정자의 잘못 사용으로 인해 발생하는 취약점이다.변수의 출력을 위해 아래와 같이 printf()를 많이 사용해왔을 것이다.printf("%d",num1);이 방식대로 사용하는 것이 올바른 방법이다라는 것은 알고 있을 것인데, 그러면 취약한 코드의 경우에는 어떻게 사용하였기에 Bug가 발생하는 것일까? 형식 지정자란?이를 이해하기 위해서는 형식 지정자가 무엇인지 알아야 한다. 형식 지정자는 printf()나 scanf()와 같은 함수에서 가변 인자를 받아 처리하기 위한 데이터 포맷이다. 예를 들어, %d는 정수를 출력하는 형식 지정자이고, %s는 문자열을 출력하는 ..
보호되어 있는 글입니다.

※ 잘못된 부분이 있으면 알려주세요. 확인 후 수정하도록 하겠습니다. ※ Holsteinhttps://whrdud727.tistory.com/entry/KERNEL-Environment-Setting [KERNEL] Environment Setting※ 잘못된 부분이 있으면 알려주세요. 확인 후 수정하도록 하겠습니다. ※ https://lrl.kr/JT5m カーネルexploitへの導入 | PAWNYABLE!カーネルexploitへの導入 「ユーザーランドのpwnは一通り勉強したけwhrdud727.tistory.com앞서 설치한 예제에 포함된 간단한 취약점을 지닌 커널 모듈로 open, read, write를 포함하고 있다. 앞서 설치를 진행했던 설정을 가지고 진행하겠다. 취약점이 존재하는 커널 모듈은 S99..
※ 잘못된 부분이 있으면 알려주세요. 확인 후 수정하도록 하겠습니다. ※ SMEP (Supervisor Mode Execution Prevention)커널 공간의 코드를 실행하는 동안 유저 공간의 코드를 실행하는 것을 막는 기법이다.유저 공간에서의 코드의 실행을 막는 NX(No Exute)와 유사하다.하드웨어 보안 기법으로, CR4 레지스터의 21번째 비트가 활성화되면 SMEP가 걸린 것이다. 설정 방법은 커널 환경을 구축하는 sh파일에 아래와 같은 부분을 추가해주면 된다.-cpu kvm64, +smep 환경 내부에서 보호기법이 걸려있는지 확인할려면 아래 명령을 실행하면 된다.cat /proc/cpuinfo | grep smep SMAP (Supervisor Mode Access Prevention..