본문 바로가기

[how2heap translation] house_of_einherjar.c # 환경은 ubuntu 16.04 64bit 에서 진행했습니다. # House of Einherjar 는 malloc() 에 의해 반환 된 포인터를 제어하기 위해 null byte 로 off-by-one 오버플로우를 사용한다. # 이 기술은 Poison Null Byte 보다 더 강력한 원초적인 기술이지만, 추가적으로 heap leak 이 필요하다. 포인터 변수 a, b, c, d 선언한다. 그리고 우리는 'a' 에 0x38 bytes 만큼 할당한다. 우리는 'a' 에 overflow 를 원하기 때문에, 0x38 을 반올림 한 후의 'a' 의 실제 크기가 필요하다. a : 0x603420 real_a_size : 0x38 우리는 우리가 원하는 어느 곳이든 fake chunk 를 만든다. 이 글에서 우리는.. 더보기
[how2heap translation] overlapping_chunk.c 테스트 환경은 ubuntu 14.04 32bit 환경에서 진행했습니다. 우선 heap 에 3 chunks 를 할당하고, memset 을 통해 각각의 chunk 를 초기화한다. p1 : 0x0804b008 p2 : 0x0804b108 p3 : 0x0804b208 p2 를 free 한다. p2 는 이제 동일한 크기의 새로운 malloc 할당을 대비해 unsorted bin 에 들어가게 된다. 이제 free 된 chunk 의 크기를 overwrite 할 수 있는 overflow 를 시뮬레이션 하자. 교육용 프로그램에서 size 의 마지막 3bit 는 중요하지 않지만 힙의 안정성을 유지하는 것이 좋다. 이 안정성을 유지하기 위해, 우리는 prev_inuse bit 를 설정함으로써 p1 chunk 가 free c.. 더보기
[how2heap translation] house_of_lore.c House of Lore - Malloc Maleficarum 의 확장된 공격 이 PoC 는 glibc 의 smallbin corruption 에 대해서도 다룬다. 이것은 glibc malloc 에서 동작하는 체크를 우회하기 위한 업그레이드 버전이다. ubuntu 14.04.4 - 32bit - glibc-2.23 환경에서 테스트 되었다. 가장 먼저 stack_buffer_1 과 stack_buffer_2 의 주소 값들을 초기화한다. 그리고, victim chunk 를 100byte 크기만큼 할당한다. victim : 0x804c008 victim_chunk 포인터 변수에 victim - 2 의 주소를 넣는다. stack_buffer_1 : 0xbffff6c0 stack_buffer_2 : 0xbffff.. 더보기