본문 바로가기

프로그래밍

[Windows System Hacking] Bypassing DEP [*] 해당 문서는 서적 [윈도우 시스템 해킹 가이드 - 버그헌팅과 익스플로잇]을 참고하여 작성하였습니다. Windows System Hacking 연구를 위해서 학습을 진행하며 여러가지 공격기법에 대하여 정리하려고 한다. 해당 문서는 Mitigation중 하나인 DEP에 대한 우회방법(Bypassing)에 대해 기술한 문서이다. DEP는 메모리 영역에 실행권한을 두어 실행권한이 없는 메모리 영역의 코드가 실행되는 것을 방지하는 기법이다. [실습 바이너리 & 익스플로잇 코드] [ 실습 환경 ] 테스트 환경 : Windows 10 Pro 64bit 테스트 대상 : VUPlayer 2.4.9 [Non ASLR, DEP, Non StackGuard, Non safeSEH] 테스트 도구 : Immunity De.. 더보기
[Windows System Hacking] Trampoline Techinque [*] 해당 문서는 서적 [윈도우 시스템 해킹 가이드 - 버그헌팅과 익스플로잇]을 참고하여 작성하였습니다. Windows System Hacking 연구를 위해서 학습을 진행하며 여러가지 공격기법에 대하여 정리하려고 한다. 해당 문서는 Stack 기반의 Buffer Over Flow를 이용한 Return Address 변조에 관한 문서이다. [실습 바이너리 & 익스플로잇 코드] [ 실습 환경 ] 테스트 환경 : Windows 10 Pro 64bit 테스트 대상 : BufferOverFlow.exe[ASLR, Non DEP, Non StackGuard, Non safeSEH] 테스트 도구 : Immunity Debugger, IDA Pro 7.0 우선 테스트 환경은 Windows 10 Pro 64bit 버.. 더보기
Category [University] I am currently taking a course in computer science at the university in the wake of the information age. My major is civil engineering, but I also have great interest in computer science. The category is the one that posts the results of a computer subject that has been acquired in the undergraduate course of a university. I am going to post information that I needed in class or homework that I .. 더보기
unlink (10points) 해당 문제를 확인해 본 결과 unlink를 이용하여 memory corruption을 일으키는 것으로 예상된다. 해당 문제의 디렉토리 내부를 확인해 본 결과 flag로 예상되는 파일과 솔루션 텍스트 그리고 실제 바이너리와 해당 바이너리에 대한 소스코드가 있는 것으로 확인된다. 바이너리를 실행해본 결과 stack과 heap의 주소를 보여주며, 입력을 받은 뒤 종료되는 것으로 확인된다. 소스코드를 확인해보자. #include #include #include typedef struct tagOBJ{ struct tagOBJ* fd; struct tagOBJ* bk; char buf[8]; }OBJ; void shell(){ system("/bin/sh"); } void unlink(OBJ* P){ OBJ* B.. 더보기
C++에서의 입출력 C++에서의 입출력은 출력 : std::cout > value 다음과 같은 형태로 가능하다. #include int main(void) { int val1; std::cout > val1; int val2; std::cout > val2; int result = val1 + val2; std::cout 더보기
리버스 엔지니어링(Reverse Engineering) 0과 1로 이루어진 세계(2) 관련 포스팅1. 리버스 엔지니어링(Reverse Engineering)이란? 2. 리버스 엔지니어링(Reverse Engineering) 0과 1로 이루어진 세계(1)3. 리버스 엔지니어링(Reverse Engineering) 0과 1로 이루어진 세계(2) ■ 개요 [리버스 엔지니어링(Reverse Engineering) 0과 1로 이루어진 세계(1)] 에서 0과 1로 이루어진 데이터가 어떻게 표현되어 있는지 알아보았습니다. 그렇다면 컴퓨터 상의 데이터(파일)이 실제로 0과 1로 이루어져 있는지 실습을 통해서 확인해보고 간단한 변조를 해보겠습니다. ■ 실습 오늘의 실습은 빨간색(RED) 그림 파일이 실제로 0과 1로 이루어진 모습을 확인하여 보고 이를 변조하여 파란색(BLUE) 그림 파일로 바꾸어 보겠습.. 더보기
리버스 엔지니어링(Reverse Engineering) 0과 1로 이루어진 세계(1) 관련 포스팅1. 리버스 엔지니어링(Reverse Engineering)이란? 2. 리버스 엔지니어링(Reverse Engineering) 0과 1로 이루어진 세계(1)3. 리버스 엔지니어링(Reverse Engineering) 0과 1로 이루어진 세계(2) ■ 2진수 10진수 16진수 [리버스 엔지니어링(Reverse Engineering)이란?] 에서 컴퓨터가 0과 1로 어떻게 이루어지는지 언급한 바 있습니다. 컴퓨터에서 데이터를 표현함에 있어 0과 1로 이루어지는 이유는 전기의 흐름 또는 흐르지 않음 자기장의 N극 또는 S극(하드디스크) 다음과 같은 물리적 특성을 기반으로 데이터를 표현하기 때문입니다. 그렇다면 우리는 0과 1로 이루어진 정보를 읽을 줄 알아야만 컴퓨터 내부의 약속된 신호체계에 대해 .. 더보기
리버스 엔지니어링(Reverse Engineering) 카테고리 설명 ■ 카테고리 설명 해당 카테고리는 리버스 엔지니어링(Reverse Engineering)이하 리버싱(Reversing)이라고 불리는 기술에 대해 학습하고 이를 정리하기 위한 카테고리입니다. 더나아가 정보가 필요한 사람들에게 보다 양질의 정보를 제공하므로 도움이 됬으면 하는 바램으로 만들어지게되었습니다. ■ 카테고리 방향성 저 또한 리버스 엔지니어링(Reverse Engineering)의 배워나가는 과정이며 많은 것이 부족하다고 생각되지만공부를 하며 겪었던 여러 시행착오로 조금이나마 시행착오를 덜어드리려는 작은 바램으로 해당 포스팅의 방향성을 결정하려 합니다. 리버스 엔지니어링(Reverse Engineering)을 공부하면서 느꼈던 바로는 다소 진입장벽이 높다는 사실입니다. 여러모로 해당 이유에 대하여 .. 더보기