전체 글

전체 글

    Unsorted bin attack in How 2 heap & Patch

    들어가면서 how2heap에 있는 unsorted bin attack에 대해서 소개하려고한다. 해당 heap exploit 기법은 glibc-2.29 보다 낮은 버전에서 사용이 가능하고 그보다 상위 버전은 패치를 통해서 수정이 됐다. 그래서 실습을 하려면 해당 버전보다 낮은 버전에서 진행해야한다. 해당 취약점은 unsorte bin attack의 bk 값을 조작 가능하다면 이용 가능하다. 이를 통해서 원하는 주소에 main_arena의 주솟값을 출력을 할 수가 있다. 분석 malloc을 요청하면 fast,small,large bin에서 사용 가능한 chunk가 있는지 확인한다. bins들에서 찾지를 못하면 unsorted bin에서 찾게된다. for (;; ) { int iters = 0; while (..

    [HackCTF] uaf

    [HackCTF] uaf

    . . . . . 보호기법 실행 실행시 노트 추가, 삭제, 출력을 할 수 있는 메뉴가 보이게 된다. 문제 이름 자체가 uaf이니 추가, 삭제, 출력을 통해서 heap을 할당, 해제, 출력을 하는 기능을 가지고 있는 것을 예상을 할 수가 있다. 코드분석 main에서 add_note,del_note,print_note 함수를 메뉴에 맞게 실행 시켜준다. 1번부터 차례대로 확인해보자. add_note add_note를 하면 두개의 malloc을 통해서 heap을 할당을 해준다. 첫번째로 notelist+i에 할당을 하고 그곳에 print_note_content를 넣어준다. 두번째로는 size를 입력을 받아서 (notelist+i)+4에 할당을 해준다. 추가로 *(notelist+i)+1에 size만큼 내용을 ..

    [HackCTF] babyheap

    [HackCTF] babyheap

    double free 관련한 문제인 걸로 알고 문제를 고르고 풀기 시작함. 모르는 것들도 나오긴 했지만 생각보다 어려운 문제는 아닌 것 같음. 보호 기법 checksec을 통해서 해당 바이너리의 보호 기법을 확인 시 Full RELRO, Canary, NX bit가 걸려있는 것을 확인을 할 수가 있다. Full RELRO가 걸려있어서 Got Overwrite가 안 되는 것을 인지한 채로 진행하겠다. 실행 실행 시 위와 같은 메뉴가 나오게 되며 1번 메뉴에서는 사용자가 원하는 크기와 내용을 받아 heap을 할당하는 것 같다. 2번 메뉴에서는 사용자가 할당한 heap 중 원하는 인덱스의 heap을 해제를 할 수가 있다. 3번 메뉴에서는 사용자가 할당한 heap 중 원하는 인덱스의 heap의 내용을 확인을 할..