basic

linux 환경의 메모리 보호기법을 알아보자(3)

linux 환경의 메모리 보호기법을 알아보자(3) 이번 편에서는 다음 편에서 다룰 PIE라는 개념을 위해 먼저 PIC에 대해 알아보도록 하겠습니다! 배경 지식들과 함께 알아봅시다. 실습 환경 Ubuntu 15.10 32bits 정적 라이브러리와 공유 라이브러리 1) 정적

Continue reading

linux 환경의 메모리 보호기법을 알아보자(2)

linux 환경의 메모리 보호기법을 알아보자(2) 이번 편에서는 RELRO에 대해 알아보겠습니다!! RELRO 설명에 앞서 필요한 개념들을 하나씩 알아봅시다. Lazy Binding이란? Dynamic Linking 방식으로 컴파일이 된 ELF 바이너리는 공유 라이브러리 내

Continue reading

linux 환경의 메모리 보호기법을 알아보자(1)

linux 환경의 메모리 보호기법을 알아보자(1) 지금부터 Linux 환경에서의 메모리 보호 기법에 대해 알아봅시다! 이번 편에서는 ASLR, NX, ASCII-Armor, Stack canary에 대해 알아보겠습니다. 위키를 통해 “메모리 보호”라는 말의 정의를 알아보고 넘어갑시다

Continue reading

(完)우리집에 GDB 있는데... 메모리 보고갈래? #03

(完)우리집에 GDB 있는데… 메모리 보고갈래? #03 Day#3 이쯤 했으면 이제 그만 엔터치자 오늘부터 1일♡ 1. DEBUGGING (IDA, GDB 사용) 우리는 이미 tomato.c 소스가 있지만, 보통 소스는 잘 안주잖아여 없다는 가정하에 디버깅을 해봅씨다! (1) IDA (취

Continue reading

우리집에 GDB 있는데... 메모리 보고갈래? #번외

문제푸는 입장에서 다시보는 소소한(?) 것들 부제 : 기술이사님 만족하심까 feat. Big Engian & Little Endian, 로컬 환경이면서 socat으로 리모트 환경인 척 하기 이사님이 자세히 쓰라거하셔서 준비해씀다 필요한데 헷갈리고 정리안되는 것들 정리해드려

Continue reading

우리집에 GDB 있는데... 메모리 보고갈래? #02

우리집에 GDB 있는데… 메모리 보고갈래? #02 Day#2 애프터 신청 (너 gdb 사용법, 갖고싶다.. 너란 stack ) tomato.c //tomato.c #include <string.h>#include <stdio.h>#include <stdlib.h> void func2() { puts("func2()"); } void sum(int a, int b) { printf("sum : %d\n", a+b); func2(); } int main(int argc, char *argv[]) { int num=0; char arr[10]; sum(1,2); strcpy(arr,argv[1]); printf("arr: %s\n", arr); if(num==1){ system("/bin/sh"); } return 0; } compile $ gcc -fno-stack-protector -o tomato tomato.c -fno-stack-protector

Continue reading

우리집에 GDB 있는데... 메모리 보고갈래? #01

우리집에 GDB 있는데… 메모리 보고갈래? #01 들어가기 앞서… 컴(존)알못들이여 오라. 보안 공부하다 높다란 진입장벽 앞에서 좌절하신 분들께 이 글을 바칩니다. 해커가 되겠다는 청운을 안고 대학을 입학했

Continue reading

PLT와 GOT 자세히 알기 #02

Dynamic Linking 과정을 추적해 PLT와 GOT를 이해 해보자 이번 편에서는 Codegate 2015 본선 문제 였던 pwnable 분야의 yocto 를 통해 PLT 와 GOT에 대해 자세히 알아보겠습니다. 과정이 조금 복잡하기 때문에, 보시면서 따라 해 보는 것이 조금 더 도움이 될 것 같습니다. :)

Continue reading