본문 바로가기

해킹

[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 버.. 더보기
[Windows System Hacking] Direct EIP Overwrite [*] 해당 문서는 서적 [윈도우 시스템 해킹 가이드 - 버그헌팅과 익스플로잇]을 참고하여 작성하였습니다. Windows System Hacking 연구를 위해서 학습을 진행하며 여러가지 공격기법에 대하여 정리하려고 한다. 해당 문서는 Stack 기반의 Buffer Over Flow를 이용한 Return Address 변조에 관한 문서이다. [실습 바이너리 & 익스플로잇 코드] [ 실습 환경 ] 테스트 환경 : Windows 10 Pro 64bit 테스트 대상 : BufferOverFlow.exe[Non ASLR, Non DEP, Non StackGuard, Non safeSEH] 테스트 도구 : OllyDBG 110, 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 .. 더보기
Windows10 BOF 연습 지금까지는 단 한번도 Windows7이상의 환경에서 취약점 분석을 진행해본 적이 없었다. 오랜만에 툴 사용법도 상기시키고 Windows10에서의 pwnable은 어떠한 차이가 있는 지 몸소 느끼기 위해서 취약한 실행파일을 직접 만들어 공격을 진행해보려고 한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #include ; #include ; int main() { char buf[128]; FILE * fp; // getchar(); fp = fopen("data.txt", "r"); fscanf(fp, "%s", buf); printf("Message : %s\n", buf); fclose(fp); return 0; } Colored by Co.. 더보기
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.. 더보기
asm (6points) 해당 문제를 확인해본 결과 쉘코드를 만드는 문제로 예상된다. 해당 문제에 접속해보자. 해당 디렉토리를 확인해본 결과 문제 바이너리와 소스코드, readme, 플래그 파일이 주어져있다. readme 파일을 확인해본 결과 once you connect to port 9026, the "asm" binary will be executed under asm_pwn privilege. make connection to challenge (nc 0 9026) then get the flag. (file name of the flag is same as the one in this directory) 다음과 같은 설명이 주어져있다. 실제 문제를 풀기 위해서는 포트 9026으로 접속하면 될 것으로 확인된다. 주어진 바.. 더보기
[HITCON TRAINING] LAB5 [HITCON TRAINING] LAB5 → WRITE UP 먼저 해당 바이너리의 보호기법을 확인해본다. 해당 바이너리는 인텔 기반의 32비트 바이너리로 확인되며 보호기법(mitgation)으로는 Partion RELRO 및 NX bit가 적용되어 있는 것으로 확인된다. 바이너리의 소스코드는 #include int main(){ char buf[20]; puts("ROP is easy is'nt it ?"); printf("Your input :"); fflush(stdout); read(0,buf,100); } 다음과 같이 간단한 바이너리이며 buf 배열의 크기가 20바이트로 선언되었지만 read함수를 통해 100바이트 길이의 데이터를 입력받으므로 Buffer Over Flow가 발생하는 취약점이 존재.. 더보기
리버스 엔지니어링(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) 그림 파일로 바꾸어 보겠습.. 더보기