본문 바로가기

Hacking

(5)
리눅스 프로세스 메모리 구조 및 여러 기초정보 (ORANG 참조 ) env , etc , argv , argc 또한 stack의 일부분임. kernel : 커널영역은 사용자의 접근을 못하도록 할당해 놓았다.OS의 시스템 코드가 로드되는 부분으로 우리가 건들 수 없다. Stack : 프로그램에서 사용되는 각종 환경변수 , 파라미터 , 리턴값 , 지역변수 등의 정보를 담고 있다. user space ( libc ) : 프로그램이 내부에서 사용하는 라이브러리 함수들과 관련된 공유라이브러리 파일이 적재되는 영역 Heap : 동적 할당되는 변수의 데이터가 위치하는 영역 Bss , Data : 프로그램에서 사용하는 전역변수 , 정적변수 등 각종 변수들이 실제로 위치하는 메모리 영역. 변수가 초기화되면 데이터 영역 , 초기화되지 않으면 bss 영역에 있다. 그리..
Buffer Overflow Basic 3 Buffer Overflow의 이해 버퍼란 , 시스템이 연산을 하는데 있어 필요한 데이터를 일시적으로 저장하는 저장공간을 말한다. 문자열을 처리하게 되면 문자열 버퍼가 되고 , 수열이라면 수열 버퍼가 되겠다.대부분의 프로그램에서는 이러한 버퍼를 스택에다 생성한다. 스택은 함수 내에서 선언한 지역 변수가 저장되고 함수가 끝나고나면 반환한다. BOF는 미리준비된 버퍼의 크기보다 큰 데이터를 쓸 때 발생하게 된다.만약 40byte 크기의 버퍼가 준비되어있는데 41~44byte를 사용하면 이전 함수의 bp를 수정하게 될 것이다. 더 나아가 45~48byte를 쓴다면 return address가 저장되어 있는 공간을 침범하게 될 것이다.따라서 BOF공격은 공격자가 메모리상의 임의의 위치에다 원하는 코드를 저장시켜..
Buffer Overflow Basic 2 이번엔 프로그램이 실행되면 프로세스가 메모리에 적재되고 메모리와 레지스터의 동작을 간단한 프로그램을 통해 확인해보자. 위와같은 간단한 소스를 짜고 컴파일 ( gcc -s )까지 하자.그 후 simple.c 프로그램이 컴파일 되어 실제 메모리상 어느위치에 존재하는지 확인해보기 위해 gdb를 이용하여 어셈블리 코드와 메모리에 적재될 logical address를 살펴보자. ( 각자 실행 ) 살펴보면 function()함수가 아래에 자리잡고 main()함수는 위에 자리잡음을 확인할 수 있다.따라서 메모리 주소를 바탕으로 생성될 이 프로그램의 segment 모양은 다음과 같다.이 소스에는 전역변수를 지정하지 않았기 때문에 data segment에는 링크된 라이브러리의 전역변수값만 들어있을 것이다. 이제 프로그램..
Buffer Overflow Basic 1 기초관련 내용은 달고나 문서를 참조했습니다. 1. 8086 Memory Architecture 위 사진은 8086 시스템의 기본적인 메모리구조다. 시스템이 초기화되기 시작하면 시스템은 커널을 메모리에 적재시키고 가용 메모리 영역(Available Space)을 확인하게 된다. ( 커널 : 컴퓨터 운영체계의 가장 중요한 핵심으로써 운영체계의 다른 모든 부분에 여러가지 기본적인 서비스를 제공.메모리나 저장장치 내에서 운영체계의 주소공간 관리 , 메모리 관리 역할 ) 요즘 사용되는 시스템의 CPU는 64bit이므로 메모리 영역은 0 ~ 2^64 -1 범위를 갖는다. 프로세스 : 하나의 프로그램이 실행되기 위한 메모리 구조.운영체제는 하나의 프로세스를 실행시키면 이 프로세스를 segment라는 단위로 묶어서 가..
JavaScript 시작 JavaScript는 웹브라우저를 동적으로 , 프로그래밍 적으로 제어하기 위해서 고안된 언어다. 그렇기 때문에 오늘날 가장 중요한 플랫폼이라고 할 수 있는 웹브라우저에서 유일하게 사용할 수 있는 프로그래밍 언어다. 자바스크립트는 배우기 쉬운 언어라고 한다 , 그 이유는 여러가지가 있겠지만 아는 만큼 사용할 수 있는 언어라는 특성이 제일 크다. 자바스크립트가 전반적으로 웹쪽에서 많이 쓰이지만 자바스크립트가 요즘은 탈 웹브라우저화? 되서 할 수 있는 것들을 정리해보자. 웹페이지 스크립팅(DOM) , 서버측 스크립팅(node.js) , 브라우저 확장기능( ex:Chrome Extensions ,opera...etc) Adobe PDF , Unity 게임엔진 , 채팅 시스템등 여러곳에 응용 될 수있다. 나는 워..