일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- DFS
- OOB
- 문자열 처리
- ROP
- 포맷스트링버그
- 투 포인터
- BFS
- 이분 탐색
- 이진트리
- 이진 탐색
- RTL
- 큐
- 연결리스트
- 완전 탐색
- 수학
- fsb
- 동적 계획법
- 브루트 포스
- syscall
- BOF
- tcache
- House of Orange
- heap
- 에라토스테네스의 체
- 다이나믹 프로그래밍
- 스위핑 알고리즘
- 분할 정복
- 스택
- 백트래킹
- off by one
- Today
- Total
목록heap (5)
SDJ( 수돈재 아님 ㅎ )
보호되어 있는 글입니다.
예전에 이 바이너리를 봤었는데.. 그 때 당시에는 heap에 대해 몰랐기 때문에 house of orange 기법도 몰랐고 그냥 넘겼던 문제였다. 근데 이번에 house of orange 기법을 좀 공부하고 싶어서 다시 꺼냈다.. 차근차근 exploit 해보자. 먼저 보호기법이다. main을 보면 다음과 같다. 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 int __cdecl __noreturn main(int argc, const char **argv, const char **envp) { int v3; // [rsp+4h] [rbp-Ch] unsigned __int64 v4; // [rsp+8h] [rbp-..
64bit에 Full RELRO, Canary, NX 활성화 되어있다. 주어진 libc가 2.27이고 tcache문제기 때문에 ubuntu 18.04로 풀었다. 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 55 56 57 58 59 60 61 62 63 64 65 66 67 from pwn import * p = process('./aria-writer-v3') def choice(idx): p.sendlineafter("> ", str(idx)) def alloc(size, c..
64bit에 Partial RELRO, Canary, NX가 활성화 되어있다. 주어진 libc가 2.27이므로 tcache문제라서 Ubuntu 18.04로 풀었다. 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 55 56 57 58 59 60 61 62 63 64 from pwn import * p = process('./aria-writer') def choice(idx): p.sendlineafter("pls > ", str(idx)) def alloc(size, content..
이번엔 PwnThybytes CTF의 babyfactory를 풀어보려고 한다. 64bit에 모든 보호기법들이 걸려있다. 사용할 수 있는 메뉴들은 다음과 같이 5가지 정도 있다. 하나씩 분석해보자. 1. create 먼저 create다. 여기서 두가지 경우를 선택할 수 있는데 하나는 Boy, 다른 하나는 Girl이다. 함수 sub_C3B의 인자를 다르게 주는 것을 볼 수 있는데 함수를 분석해보자. 1-1) sub_C3B 함수의 일부다. 인자로 넘어온 값에 따라 두가지 경우가 생긴다. a1의 값이 참일 경우에는 malloc(0x69)를 하고 read(0, *v3, 0x69)를 한다. 참이 아닐 경우에는 malloc(0x68)을 하고 read(0, *v3, 0x68)을 한다. 여기서 취약점이 하나 존재하는데 ..