background

    ROP tips?

    ROP tips?

    pwn college의 rop 문제들을 풀면서 배운 점들을 적어본다.pwn college의 libc 버전인 2.31으로 봤는데 다른 버전일 땐 해당 libc 파일을 gdb로 보면 되겠다.  1. 리턴 주소가 __libc_start_main인데 leak이 전혀 안된 상태에서 main으로 리턴이 필요한 경우glibc 2.31에서 main 함수의 리턴 주소는 이다.여기서 최하위 바이트를 변조시켜 으로 변조시킨다면 다시 main으로 갈 수 있다. 0x24060 : mov QWORD PTR fs:0x300,rax 0x24069 : mov rax,QWORD PTR [rip+0x1c7e40] # 0x1ebeb0 0x24070 : mov rsi,QWORD P..

    Supervisor Mode Execution Prevention(SMEP)/Supervisor Mode Access Prevention(SMAP)

    Supervisor Mode Execution Prevention(SMEP)/Supervisor Mode Access Prevention(SMAP)

    커널은 절대 사용자 공간 메모리(userspace memory)를 실행하거나 접근해서는 안된다.이러한 규칙은 하드웨어 기반으로 제한(x86의 SMEP/SMAP, ARM의 PXN/PAN)을 지원하거나 에뮬레이션(ARM의 메모리 도메인)을 통해 시행할 수 있다.이러한 방식으로 사용자 공간 메모리를 차단하면 실행 및 데이터 구문 분석이 사용자 공간 메모리로 전달 될 수 없으므로, 공격이 커널 메모리에서만 작동하도록 만든다. SMEP (Supervisor Mode Execution Prevention)사용자 모드에 있는 실행 코드를 Ring-0 권한으로의 실행을 제한하고 충돌을 일으킨다. 따라서 사용자 모드 페이로드 실행에 의존하는 EoP 익스플로잇을 실행하지 못하게 된다.이를 통해 Intel OS Guard는..

    FSOP(File Stream Oriented Programming)

    Source code (bootlin)_IO_FILE_plus & _IO_FILE_complete_plusstruct _IO_FILE_plus{ FILE file; const struct _IO_jump_t *vtable;};#ifdef _IO_USE_OLD_IO_FILE/* This structure is used by the compatibility code as if it were an _IO_FILE_plus, but has enough space to initialize the _mode argument of an _IO_FILE_complete. */struct _IO_FILE_complete_plus{ struct _IO_FILE_complete file; const stru..

    [논문 읽어보기] Binary Security of WebAssembly

    [논문 읽어보기] Binary Security of WebAssembly

    웹 어셈블리 바이너리 보안에 논문 내용 중 C나 C++ 기반의 웹 어셈블리 바이너리에 대한 내용들 위주로 정리해봤다. (javascript 쪽은 나중에 해보는 걸로) 상대적으로 이해가 쉬운 부분은 생략을 많이 했고 이해가 어려운 부분은 본문 내용을 거의 다 적었다. (영어 문서를 번역기 돌리면서 봐서 오역이 있을 예정..) 1. Introduction web assembly (이하 wasm)은 점점 더 대중화되는 바이트코드 언어이다. 이는 컴팩트하고 이식 가능한 표현, 빠른 실행 및 저수준 메모리 모델을 제공한다. 컴파일 타겟으로 설계되었으며 널리 사용되는 여러 컴파일러(예: C 및 C++용 Emscripten 또는 Rust 컴파일러)가 존재한다. 둘 다 LLVM을 기반으로 한다. wasm은 보안을 굉장..

    [how2heap] Tcache Poisoning (glibc 2.31/2.35)

    glibc 2.31 https://github.com/shellphish/how2heap/blob/master/glibc_2.31/tcache_poisoning.c #include #include #include #include int main() { // 버퍼링 비활성화 setbuf(stdin, NULL); setbuf(stdout, NULL); printf("이 파일은 malloc을 속여 임의의 위치(이 경우 스택)를 가리키는 포인터를 반환하도록 하는 간단한 tcache 독립성 공격을 보여줍니다.\n" "이 공격은 fastbin 손상 공격과 매우 유사합니다.\n"); printf("패치 후 https://sourceware.org/git/?p=glibc.git;a=commit;h=77dc0d8643a..