unsorted bin attack와 rop로 문제를 풀 수 있다. Unsorted bin attack unsorted bin 에 들어가있는 chunk의 bk를 변조해서 원하는 위치에 할당받는 기법이다. bk 영역에 victim의 주소를 넣고 할당해주면 원하는 위치에 값을 쓸 수 있다. 단 victim - 0x10의 주소를 넣어줘야된다. ( header size 0x10 / 32bit 환경이라면 8byte가 된다. ) exploit 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 5..
hitcon training 의 lab 12번이다. house of force기법을 이용해서 magic함수를 실행시켜 플래그를 얻는문제이다. House of foce topchunk의 size영역을 덮어쓰고 원하는 영역에다가 할당을 받을 수 있는 기법이다. condition - topchunk의 size 가 변조가능해야한다. - 할당된 chunk의 값을 바꿀 수 있어야한다. - 할당되는 heap의 크기를 제어할 수 있어야한다. exploit scenario 1. topchunk를 32bit, 64bit의 각각 최댓값(0xffff~)으로 덮는다. 2. top chunk의 주소와 할당받고 싶은 위치의 주소의 차를 구한다. 3. 그 차만큼 할당해준다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14..
Hitcon lab 5번을 풀다가 궁금증이 생겨서 찾아봤더니 syscall chain을 원활하게 해주는 dl_sysinfo_int80함수가 있다. 간단하게 syscall 해주고 ret을 해주는 가젯이다. + hitcon lab 5 exploit code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 from pwn import * context.log_level = 'debug' p = process('./simplerop') e = ELF('./simplerop') bss = e.bss() + 0x100 syscall =..