Kernel & Browser 17

[Kernel] Linux kernel (13) - Slab object

Kernel Slab 할당자와 메모리 관리Slab 이론커널에서는 kmalloc() 함수를 호출해 동적 메모리를 할당 받습니다.일반적으로 userland glibc에서 이루어지는 ptmalloc과는 큰 차이점이 있습니다. ptmalloc의 기본적인 아이디어는 여러 메모리 구역을 여러개의 청크(chunk)로 나누어 메모리를 할당하고, 해제할 때 청크를 구분하고 회수하는 작업 등을 하는 것 입니다.이와 다르게 kernel에서는 Slab 메모리 할당자로 메모리를 관리합니다. 슬랩의 주요 특징은 아래와 같습니다.자주쓰는 메모리 패턴을 정의한 후, 미리 할당해 놓자.(1)에 대한 메모리 할당 요청이 있으면, 바로 메모리를 할당해준다.해당 패턴으로 메모리를 해제하면, 메모리를 초기화 하지 않고, 다음 요청을 기다린다..

[Kernel] Linux kernel (12) - system call

system call 호출 시 어떤 일이 일어날까?일단 system call에 대하여 설명하기 전에, 우리는 커널(Kernel) - 운영체제에 대하여 알고있어야 합니다.커널은 본질적으로 소프트웨어(main으로 시작하는 바이너리)입니다. 하지만, 모든 프로그램과는 다르게 커널은 메모리(CPU)에 항상 올라가 있다는 차이점이 있습니다. 커널이 아닌 프로그램들은 메모리에 있어도 상관없고, 없어도 됩니다. 필요할 때 마다 메모리에 올려 사용하면 된다는 의미이죠.또한, UNIX 운영체제는 다중 사용자 운영체제 입니다. 따라서, 보안성이 정말 중요합니다. 만약, 다른 사용자가 나의 문서를 삭제한다던가, 원하는 대로 내 문서를 훔처보지 못하도록 막는 것 입니다. 그래서 UNIX에서 실질적인 파일 I/O(Input/O..

[Browser] Browser (4) - DownUnder CTF Is this pwn or web? write-up ( pointer compression )

DownUnderCTF - Is this pwn or web?TagV8 engine exploitOOBpointer compressionSummarydiffing file analysisaddrof & fakeobjexploitdiffing file analysis디핑 파일은 부분별로 나눠서 보도록 하겠습니다.1. array-slice.tqdiff --git a/src/builtins/array-slice.tq b/src/builtins/array-slice.tq index 7b82f2bda3..4b9478f84e 100644 --- a/src/builtins/array-slice.tq +++ b/src/builtins/array-slice.tq @@ -101,7 +101,14 @@ macro Handl..

[Browser] Browser (3) - 35c3 CTF krautflare ( Math.expm1 exploit )

35c3 CTF krautflareBug analysis그냥 문제 풀면서 공부한 내용들을 정리했습니다. 틀린 내용이 있을 수 있고 정리가 안되어있으며 두서가 몹시 없습니다. 의식의 흐름대로 작성했으니 참고만 해주시면 감사하겟습니다.d8> %DebugPrint(-0) DebugPrint: -0 0x282625580561: [Map] - type: HEAP_NUMBER_TYPE - instance size: 16 - elements kind: HOLEY_ELEMENTS - unused property fields: 0 - enum length: invalid - stable_map - back pointer: 0x2826255804d1 - prototype_validity cell: 0 - instance ..

[Kernel] Linux kernel (11) - ASIS CTF shared house write-up ( slab object off by one )

Kernel (11) - ASIS CTF shared house ( slab object off by one )Analysissigned __int64 __fastcall mod_ioctl(__int64 a1, unsigned int a2, __int64 a3) { unsigned int v3; // ebx __int64 v4; // rsi unsigned int v6; // [rsp+0h] [rbp-18h] __int64 v7; // [rsp+8h] [rbp-10h] ​ v3 = a2; v4 = a3; if ( copy_from_user(&v6, a3, 16LL) ) return -14LL; if ( v6 size || copy_to_user(v7) ) { goto LABEL_10; } mutex_un..

[Browser] Browser (2) - Javascript basic

Browser (2) - Javascript basicDynamically typeing자바스크립트는 변수의 타입을 미리 선언 할 필요가 없다.타입은 프로그램이 처리되는 과정에서 자동으로 파악된다.var foo = 42; // foo 는 이제 Number 임 var foo = "bar"; // foo 는 이제 String 임 var foo = true; // foo 는 이제 Boolean 임이런식이다. Data type자바스크립트의 데이터 타입은 크게 7개가 있다.primitiveBooleanNullUndefinedNumberStringSymbolObject BooleanTrue : False를 제외한 모든것False : "", null, undefined, 0, NaN Null더이상의 자세한 설명은 생..

[Browser] Browser (1) - Codegate jsworld write-up

Browser (1) - Codegate Jsworld write-upContentsEnvironment configurationVulnability analysisPoCAnalysisExploit Environment configuration일단 문제에서 주어지는 파일은 다음(jsworld,jsarray.cpp)과 같다. jsarray.cpp를 확인해보면, mozilla등의 문자열을 확인할 수 있으며, 이를 통하여 mozilla재단에서 관리하는 SpiderMonkey엔진의 코드를 일부 수정한 것임을 추측할 수 있다.파일도 받았으니 환경설정을 진행해보자. bash에서 아래와 같은 명령어를 입력하면 된다. 일단 의존 패키지부터 다운받아보자.sudo apt-get install python-pip gcc m..

[Kernel] Linux kernel (10) - hack.lu CTF Baby_Kernel_2 write-up ( Leak current_task and Cred struct overwrite )

Kernel (10) - hack.lu CTF Baby Kernel 2 write-up ( Leak current_task and Cred struct overwrite )ContentsAnalysisExploit scenarioExploitFlagReference Analysis풀어보기 전에, hack.lu CTF가 끝난지 꽤 되었는데도 아직도 nc가 열려있어서 문제풀기 편했다!module init이나 module exit함수에는 별 다른 내용이 없으므로 주요 함수부터 분석하자. driver_ioctl()__int64 __fastcall driver_ioctl(file *file, unsigned int ioctl_num, unsigned __int64 ioctl_param) { read_args *s..

[Kernel] Linux kernel (9) - CVE-2016-0728 ( Kernel One-day Analysis )

Kernel (9) - CVE-2016-0728 ( Kernel One-day Analysis )ContentsInformationVulnerabilityPoC Information2016년, Perception Point팀이 Linux kernel에서의 LPE취약점을 발견했다.이 취약점은 2012년부터 존재했지만 2016년 근래에서야 취약점을 발견하였다.천만대의 Linux 개인 PC와 66%프로의 Android device에 영향을 준다.이 취약점의 PoC가 성공적으로 실행되면 root권한을 획득할 수 있다.취약점은 32bit,64bit상관없이 발생하며, 3.8버전 이상의 모든 리눅스 커널에서 발생한다. Vulnerability크게 두가지 취약점이 발생한다.Integer OverflowUse - Aft..

[Kernel] Linux kernel (8) - QWB CTF 2018 core write-up ( Return To User )

Kernel (8) - QWB CTF core write-up ( Return To User )ContentsSettingAnalysisPoC / Exploit scenarioDebuggingExploitShellReference SettingLinux kernel UAF ( babydriver write-up )에서 진행한 환경설정과 거의 유사하다.다만 이번 문제는 환경설정하기가 좀 친절하게 잘되어있다.core_give.tar.gz이라는 파일 하나를 주는데, 요걸 해제하면 give_to_player디렉토리가 생긴다.그리고 아래와 같은 파일들을 준다. bzImage - 커널 이미지core.cpio - 파일시스템start.sh - qemu부팅용 쉘스크립트vmlinux - 디버깅용 심볼필요한건 다 있고, 취..