backup (10) 썸네일형 리스트형 [Basic] Buffer Over Flow Note - 1 이전 블로그에서 백업한 내용입니다 개요 BOF (Buffer Over Flow) 관련 공부 중에 예제를 보며 익혔던 내용들을 기록하고자 합니다. 인접한 변수 목표는 buffer변수를 오버플로우 시키면 zero 변수의 값이 변하는지 관찰하는 것으로 시작했습니다. 소스 코드의 실행 결과 buffer 변수의 주소와 zero 변수의 주소가 출력되기 때문에 gdb를 통해서 zero 변수의 값을 바꾸려면 buffer 변수를 몇 바이트를 overflow 시켜야 되는지 알아보고자 합니다. gdb를 통해 알아보기 전에 대략 유추해봅시다. buffer변수에는 10바이트 (char 변수의 크기 1byte * 배열의 크기 10)가 할당되어있습니다. 여기서 일단 해 볼 수 있는 것은 10바이트를 넘게 입력해보는 것입니다. 첫 .. 프로세스의 실행 경로 가져오기 개요 WMI()로 현재 열려있는 파일 경로를 가져오려고 시도해봤습니다. 방법이 나오지 않던 차에 psutil 라이브러리를 이용하면 해결할 수 있었기에 psutil 라이브러리를 통해 현재 열려있는 특정 파일의 경로를 가져와보는 방법을 적어보고자 합니다. psutil 설치 psutil은 기본적으로 설치되어있는 라이브러리는 아닙니다. pip 명령어를 통해 설치합니다. pip install psutil 실행 중인 Process 항목 가져오기 import psutil for process in psutil.process_iter(): print(process) process_iter()는 현재 실행되고 있는 process의 정보를 iterable 하게 변환해줍니다. 각각의 process 정보를 for문으로 pri.. UserAssist 레지스트리 분석 레지스트리 분석으로 사용했던 프로그램을? 윈도우 레지스트리 정보에는 사용했던 프로그램 정보들을 가지고 있는 항목이 있습니다. 윈도우 10에서 확인해 본 결과 경로는 다음과 같습니다. HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist\{CEBFF5CD-ACE2-4F4F-9178-9926F41749EA}\Count} 레지스트리 정보는 "Windows" 를 누르신 후, reg 까지 입력하면 자동으로 레지스트리 편집기를 찾아줍니다. 암호화 되어있는 레지스트리 정보 아래의 사진은 제가 쓰고 있는 실제 컴퓨터에서 사용했던 프로그램 목록이 들어있는 레지스트리 정보입니다. 보시는 바와 같이 알 수 없는 문자열로 되어있습니다. .. Oracle SQL : Madang.sql SQL을 다루기 전에는 오라클 홈페이지에서 Oracle Database 11g Release2를 다운로드 받아야 합니다. 개인적으로 "데이터 베이스의 꽃" 이라 할 수 있는 SQL 문법을 소개해보고자 합니다. SQLplus로 SQL을 작성할 수 있지만 SQL Developer를 이용해 SQL를 작성해 볼 것입니다. SQL Developer는 Oracle 홈페이지의 개발자 도구 부분을 보면 다운로드 받을 수 있습니다. 오라클 홈페이지에서 "메뉴 -> 다운로드 및 시험판 -> 개발자 다운로드" 오른쪽 4번쨰 항목의 "SQL Developer"를 클릭하면 아마 운영체제 별로 각 SQL Developer 버전이 나옵니다 자신의 운영체제에 맞는 SQL Developer를 다운받으면 됩니다 아마 알집 형태로 다운로.. Data Base Architecture 1 Stand-Alone 방식 먼저 Stand-Alone 방식입니다 데이터 베이스의 동작머신이 LAN이나 인터넷 등의 네트워크를 통해 접속하지 않고 '독립되어' 동작하는 구성이라고 합니다. 이게 무슨 말이냐 하면 데이터 베이스를 사용하고 싶은 사용자는 데이터 베이스 서버가 설치된 장소까지 물리적으로 접근해서 데이터 베이스 서버를 다뤄야 한다는 의미입니다. 물리적으로 접근한 뒤 사용해야하기 떄문에 보안성이 높은 것이 아주 큰 장점입니다. 또한 주로 구축이 간단해서 소규모 작업이나 테스트를 빨리할 수 있다는 점도 있습니다 단점이 현대의 서버로 동작하는 양식에 맞지 않습니다 물리적으로 떨어져 있으니 네트워크를 통한 접근이 안되며, 복수의 사용자가 동시에 작업을 할 수 없고, 가용성이 낮고,확장성이 부족하다 정.. [Java] 상속 (Inheritance) Java를 통해 객체지향 언어를 이해해보는 학습노트입니다 객체지향의 4가지 특징 원래 객체지향의 특징은 이 OOP 카테고리 맨 첫 번째로 포스팅되어야 했습니다. 이 4가지 특징에 대한 개념을 "상속"에 적는 이유는 저희는 벌써 2가지 특징 "추상화" ,"캡슐화"를 배웠습니다. 캡슐화는 4편에서 설명드렸지만 "추상화"는 직접적으로 언급한 적이 없습니다. 객체지향 코딩을 하면서 이미 "추상화"를 했기 때문입니다. "추상화"라는 것은 객체들의 공통적인 (속성과 기능)을 뽑아내는 것 정도라고 만 아시면 됩니다. "다형성"은 개념이 복잡하므로 추후에 다루도록 하겠습니다 그렇다면 객체지향의 4가지 특징은 다음과 같이 정리 됩니다. 1. 추상화, Abstraction 2. 캡슐화, Encapsulation 3. 상속.. [Java] 캡슐화 (Encapsulation) Java를 통해 객체지향 언어를 이해해보는 학습노트입니다 캡슐화? 캡슐화는 한 마디로 "은닉화"라고 생각하시면 됩니다. 일단 하나의 클래스를 예제로 들어보겠습니다. 멤버 변수는 String 형인 name 과 int 형인 id 두 개 밖에 없습니다. 이 클래스의 멤버 변수에 접근하기 위해서는 다음과 같이 접근합니다. 이러한 접근방법은 클래스의 속성을 함부로 변경을 가능하게 만드는 위험성을 가지고 있습니다. private로 선언된 멤버변수의 getter ,setter 메서드 밑의 코드는 Student 라는 이름의 클래스입니다. 자세히 들여다 보시면 변수의 접근 제한자가 private로 선언되어있는 것을 확인할 수 있습니다. 그리고 밑의 메서드명에 'set' 과 'get' 이라는 단어가 들어가 있는 걸 확인 .. [Java] 생성자 오버로딩 생성자란? ,Constructor 생성자(Constructor)는 객체를 생성할 때 최초로 실행되는 메소드의 일종입니다. 코드를 통해 이해하자면 다음과 같습니다. "MyClass1"이라는 클래스를 하나 생성하고 이 클래스와 이름이 같은 메소드인 "public MyClass1()"이라는 메소드를 생성합니다. 바로 이 클래스의 이름과 동일한 메소드인 MyClass1() 이라는 메소드가 생성자인 것입니다. 이 생성자를 살펴보시면 Parameter로 두 개의 값을 받고 있습니다. 그리고 밑의 "this" 라는 Keyword를 통해 무엇인가 값을 할당하고 있습니다. "this"라는 키워드는 MyClass1 이라는 클래스의 멤버 변수에 접근할 수 있게 만들어주는 Keyword 입니다. 그리고 그 밑으로 Parame.. 이전 1 2 다음