Yozzang의 해킹일기 💻
article thumbnail
Basic Program Execution Registers
Reverse Engineering 2022. 7. 27. 00:30

이번 포스트에서는 IA-32 레지스터의 종류 중 하나인 "basic program execution registers"에 대해 다루겠다. Basic program execution registers는 다음 그림과 같이 4개의 그룹으로 이루어져 있다. ## 범용 레지스터 (General-Purpose Registers) : 범용 레지스터는 이름처럼 범용적으로 사용되는 레지스터들이다. 보통 상수/주소 등을 저장할 때 주로 사용되며, 특정 어셈블리 명령어에서는 특정 레지스터를 조작하기도 한다. 32비트로 이루어져있다. 종류 : EAX : 산술 연산 및 논리 연산 실행 (ADD, SUB, XOR, OR), 함수 리턴 값에도 사용 EBX : 메모리 주소 저장 ECX : 반복문 명령어(LOOP)에서 반복 카운트로 ..

article thumbnail
시스템 보안

해당 포스트는 정보보안기사 필기시험을 대비하기 위해 작성한 필기본이다. ## 보안 운영체제 보호방법 물리적 분리(Physical separation) : 사용자별로 별도의 장비만 사용하도록 제한하는 방법 시간적 분리(Temporal separation) : 프로세스가 동일 시간에 하나씩만 실행되도록 하는 방법 논리적 분리(Logical separation) : 각 프로세스가 논리적인 구역을 갖도록 하는 방법 암호적 분리(Cryptographic separation) : 내부에서 사용되는 정보를 외부에서는 알 수 없도록 암호화하는 방법 ## 파일 보호기법 파일의 이름 명명(naming) : 다른 사용자 파일의 이름을 알 수 있는 기법이 없고 그 이름을 추측하기도 힘들다는 가정에 근거 패스워드(passwor..

article thumbnail
접근통제

해당 포스트는 정보보안기사 필기시험을 대비하기 위해 작성한 필기본이다. ## 접근통제의 구성 용어 주체(Subject) : 객체나 객체 내의 데이터에 대한 접근을 요청하는능동적인 개체 (사용자, 프로그램 혹은 프로세스) 객체(Object) : 접근대상이 될 수동적인 개체 혹은 행위가 일어날 아이템 (컴퓨터, 데이터베이스, 파일, 컴퓨터 프로그램, 디렉터리) 접근(Access) : 주체와 객체 사이의 정보 흐름 (읽고, 만들고, 삭제하거나 수정) ## 접근통제 3단계 식별 : 본인이 누구라는 것을 시스템에 밝히는 것 (사용자명, 계정번호, 메모리카드) 인증 : 주체의 신원을 검증하기 위한 사용 증명 활동 (패스워드, PIN, 토큰, 스마트카드, 생체인증) 인가 : 인증된 주체에게 접근을 허용하고 특정 업무..

article thumbnail
암호학

해당 포스트는 정보보안기사 필기시험을 대비하기 위해 작성한 필기본이다. ## 암호기법의 분류 치환 암호(대치 암호) : 비트, 문자 또는 문자의 블록을 다른 비트, 문자 또는 블록으로 대체 전치 암호 : 비트, 문자 또는 블록이 원래 의미를 감추도록 재배열 블록 암호 : 특정 비트 수의 집합을 한 번에 처리하는 암호 알고리즘을 총칭 스트림 암호 : 한 번에 1비트의 데이터 흐름을 순차적으로 처리해가는 암호 알고리즘을 총칭 링크 암호화 : 모든 정보는 암호화되고, 패킷은 라우터나 다른 중간에 있는 장비가 이 패킷을 다음에 어디로 보내야 하는지 알아야 하기 때문에 각 홉에서 해독됨 종단간 암호화 : 종단간 암호화에서는 헤더와 트레일러가 암호화되지 않기 때문에 패킷을 각 홉에서 해독하고 암호화할 필요가 없음 ..

article thumbnail
OS Command Injection (OS 명령어 인젝션)
WebHacking 2022. 7. 23. 00:37

이번 포스트에서는 OS Command Injection 기법에 대해서 다루겠다. OS Command Injection OS Command Injection의 정의 : 웹 응용 프로그램의 개발에 사용하는 언어의 대부분은 셸을 통해 OS 명령어를 실행할 수 있다. 셸을 통해 OS 명령을 실행하거나 개발에 사용된 기능이 내부적으로 셸을 사용해 구현된 경우 의도하지 않은 OS 명령이 실행될 수 있다. 이 취약점을 OS 명령어 인젝션이라고 한다. OS Command Injection의 발생 원인 : 셸에서 2개 이상의 명령어를 한 줄에 실행할 수 있기 때문에 원래의 명령 이외에 다른 명령을 실행할 수 있다. OS Command Injection이 왜 위험한가? OS 명령어 인젝션이 발생한 경우 웹 서비스 상의 모..

article thumbnail
정보보호 개요

해당 포스트는 정보보안기사 필기시험을 대비하기 위해 작성한 필기본이다. ## 정보보호의 목표 기밀성(Confidentiality) : 오직 인가된 사람, 프로세스, 시스템만이 알 필요성에 근거하여 시스템에 접근해야 한다는 원칙 (threat -> 도청, 사회공학) 무결성(Integrity) : 정보의 내용이 불법적으로 생성 또는 변경되거나 삭제되지 않도록 보호되어야 하는 성질 (threat -> 논리폭탄, 백도어, 바이러스) 가용성(Availability) : 정당한 사용자가 정보시스템의 데이터 또는 자원을 필요할 때 지체 없이 원하는 객체 또는 자원에 접근하여 사용할 수 있는 성질 (threat -> Dos, DDos, 지진, 홍수, 화재) 인증성(Authentication) : 임의 정보에 접근할 수..

article thumbnail
Pwnable (17. memcpy)
Wargame/Pwnable 2022. 7. 21. 00:31

이번 포스트에서는 Pwnable의 memcpy 문제에 대해 다루겠다. 문제 코드는 다음과 같다. #include #include #include #include #include #include #include unsigned long long rdtsc(){ asm("rdtsc"); } char* slow_memcpy(char* dest, const char* src, size_t len){ int i; for (i=0; i= 64){ i = len / 64; len &= (64-1); while(i-- > 0){ __asm__ __volatile__ ( "movdqa (%0), %%xmm0\n" "movdqa 16(%0), %%xmm1\n" "movdqa 32(%0), %%xmm2\n" "movdqa ..

article thumbnail
Pwnable (16. uaf)
Wargame/Pwnable 2022. 7. 20. 00:38

이번 포스트에서는 Pwnable의 uaf 문제에 대해 다루겠다. 문제 코드는 다음과 같다. #include #include #include #include #include using namespace std; class Human{ private: virtual void give_shell(){ system("/bin/sh"); } protected: int age; string name; public: virtual void introduce(){ cout

article thumbnail
XSS game (Level 6)
Wargame/XSS game 2022. 7. 19. 00:45

이번 포스트에서는 XSS game의 Level 6 문제를 풀어보도록 하겠다. 문제에 들어가면 다음과 같은 화면이 보인다. ## 문제 해석 : 웹 사이트가 외부 파일을 요청해서 alert()을 실행하게 하면 된다. ## 문제 풀이 : 코드를 먼저 확인해보겠다. 43번째 코드를 확인해면 #뒤에 오는 값이 그대로 gadget의 경로로 활용된다고 한다. 그럼 바로 한 번 확인해보겠다. ### 공격 코드 : https://xss-game.appspot.com/level6/frame#GOTYOU ### 실행 결과 : GOTYOU가 화면에 출력된 것을 확인할 수 있다. 그럼 Data Url Schema라는 기법을 통해 공격을 시도해보겠다. Data Url Schema : 데이터를 URL 표현으로 바꾼다. 사용법은 d..

article thumbnail
XSS game (Level 5)
Wargame/XSS game 2022. 7. 18. 00:26

이번 포스트에서는 XSS game의 Level 5 문제를 풀어보도록 하겠다. 문제에 들어가면 다음과 같은 화면이 보인다. ## 문제 해석 : 사진 하단에 표시된 웹 사이트에 간단하게 alert()만 띄우면 된다. ## 문제 풀이 : Sign up을 누르면 다음과 같은 화면이 나온다. 이메일을 입력하고 Next 버튼을 누르면 다음과 같은 화면이 나온다. 5초 뒤에 다시 초기화면으로 돌아간다. 이어서 코드를 확인해보겠다. next 파라미터 값이 그대로 활용되어 next 변수값에 들어간 것을 확인할 수 있다. 즉, 우리는 next 변수를 통해 자바스크립트를 전달할 수 있다. 그러나 URL을 모르기 때문에 URL을 알아내보도록 하겠다. 13번째 코드를 확인해보면 url을 알 수 있다. 이제 url와 next 파..