일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- The Loard of BOF
- 자료구조 복습
- SWEA
- hackerrank
- siss
- BOJ
- Python
- PHP 웹페이지 만들기
- HTML
- 드림핵
- 기계학습
- 생활코딩
- 풀이
- CSS
- c++
- XSS Game
- 숙명여자대학교 정보보안동아리
- lob
- 백준
- Sookmyung Information Security Study
- BOJ Python
- Javascript
- 파이썬
- hackctf
- WarGame
- C언어
- 웹페이지 만들기
- 머신러닝
- c
- 숙명여자대학교 정보보안 동아리
- Today
- Total
목록2021 SISS 21기 활동/2학시 시스템 (12)
혜랑's STORY
🖇checksec 32비트 바이너리 파일이고 Partial RELRO, Canary, NX가 설정되어 있다. 앞에서 학습한 Double Free 취약점을 이용하여 문제를 풀면 될 것 같다. 🖇IDA IDA를 사용하여 함수 목록을 확인해 보았다. 노트의 내용을 출력하는 함수, 노트를 추가하는 함수, 노트를 지우는 함수와 메인 함수가 있었고, 유용해보이는 magic 함수가 있었다. 역시 flag를 출력하는 함수였다. 위 함수는 index를 지정하여 해당 chunck를 free 시킨다. free는 chunk -> nodelist chunck 순서로 free 되고 이때 nodelist[] 안에는 free 해도 주소가 남아있어 악의적으로 사용 가능하다. 🖇Exploit Method 위에서 알게된 del_note(..
Double Free Double Free는 해제된 힙 청크를 다시 해제할 때 발생하는 버그이다. 힙을 해제하면 bin이라는 연결 리스트에 추가되고, 이는 힙을 재할당할 때 참조된다. 해당 버그가 발생하면 연결 리스트에 중복된 힙 주소를 추가하기 때문에 두 개의 객체가 동일한 메모리를 사용할 수 있다. ptmalloc2 할당자는 Double Free를 방지하기 위해 동일한 힙 청크를 연속으로 여러번 해제할 수 없도록 하는 코드가 존재한다. 해당 코드를 이해하고 우회하는 방법을 알아보자. // gcc -o dfb1 dfb1.c #include int main() { char ptr = malloc(32); char ptr2 = malloc(32); free(ptr); free(ptr); return 0; ..
_int_malloc _int_malloc과 _int_free는 개방자의 실수, 악의적인 행위 등으로 힙이 정상적으로 동작하지 않는 것을 방지하기 위해 검증 코드가 존재한다. (검증 코드를 이해하고 있다면 익스플로잇을 할 때 이를 우회하여 공격할 수 있게 된다.) malloc() : memory corruption (fast) #define fastbin_index(sz) \ ((((unsigned int) (sz)) >> (SIZE_SZ == 8 ? 4 : 3)) - 2) idx = fastbin_index (nb); if (victim != 0) { if (__builtin_expect (fastbin_index (chunksize (victim)) != idx, 0)) { errstr = "mall..
ptmalloc2 allocator ptmalloc2는 리눅스 GLIBC에서 사용하는 메모리 할당자이다. 운영체제마다 메모리 할당자가 동작하는 방식은 각각 다르며, ptmalloc2는 리눅스 유저 모드에서 주로 사용하는 할당자이다. ptmalloc2는 glibc 2.23 버전과 glibc 2.26(Tcache) 이후 버전 동작 방식이 조금 달라졌기 때문에 두 라이브러리 코드를 각각 비교하며 분석할 예정이다. 대부분의 운영 체제에서는 동적 할당을 하게 되면 힙 페이지가 생성된다. (운영체제마다 페이지의 명칭이 다를 수 있다.)동적 할당은 프로그램 실행 중에 메모리가 필요하게 되면 때에 따라 할당하고, 해제하는 방식으로 사용된다. ptmalloc2 메모리 할당자의 구현을 알아보기 위해 다음과 같이 GLIBC..