System hacking training
-
[Linux Memory Protection] - ASLRSystem hacking training/Knowledge 2019. 5. 14. 11:48
복습겸 리눅스 환경의 메모리 보호 기법에 대해 알아봅시다. Ref : https://bpsecblog.wordpress.com/2016/05/16/memory_protect_linux_1/ linux 환경에서의 메모리 보호기법을 알아보자(1) 지금부터 Linux 환경에서의 메모리 보호 기법에 대해 알아봅시다! 이번 편에서는 ASLR, NX, ASCII-Armor, Stack canary에 대해 알아보겠습니다. 위키를 통해 “메모리 보호”라는 말의 정의를 알아보고 넘어갑시다. 실습 환경: CentOS 6.7 (32bit) ASLR : Address Space Layout Randomizati… bpsecblog.wordpress.com 이 글을 토대로 공부한 내용을 포스팅하겠습니다. ASLR /proc/s..
-
Stack7 풀이System hacking training/Protostar 2019. 4. 11. 01:50
#include #include #include #include char *getpath() { char buffer[64]; unsigned int ret; printf("input path please: "); fflush(stdout); gets(buffer); ret = __builtin_return_address(0); if((ret & 0xb0000000) == 0xb0000000) { printf("bzzzt (%p) ", ret); _exit(1); } printf("got path %s ", buffer); return strdup(buffer); } int main(int argc, char **argv) { getpath(); } Stack의 마지막 문제 풀이를 해봤습니다. 이 문제의..
-
[Toddler's Bottle] leg write upSystem hacking training/pwnable.kr 2019. 1. 28. 17:22
arm에 관한 문제를 풀어봤습니다. Daddy told me I should study arm. But I prefer to study my leg! Download : http://pwnable.kr/bin/leg.c Download : http://pwnable.kr/bin/leg.asm ssh leg@pwnable.kr -p2222 (pw:guest) 이 문제는 arm 어셈블리언어를 알아야 풀 수 있습니다. 주어진 두 링크를 들어가보면 C코드와 어셈블리 코드가 주어집니다. 여기서 저는 어셈블리 코드로 분석을 진행했는데요. #include #include int key1(){ asm("mov r3, pc\n"); } int key2(){ asm( "push {r6}\n" "add r6, pc, $1\..
-
heap2 풀이System hacking training/Protostar 2018. 12. 22. 22:30
[heap2.c] heap2는 heap overflow, use after free를 이용한 문제인것 같다. 코드상에 auth chunk의 데이터가 들어가는 주소를 출력해주는 부분이 있는데, 이를 이용해서 쉽게 "you have logged in already!"라는 문구를 띄울 수 있다. 처음 "auth "를 입력하면 auth구조체의 크기 만큼 malloc을 해주는데 이 위치가 0x804c008이다. 이후 service를 입력하면 0x804c018의 위치에 메모리를 할당 받고, string을 복사해주는데, 이는 strdup()의 특성이다. strdup()는 malloc() + strcpy()인데, malloc()을 호출하여 string의 사본에 대한 기억장치 공간을 예약한다. 예를 들어 strdup("..
-
heap1 풀이System hacking training/Protostar 2018. 12. 21. 11:57
[heap1.c] #include #include #include #include #include struct internet { int priority; char *name; }; void winner() { printf("and we have a winner @ %d\n", time(NULL)); } int main(int argc, char **argv) { struct internet *i1, *i2, *i3; i1 = malloc(sizeof(struct internet)); i1->priority = 1; i1->name = malloc(8); i2 = malloc(sizeof(struct internet)); i2->priority = 2; i2->name = malloc(8); strcpy..
-
heap0 풀이System hacking training/Protostar 2018. 12. 21. 10:23
[heap0.c] #include #include #include #include #include struct data { char name[64];};struct fp { int (*fp)();};void winner(){ printf("level passed\n");}void nowinner(){ printf("level has not been passed\n");}int main(int argc, char **argv){ struct data *d; struct fp *f; d = malloc(sizeof(struct data)); f = malloc(sizeof(struct fp)); f->fp = nowinner; printf("data is at %p, fp is at %p\n", d, f);..
-
What is heap - part 2System hacking training/Knowledge 2018. 12. 21. 08:22
What is heap part 2! Ref : https://www.youtube.com/watch?v=GiOKJJEXBiU 오늘도 koreangang의 영상을 보고 정리한 글을 공유하려 합니다. 영상이 매우 짜임새있고, 이해하기 쉬워서 heap을 공부하시는 분들이라면 꼭 봤으면 좋겠네요..ㅎㅎ 지난번에는 heap의 구조에 대해 알아봤다면 오늘은 dlmalloc이 메모리를 어떻게 관리하는지에 대해 알아보겠습니다. dlmalloc의 알고리즘 dlmalloc의 할당하고, 해제하는 메커니즘은 크게 두가지로 나눌 수 있는데 boundary tag와 binning이 이에 해당합니다. - chunk의 크기 정보가 chunk의 앞뒤에 저장(boundary tag) - 재사용 가능한 chunk를 크기 단위로 관리(b..
-
What is heap - part1System hacking training/Knowledge 2018. 12. 12. 09:57
What is heap part 1 CTF문제를 풀이함에 있어 전혀 손도 못대는 영역이 heap영역에 대한 취약점을 다룬 문제들이였는데 Koreangang에서 아주 좋은 강의가 올라와서 heap을 처음으로 공부를 해봤습니다. 영상에서도 설명이 되었지만 how2heap을 통해 공부를 시작하려고 하지만 어디서부터 어떻게 시작해야되는지 모르시는 분들에게 정말 필요한 영상인것 같습니다 :) Heap Concept Tutorial#1(for heap exploit) https://www.youtube.com/watch?v=l0GVitgBPf0 이번 글에서는 해당 영상을 토대로 공부를 하면서 정리를 한 것을 포스팅하겠습니다. 제 정리가 보기 불편하고 어렵다면 위의 링크에서 영상을 보고 오시는 것을 추천드립니다. h..