본문 바로가기
반응형

분류 전체보기167

Buffer Overflow 원리 - 쉘코드 쉘 코드 만들기 쉘코드를 만들어보자. 쉘 코드란 쉘(shell)을 실행시키는 코드이다. 쉘은 흔히 명령 해석기라고 불리는데 일종의 유저 인터페이스라고 보면 된다. 사용자의 키보드 입력을 받아서 실행파일을 실행시키거나 커널에 어떠한 명령을 내릴 수 있는 대화통로이다. 쉘 코드는 바이너리 형태의 기계어 코드이다. 우리는 쉘 코드를 만들어야 하는 이유는 실행중인 프로세스에게 어떠한 동작을 하도록 코드를 넣어 그 실행 흐름을 조작 할 것이기 때문에 역시 실행 가능한 상태의 명령어를 만들어야 하기 때문이다. 만약 공격자가 기계어 코드에 능통하다면 직접 기계어 코드를 작성해도 좋을 것이다. 하지만 지금은 CPU instruction의 종류가 늘어났고 너컬이 복잡해져서 아주 힘든 작업이다. 그래서 C를 이용하여 간단.. 2021. 8. 6.
JAVA 객체지향 프로그래밍 (예제 파일) 프로그래밍을 접해본 사람이라면 객체지향이라는 단어를 들어본적이 있을 것이다. 객체지향의 개념 1. 구조적 프로그래밍 기법 데이터와 함수를 이용하여 순차적으로 구현하며 프로그램의 유지보수가 어렵다. C언어의 경우와 같이 함수와 제어구조를 이용하여 데이터를 순차적으로 처리하는데 적합한 방식이다. 데이터와 함수가 분리되어 있으며 기존 기능에 새로운 기능을 추가해야 할 경우, 프로그램 전체에 대하여 수정이 필요하다. 2. 객체지향 프로그래밍 기법 현실세계의 물체 또는 개념을 속성과 기능을 가진 객체로 모델링하여 프로그래밍에 사용하는 것을 말한다. 변수와 기능을 객체라는 개념으로 묶어 놓는다. 새로운 객체를 추가하기 쉬우며 프로그램 유지보수가 쉽다. 새로운 객체가 추가되더라도 기존 객체에 무관하며 .. 2021. 8. 6.
JAVA 데이터형, 연산자, 제어문, 배열 (예제 자료) JAVA의 데이터형과 연산자에 대해 살펴보자 데이터형 1. 식별자 변수명, 클래스명, 메서드명 등을 지정할 때 사용하는 문자열로서 프로그래머가 임의로 명명할 수 있다. 식별자를 사용할때는 정해진 규칙을 따라야한다. ㄱ. 식별자의 첫 문자는 반드시 문자이어야 한다. ㄴ. 문자와 숫자를 혼합해서 사용할 수 없다. ㄷ. 특수문자는 사용 불가능하나 '_', '$'는 사용가능하다. ㄹ. 예약어는 식별자로 사용할 수 없다. ㅁ. 대소문자는 구분되어 사용된다. 2. 예약어 자바언어에서 기본적으로 정의해 놓은 단어이며 사용자들은 이런 예약어를 식별자로 정의하여 사용할 수 없다. (abstract, boolean, break, case, char, false, final, new, null, int 등등).. 2021. 8. 6.
ANDROID HelloWorld! 이제 안드로이드 어플리케이션을 개발을 위한 환경설정과 기본적인 앱을 만들어보자. (본인이 맥 사용자라.. 맥기반으로만 설명합니다.) 우선 안드로이드 앱을 설치하기 위해서는 3가지가 필요하다. 자바 개발도구 가상기기 우선 자바를 최신버전으로 업그레이드 한다. (없으면 설치하세요) 시스템 환경설정에 들어가면 자바가 있다. 그리고(개발도구) http://developer.android.com/intl/ko/sdk/index.html 에 가서 안드로이드 스튜디오를 설치하여준다. 마지막으로(가상기기) https://www.genymotion.com/ 에 들어가 가입하고 다운받아 설치하여 준다. 그럼 개발환경 구성에 끝났다. 중간에 설칭방법이나 그 외의 것들은 다른 블로그 참고하기 바란다. (뻔뻔ㅈㅅ) 모든 준비가.. 2021. 8. 6.
ANDROID 안드로이드란? 안드로이드 플랫폼이란? 플랫폼이란 기반이 되는 시스템을 뜻한다. 즉, 소프트웨어 적인 측면+하드웨어 적인 측면의 결합이라고 할 수 있다. 모바일 플랫폼은 모바일 기반 및 모바일 장치에 탑재되어 구동되는 소프트웨어라고 보면된다. 안드로이드 플랫폼은 구글에서 개발하여 모바일 장치를 위한 소프트웨어 스택으로 구성되어있다. 뿐만아니라 자바 언어를 이용하여 안드로이드 응용 프로그램이 개발 가능하다. 안드로이드 SDK(Software Development Kit)에는 개발에 필요한 기본적인 tool을 포함하여 api를 제공하고 있다. 안드로이드 특징 Application Framework컴포넌트의 재사용 및 대체를 가능 Dalvik virtual machine을 사용한다. (달빅 가상 머신은 Java 가상머신과 같.. 2021. 8. 6.
Buffer Overflow 원리 - Buffer overflow의 이해 버퍼(buffer)란 시스템이 연산 작업을 하는데 있어 필요한 데이터를 일시적으로 메모리 상에 저장하는 공간이다. (문자열을 처리할 것이면 문자열 버퍼가 되고, 수열이라면 숫자형 데이터 배열이 된다.) 대부분의 프로그램에서는 버퍼를 스텍에다 생성한다. 스텍은 함수 내에서 선언한 지역 변수가 저장되게 되고 함수가 끝나고 나면 반환된다. (이것은 malloc()과 같은 반영구적인 데이터 저장 곤간과는 다른 것이다.) buffer overflow의 동작원리 버퍼오버플로우는 미리 준비된 버퍼에 버퍼의 크기 보다 큰 데이터를 쓸 때 발생하게 된다. 40바이트의 스텍이 준비되어 있다고 가정해보자. 만약 40바이트 보다 큰 데이터를 쓰면, 버퍼가 넘치게 되고 프로그램은 에러를 발생시키게 된다. 40바이트가 아닌 41.. 2021. 8. 6.
반응형