본문 바로가기

reversing

EPROCESS(PEB), ETHREAD(TEB), KPROCESS(PCB), KTHREAD(TCB)

EPROCESS(PEB), ETHREAD(TEB), KPROCESS(PCB), KTHREAD(TCB) 커널 디버깅을 하면서 몇가지 공부한 사실을 정리한다. EPROCESS(Executive Process) 와 ETHREAD(Executive Thread) 는 process 가 생성될 때 kernel 메모리에 생성되는 구조체이다. user 메모리에 생성되는 구조체로는 이와 대응되게 PEB(Process Environment Block) , TEB(Thread Environment Block) 가 있다. 위와 같은 구조로 프로세스가 관리된다. PEB 와 TEB..

더보기
reversing

windows paging - x86, 64

windows paging - x86, 64 윈도우 운영체제는 가상 메모리를 사용한다. 디버깅을 경험해봤다면 프로그램이 대부분 0x400000 의 주소부터 시작하는 것을 볼 수 있는데, 이렇게 동일한 주소에 접근해도 데이터가 프로세스별로 다를 수 있는 것은 바로 가상 메모리 때문이다. 0x400000 이라는 주소는 논리 주소가 세그멘테이션된 선형 주소이다. 선형 주소는 비트별로 나뉘어 페이징을 통해 물리적 주소가 되고, 이 물리적 주소가..

더보기
writeup

x-mas ctf 2019 deadfile

2019 x-mas ctf deadfile binary info [*] '/home/krrr/pwn/x-mas/dead_file/deadfile' Arch: amd64-64-little RELRO: Full RELRO Stack: Canary found NX: NX enabled PIE: PIE enabled 메뉴형 heap challenge 이다. line CODE JT JF K ================================= 0000: 0x20 0x00 0x00 0x00000004 A = arch 0001: 0x15 0x00 0x0d 0xc000003e if (A != ARCH_X86_64) goto 0015 0002: 0x20 0x00 0x00 0x00000000 A = s..

더보기
material

linux file vtable check bypass

linux file vtable check bypass vtable check (glibc >= 2.24) /*  _IO_vtable_check  Source: https://code.woboq.org/userspace/glibc/libio/vtables.c.html#_IO_vtable_check */ ​ void attribute_hidden _IO_vtable_check (void) { #ifdef SHARED  void (*flag) (void) = atomic_load_relaxed (&IO_accept_foreign_vtables); #ifdef PTR_DEMANGLE  PTR_DEMANGLE (flag); #endif  if (flag == &_IO_vtable_check)  re..

더보기
writeup

2019 d3ctf lonely_observer

2019 d3ctf lonely_observer pipe https://12bme.tistory.com/226 d3ctf writeup https://www.anquanke.com/post/id/193939#h3-9 pipe 를 이용한 IPC 를 구현한 바이너리이다. 총 2개의 바이너리 mimic32 , mimic64 와 IPC 통신을 진행한다. 간단하게 lonely_observer 바이너리에서 각각의 thread 로 입력, 출력을 받고 이를 출력해준다. 요로코롬 thread 를 만들어서 각각의 바이너리를 관리한다. 그리고 밑에서 buf 에 입력..

더보기