Profile

머리정리하는곳

c2w2m2

House of Top

윽 짜증난다 이것도 쉘이 안떠 악 문제 풀떄는 제대로 풀리는데 뭔가 내가 문제를 만들어서 실습해보려 하면 안된다. 일단 malloc 을 내가 원하는부분에 받는거 까지는 되기떄문에 일단은 포스팅 해보겠다. House of Top 은 Top 청크를 겁나 크게 잡아서 GOT 같은 곳에다가 malloc 받아서 덮는 거시다. Top 청크를 0xffffffff 같은걸로 덮어놓고 malloc 을 해야하는데 이때 이 사이즈를 got - addr - 8 로 잡으면 got -4 부분에 힙이 할당되서 got overwrite 가 가능하다. 32 비트 기준 0xffffffff, 64비트 0xffffffffffffffff 안에만 있으면 아무영역이나 할당받아서 쓸 수 있을것 같다.

Pwnable/Heap ·

unsafe unlink

그 전까지 알던 패치되기 전 unlink 취약점이 아닌,패치 된 후에도 터지는 unsafe unlink 취약점 이당. 이거 이해하는거 너무 시간 오래 잡아먹었따 ㅠㅠ심지어 아직 익스는 안된다 짜증난다 진짜 왜그러지. how2heap 처럼 코드로 짜는건 fake chunk 만들고 쓱싹 되는데 익스로 짜면 전역변수에 저장된 주소가 안바뀐다. 자고일어나면 다시 해봐야지. heap 2 개 할당해놓는다. 이떄 처음 할당한 애는 전역변수에 주소 저장해서 포인터로 관리. heap1 안에다가 fake chunk 를 만들어 놓는다 (prev, size =0, fd = 전역변수addr - 0x18, bk = 전역변수addr - 0x10) 이런식으로 해놓으면 보호기법이 해제된다. heap overflow 를 통해서 heap..

Pwnable/Heap ·

Fastbin Consolidate

사실 힙공부를 하기는 했는데 거의다 uaf 쪽이라서 Study 에 올리다가 오랜만에 heap 에 다가 올린다 이번에 해볼건 Fastbin Consolidate 라는 것을 볼것이다. Fastbin Consolidate은 Large bin 이상의 malloc 요청이 들어오면 다음 청크가 Top chunk 인지를 확인하고, 아니라면 fastbin 들을 검사해 필요없다 판단하고 병합시켜서 Small bin 으로 합병시켜버리는 것이다. 이런식의 코드가 있다. 이걸 분석해보자. 브레이크 포인트는 free(heap3) 이후와 malloc(0x400) 이후에 했다. free(heap3) 이후에는 이런식으로 평범한 fastbin 이 구성되어있다. 그런데 malloc(0x400을 하면' 이런식으로 합병되어 할당되는 주소가..

Pwnable/Heap ·

The House of Spirit

Heap을 제대로 파보려고 만든 Heap 카테고리 첫 글입니다. 처음은 House of 시리즈중 제 생각에 가장 할만한 Spirit 기법을 들고 왔습니다. #include int main(int argc, char *argv[]) { void *heap = malloc(32); char buf[8]; read(0, buf, 128);printf("buf : %p\np : %p\n", buf,heap); free(heap); printf("malloc : %p\n",malloc(32));} The house of Spirit 는 fastbin을 공격하는 기법으로, 같은 크기만큼을 재할당 할경우 같은 주소를 반환하는 fastbin 특성을 이용하여, 원하는 주소에 원하는 값을 쓸 수 있게 합니다. 먼저 일반적..

Pwnable/Heap ·