🐱‍🚀 모두보기

    Maximum Likelihood Estimation (MLE)

    MLE를 아주아주 이해하기 쉽게 설명해놓은 영상이다. 당신만 특별하게 목격했을리가 없다. 아마도 흔한 일일 것이고, 그건 '발생 확률이 높은 사건'이라고 해석하는 것이 합당하다. 그래서 당신이 목격한 사건의 발생확률을 최대로 높이는 모델 변수를 찾아라.

    Set-UID Privileged Programs

    1. Privileged Program의 필요성 Privileged program (특정 프로그램에 임시로 특권을 줌) ex. 일반 유저가 패스워드 바꿔야 할 때 2. Two-Tier Approach 특권이 요청되는 작업을 할 수 있는 방법 두가지 OS에서 세분화된 액세스 제어를 구현 Operation 종류에 따라 미세 컨트롤 ⇒ OS가 지나치게 복잡 해짐 ⇒ 버그 생길 가능성이 높아짐 확장 기능에 의존하여 세분화된 액세스 제어 수행 일반 프로그램 보다는 특권을 가진 Privileged Program을 만들어서 Program이 OS에게 요청 3. Privileged Program 종류 Demons 백그라운드에서 실행 root 또는 특권 가지고 실행 Set-UID Programs UNIX 시스템에서 널리 ..

    스택 구조

    Stack BOF를 공부하던 중 스택의 구조와 동작 원리가 잘 정리되어있는 블로그가 있어 기록한다. 스택의 구조 지금까지 배운걸 간단히 정리하면 다음과 같다 (세그먼트4는 세그먼트 n이라고 보셈.. 숫자를 잘못 입력했다는..) 8086메모리는 4기가 메모리 기준으로 2기가 커널 영역과 2기가 2기가 유저 영역이 wogh8732.tistory.com 함수 프롤로그(prolog) / 함수 에필로그(eplilog) jiravvit.tistory.com/entry/dreamhack-pwnable-offbyone000-%ED%92%80%EC%9D%B4 [dreamhack : pwnable] off_by_one_000 풀이 jiravvit.tistory.com 이 문제 풀이를 작성하다가 한가지 의문이 들었다. EB..

    컴퓨터 보안 소개 (Introduction to computer security)

    1. Threats 취약점을 악용해서 공격할 수 있는 위협 vulnerability : 취약점 (버그) exploit : 프로그램에 존재하는 버그를 악용하는 input exploitable : 버그를 이용해서 sw를 성공적으로 장악할 수 있다. (공격하는데 사용할 수 없다면 exploitable 하지 않다.) 2. Threat Model 공격자와 방어자의 능력을 정의하는 것 3. Hackers Black hat hackers White hat hackers Grey hat hackers : Black + White 4. Black hat hacker가 하는 일 컴퓨터 장악 사회공학적 기법 (피싱메일 / USB에 악성코드) 무식하게 비밀번호 모든 조합 시도 DoS attack : 패킷 날려서 접속 안되게 ..

    LLVM IR 비트코드 분석 - UAF

    dangling_ptr.c #include int main(void) { int *ptr; ptr = (int *)malloc(sizeof(int)); *ptr = 1; printf("%d\n", *ptr); free(ptr); *ptr = 2; // 해제된 메모리 영역에 접근 } dangling_ptr.ll %1 = alloca i32*, align 8 %2 = call i8* @malloc(i64 4) %3 = bitcast i8* %2 to i32* store i32* %3, i32** %1, align 8 %4 = load i32*, i32** %1, align 8 store i32 1, i32* %4, align 4 %5 = load i32*, i32** %1, align 8 %6 = load ..

    Use-After-Free (UAF)

    Use-After-Free 란? 메모리 참조에 사용한 포인터를 메모리 해제 후에 적절히 초기화하지 않아서 (Dangling pointer), 또는 해제한 메모리를 초기화하지 않고 다음 청크에 재할당해주면서 발생하는 취약점이다. 즉, 해제된 메모리에 접근할 수 있을 때 발생하는 취약점이다. Dangling Pointer: 해제된 메모리를 가리키고 있는 포인터. UAF가 발생하는 원인이 될 수 있다. Use-After-Free (UAF): 해제된 메모리에 접근할 수 있을 때 발생하는 취약점 이 취약점은 현재까지도 브라우저 및 커널에서 자주 발견되고 있으며, 익스플로잇 성공률도 다른 취약점에 비해 높아 상당히 위험하다고 알려져 있다. 1. Dangling Pointer 유효하지 않은 메모리 영역을 가리키는 포..

    LLVM IR 비트코드 분석 - malloc(말록)

    malloc.c #include #include int main(){ int arr[4] = {4, 3, 2, 1}; int* ptrArr; // int 타입 사이즈*4 만큼의 메모리를 할당 ptrArr = (int *)malloc(sizeof(int) * 4); } malloc.ll ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @main() #0 { entry: %arr = alloca [4 x i32], align 16 %ptrArr = alloca i32*, align 8 %0 = bitcast [4 x i32]* %arr to i8* call void @llvm.memcpy.p0i8.p0i8.i64(i8* ali..

    LLVM IR 비트코드 분석 - Function(함수)

    func.c #include unsigned add1(unsigned a, unsigned b) { int c; return a + b; } func.ll ; Function Attrs: noinline nounwind optnone uwtable define dso_local i32 @add1(i32 %a, i32 %b) #0 { entry: %a.addr = alloca i32, align 4 %b.addr = alloca i32, align 4 %c = alloca i32, align 4 store i32 %a, i32* %a.addr, align 4 store i32 %b, i32* %b.addr, align 4 %0 = load i32, i32* %a.addr, align 4 %1 = load ..