목록Security Lab (4)
Iriton's log
계산기를 띄우는 쉘 코드 제작 과정 필요한 것 windows OS stdafx.h와 windows.h 헤더 파일 (해당 포스트 맨 아래에 첨부) stdafx.cpp 파일 (해당 포스트 맨 아래에 첨부) 디버거 Visual Studio 순서 1. C++로 calc.exe 실행 코드 작성 2. 어셈블리어 3. Hex 값 4. Null Byte 제거 1단계, C++로 calc.exe 실행 코드 작성 #include "stdafx.h" #include "windows.h" int main(int argc, char* argv[]) { char cmd[5] = { 'c','a','l','c','\x0' }; WinExec(cmd, SW_SHOW); ExitProcess(1); } cmd 변수에 실행하고 싶은 ex..
스택 오버플로우를 이용한 리턴 주소 변조(또는 덮어쓰기) 실습을 진행하려고 한다. * 해당 실습은 window, Immunity Debugger, Python, CodeBlocks를 이용하였다. 취약한 타겟 코드 해당 코드에서 Integer Overflow 취약점을 찾을 수 있다. len len은 문자열 길이를 저장하는 변수이다. char 타입으로, 7 bit(1 bit는 부호)만큼 사용한다. 따라서 최대 값은 128이다. (2의 7제곱수) 128이 넘으면 음수로 인식을 하기 때문에 조건문 else가 아닌 if문이 수행된다. 스택 구조 파악 및 시나리오 주요 스택 구조는 위와 같다. 정상적인 작동에서는 buffer 범위 내에서만 값이 저장되어야 하는데, 비정상적인 작동 즉, Overflow를 이용하면 b..
stack.c (타겟) /* This program has a buffer overflow vulnerability. */ #include #include #include int foo(char *str) { char buffer[100]; /* The following statement has a buffer overflow problem */ strcpy(buffer, str); return 1; } int main(int argc, char **argv) { char str[400]; FILE *badfile; badfile = fopen("badfile", "r"); fread(str, sizeof(char), 300, badfile); foo(str); printf("Returned Proper..
목표 지뢰게임 리버싱을 통해 어느 칸을 누르든 첫 클릭에 바로, 무조건 승리할 수 있게 할 것이다. dll Injection은 아니고 단순히 디버거로 메모리 주소 조작만 할 것이다. 나중에 dll도 만들어 볼 계획이다. 추론 지뢰 게임은 어떠한 칸을 클릭하면 그 칸이 지뢰냐, 아니냐에 따라 띄우는 결과가 다 다르다. 지뢰 게임에서 승리하게 되면 이름을 입력하라는 팝업이 뜬다. 해당 팝업을 띄우는 함수를 호출하는 주소를 찾아내어, 승리 시 처리되는 함수 주소를 유추하여 알아낸다. 알아낸 주소를 기억한다. 어떤 칸을 클릭할 때의 이벤트로, 기억해둔 승리 함수 주소로 이동하게 한다면 어떠한 칸을 선택해도 승리 함수로 이동하여 승리한 것으로 처리될 것이다. 메모리 조작 방식을 이용 추론 방법에서 좀 더 구체적으..