Buffer overflow와 같은 메모리 관련 취약점을 막기 위해 gcc와 같은 컴파일러에서 제공하는 보호기법이다. 이는 소스코드에서 잠재적인 취약점을 탐지하고 런타임에 추가 검사를 통해 보안 향상을 한다.버퍼 오버플로우가 감지되면 프로그램을 종료한다. SSP와 비슷한 느낌이지만 동작방식은 아예 다르다. 동작 방식Fortify의 동작 방식은 buffer overflow 가 발생할 때 감지할 수 있는 특정 C 라이브러리 함수의 향상된 버전을 제공하는 방식으로 작동한다. 다시말해 strcpy, memcpy, sprintf, memset, fprintf 등의 함수를 사용하면 컴파일 과정에서 __strcpy_chk, __memcpy_chk 로 변경한다.이러한 취약한 함수가 호출되면 fortify는 사용중인 ..
프로젝트가 끝나고 약 2주정도 쉰 후에 다시 공부를 시작한다.트랙교육은 몸이 많이 힘들었다면 프로젝트는 정신적으로 너무 힘들었다. 시간이 지나서 과거 미화가 된건지 모르겠지만 트랙교육은 그래도 재미는 있었던것 같다. 어찌됐든 과제이기 때문에 정답이 있는 것이고 시간만 때려밖으면 왠만하면 해결된다는 보장이 있는 것이기 때문에 힘들기는 해도 지치지는 않았다. 그러나 프로젝트는 트랙교육에 비해 잠도 많이 잤음에도 불구하고 정신적으로 너무 스트레스를 많이 받았고 12월에는 너무 지치고 쉬고싶었다. 아무튼 프로젝트는 결과적으로 나쁘지는 않았지만 좋다고 하기도 애매한 것 같다. 그래도 성과가 꽤 나와서 다행인것 같다. 프로젝트에 대해서 중요하게 평가되는 요소는 다음과 같다. ( 멘토님에게 들은 것 + 뇌피셜 ) 1..
사실 눈치 챘을 수도 있지만 지금까지 올라온 heap 블로그는 dreamhack의 Heap Allocator Exploit 강의를 기반으로 필자가 직접 공부하고 이해하며 이해하기 쉽도록 재구성하여 작성한 것들이다. 그래서 이전 블로그들은 매우 기본적인 공격 방법을 설명한 것이며 공격 조건이나 공격 방법 등의 것들도 정해져있는 것이 아니라 버전마다 바뀌기 때문에 익스플로잇 기법을 외워서 하기는 조금 힘들다. 그래서 추천드리는 사이트가 바로 how2heap 이다.https://github.com/shellphish/how2heap GitHub - shellphish/how2heap: A repository for learning various heap exploitation techniques.A repos..
tcache에서 라이브러리 영역 주소를 릭하는 방법은 다음과 같다.1. 7개의 tcache_entry 를 꽉 채워 tcache를 사용하지 않도록 한 후 unsorted bin을 만든다. (fast bin에 들어가지 않을 크기여야한다.)// gcc -o leak1 leak1.c -no-pie#include #include #include int main(){ uint64_t *ptr[10]; int i; for(i=0;i 2. tcache에서 허용하지 않는 크기를 할당한 이후 해제해 unsorted bin 을 만든다.// gcc -o leak2 leak2.c -no-pie#include #include #include int main(){ uint64_t *ptr[2]; ptr[0] = malloc(0x4..
공격조건fake chunk의 주소를 알아야 한다. 임의의 주소를 free할 수 있다. Tcache House of Spirit 이란?free 함수의 인자를 조작하여 임의의 메모리를 해제할 수 있을 때 사용할 수 있는 기법으로 원하는 주소에 힙을 할당해 임의의 주소에 값을 쓸 수 있다. 예시// gcc -o spirit1 spirit1.c -no-pie#include #include int main(){ long long fake_chunk[10] = {0,}; fake_chunk[0] = 0; fake_chunk[1] = 0x31; fake_chunk[2] = 0x41414141; free(&fake_chunk[2]); char *fake_alloc = malloc(0x20); printf("fake c..
calloc 이란?calloc은 malloc과 같이 동적으로 메모리를 할당하는 함수이다.calloc은 할당과 동시에 메모리를 초기화 해서 기존에 남이있던 데이터의 재사용을 방지한다.void *calloc(size_t nmemb, size_t size);calloc함수는 다음과 같고 첫 번째 인자는 할당할 크기, 두 번째 인자는 자료형의 크기다.그래서 총 크기는 nmemb * size 가 된다. calloc의 특징- calloc으로 할당한 힙을 해제하면 tcache_entry에 추가되긴 하지만 다시 calloc 함수를 통해 할당 요청을 하면 tcache_entry를 참조하지 않는다. 즉, tcache에 들어가기는 하지만 tcache에서 가져오지는 않는다. breaking calloccalloc 함수를 호출..
YISF은 8월에 끝났지만 이제서야 적는다. 사실 BOB하느라 문제만 내고 딱히 뭐 한거는 없다.뭔가 heap으로 야무진 문제를 만들고 싶은데 어떻게 해도 다 heap note challenge가 되버린다. 아직 경험이 부족해서 그런 것 같다. 내년 중순에 입대를 할 것 같아서 다음 YISF은 못하지만 입대 전에 몇 문제 만들고 갈까 생각중이다. misc 하 문제 pikachu와 pwnable 하 문제 yisf_hospital 문제를 만들었다. pikachush 같은 명령어로 날먹하는것을 방지하기 위해 /bin/sh 권한을 없애고 명령어를 치면 /bin/명령어 로 만들어서 execve로 실행하게 했다. cat flag를 만들면 된다. (* 도 필터링) cat flag0x67616C6620746163pi..
이번 9월 26일에 충청권 사이버보안 경진대회를 다녀왔다.도착하고 등록한 후에 옷을 갈아입고 점심식사후에 대회를 시작하였다.이번에도 작년과 비슷하게 여러분야의 문제가 나왔다. 문제는 작년과 다르게 꽤 많이 어려웠으며 몇몇 100점(하) 문제가 0솔버가 나기도 하였다. 역시 간식은 많이 제공되었고 야식으로는 치킨을 받았다. 대회는 12시에 종료되었고 개별 숙소로 들어가서 잠을 잤다. 다음날 아침 8시 반에 일어나서 아침식사는 패스하고 숙소 체크아웃을 했고 문제리뷰와 외부 특강 후 시상식을 한 후 경품추첨 및 폐회를 하며 종료되었다. 이번에는 수상을 노려보았지만 아쉽게도 살짝 모자랐다. 아무래도 다른사람이 못푸는 문제를 풀어야 되는데 고점이 조금 낮은 것 같다.이번 대회에서 kaist도 참가했는데 진짜 ..