728x90 Systemhacking22 SF14. SF color Lab 보호되어 있는 글 입니다. 2023. 7. 25. File Stream Oriented Programming 우리는 여러 File operation 들을 안다. (예를 들어서 fclose, fopen, fread... 등등) 이들은 모두 리눅스의 file descriptor라는 단위(device 따위가 사용함)를 통해 사용되는 operation들이다. 이 file descriptor들은 파일 구조체(_IO_FILE)을 통해 조작 즉, file operation들은 이 _IO_FILE을 참조하여 동작한다. _IO_FILE의 모습에서 일단 _lock에 null을 넣지 않으면 file 연산이 수행되지 않는다는 것만 알아두자. → 우리가 아는 멀티스레딩에서 lock 부분에 해당함(그냥 웬만하면 그대로 두자...) 각설하고! 가장 중요한건 제일 마지막에 있는 _IO_FILE_PLUS의 vtable이다. tele를 통해 .. 2023. 7. 19. IO_buf_end attack IO_buf란? 파일스트림은 buffering이라는 기술을 구현해 더 안정적이고 효율적으로 동작하게 된다. 즉, 데이터의 생산자와 소비자가 서로 처리속도가 다를 경우 예를 들어, 데이터 처리 속도가 [생산자 > 소비자]인 상황에서 완충 역할을 하게 된다. SysCall은 커널 단에서 작업을 수행하기 위해 존재한다고 말했다, (Application 단에서 디바이스를 조작할 수 있으면, 공격자의 칩입이나 사용자의 실수에 너무 취약하기 때문임) 즉, 어떤 프로세스가 있다면 이 프로세스가 사용하는 데이터는 User ↔ Kernel 영역을 돌아가면서 실행하게 된다. (이를 context switching 이라고 부름) 이때 context엔 레지스터 값이나 flag와 같은 정보들이 저장된다. 만약 아래의 코드에서 .. 2023. 7. 19. malloc consolidate with Fastbin_Dup Consolidate "Malloc consolidate는 개발자 입장에선 external fragmentation을 막을 수 있어서 좋고, 공격자 입장에서는 fastbin을 병합함으로써 small bin(libc) 주소를 leak하거나, double free(fastbin dup conslidate)할 때 사용한다." ( from brwook ) 아래 코드는 https://github.com/andigena/glibc-2.23-0ubuntu3/blob/master/malloc/malloc.c의 코드 중 fastbin에서 unsorted bin으로 free chunk가 이동하는 malloc consolidate에 해당하는 코드이다. if ((unsigned long)(size) >= FASTBIN_CONSOLIDATION_T.. 2023. 6. 4. small bin attack House of Lore 라고도 불리우는 small bin attack에 대해 알아보자. 이는 free된 후 small bin에 들어간 chunk의 bk를 조작해, 원하는 chunk를 small bin에 넣는 공격이다. 이때 원하는 chunk는 free된 것으로 설정해도 가능하고, 이미 malloc을 통해 할당 받은 것도 가능하다. 그러나, small bin size의 chunk는 free된 후 unsorted bin에 우선적으로 들어가므로, 더 큰 크기의 chunk를 할당받아, unsorted bin의 free chunk를 small bin으로 이동시켜야 한다. 아래는 small bin의 free chunk 체크 로직을 우회하기 위한 방법이다. real_chunk→bk = fake_chunk fake_.. 2023. 6. 4. unsorted bin attack unsorted bin에 등록된 chunk가 재할당될 때 bin에서 이를 정리하는 과정에서 발생하는데, 이 공격을 통해 우리는 libc의 bins 주소를 획득하거나, 특정 영역에 큰 수를 저장할 수 있다. unsorted bin attack을 malloc.c 소스코드와 함께 이해하고 싶다면, 아래의 lazenca 사이트를 참조하라 unsorted bin attack[Korean] unsorted bin attack[Korean] - TechNote - Lazenca.0x0 Excuse the ads! We need some help to keep our site up. List Unsorted bin attack Unsorted bin attack을 이해하기 위해서는 malloc()이 unsorted b.. 2023. 6. 2. SF9. unsafe unlink 보호되어 있는 글 입니다. 2022. 11. 7. unsafe Unlink in heap 이번에 알아볼 기법은 unsafe unlink라는 기법이다. 해당 기법을 알아보기 전에 우선 Unlink라는 것이 무엇인지부터 살펴보도록하자. Unlink란? fastbin을 제외한 나머지 bins(지금부터 설명하는 내용들은 fastbin을 제외하고 나머지 bins과 관련된 설명임)는 어떤 chunk를 free할 때 바로 앞 혹은 뒤에 free chunk가 존재하면 이를 병합하여 관리하는 기능이 있다. 병합 시 기존에 bin list에 등록된 chunk가 존재하고 이들은 double linked list 구조를 가지고 있으므로 chunk 병합을 수행할 때 fd, bk를 정리해주는 과정을 거치게 된다. 이것을 unlink라고 하며 한 문장으로 정리하자면 인접한 두 free chunk를 병합할 때 fd, b.. 2022. 11. 7. SF8-2. Dangling Pointer & UAF(Use After Free) 보호되어 있는 글 입니다. 2022. 11. 1. 이전 1 2 3 다음 728x90