일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- ubuntu
- attack vector
- NT Header
- zsh theme customization
- powerlevel10k
- stack based buffer overflow
- sctf 2021
- BOF
- GetProcAddress()
- IMAGE_EXPORT_DIRECTORY
- DOS Stub
- SQL Injection
- web
- docker
- 리버싱 핵심원리
- IMAGE_IMPORT_DESCRIPTOR
- Windows 11
- NT File Header
- DOS Header
- PE Header
- oh-my-zsh
- samsung ctf
- Windows Terminal
- Tutorial
- RVA
- NT Optional Header
- PE file format
- Windows
- Buffer Overflow
- WSL
- Today
- Total
목록Security (11)
나만의 메모노트

이번 문제는 ShellCode를 획득하는 문제다. 1. Check Stack Frame #include #include char name[16]; void bofme() { char payload[16]; puts("What's your name?"); printf("Name > "); fflush(stdout); scanf("%16s", name); printf("Hello, %s.\n", name); puts("Do you wanna build a snowman?"); printf(" > "); fflush(stdout); scanf("%s", payload); printf("!!!%s!!!\n", payload); puts("Good."); } int main() { system("echo 'Wel..

BOF(Buffer Overflow) 프로그램이 데이터를 Buffer에 쓰는 동안 Buffer의 경계값을 초과하고 인접한 메모리 위치를 덮어 쓰는 이상 현상 Stack based Buffer Overflow (high → low) Heap based Buffer Overflow (low → high) 지역 변수(local variable)값 변조 가능 Return Address 변조 가능 Shell Code 삽입 및 실행 가능 #include //#include //#include #include #include void printflag(){ char buf[32]; FILE* fp = fopen("/flag", "r"); fread(buf, 1, 32, fp); fclose(fp); printf("%..

Practicd: hidden 테이블을 찾고 column 이름들을 획득해라. 문제를 풀기에 앞서서 우선 검색바 상단 우측에 있는 [HINT]를 눌러 해당 페이지의 전반적인 소스 코드를 살펴보았다. 그 결과, 문제에서 요구하는 것과 매우 밀접한 관련이 있어 보이는 코드가 보였고, 그 코드를 살펴보니, books 테이블로부터 도서 정보를 검색하는 코드인 것을 알 수 있었다. 최종적으로 column 이름을 획득해보라는 것은 column에 flag가 숨겨져 있을 가능성이 높아 보이고, 해당 column을 찾기 위해 hidden 테이블을 찾아야 하며, 이 테이블은 books 테이블에 있을 것이라 추측된다. 하지만, 현재 books 테이블에 대한 정확한 정보가 없으므로 union 연산자를 이용하여 열의 개수를 파악..

SQL Injection이란? SQL (Structured Query Language) 삽입 공격은 데이터 기반 어플리케이션을 공격하는 데 사용되는 코드 주입 기술로 악성 SQL문이 입력 필드에 삽입되어 실행된다. (예: 데이터베이스 콘텐츠를 공격자에게 덤프) 사용자 입력이 포함된 SQL 구문의 특수 문자들이 제대로 필터링 되지 않았거나 사용자 입력이 제대로 구성되지 않고 의도된 것과 다르게 실행되는 경우 등의 보안 취약점이존재할 때 이를 이용한 SQL 삽입 공격이 발생한다. 'admin'으로 로그인 시도 일반적으로 SQL Injection을 이용하여 관리자 로그인을 하는 방법은 다음과 같다. http://sqli101.sstf.site/step1.php?id%3Dadmin%27%20or%20%271%2..

DLL Injection 실행 중인 다른 프로세스에 특정 DLL 파일을 강제로 삽입하는 기술 다른 프로세스에서 LoadLibrary() API를 통해 특정 DLL Loading 강제 삽입된 DLL의 DLLMain() 함수 호출 삽입된 DLL은 해당 프로세스의 메모리에 대한 접근권한을 가짐 기능 개선, 버그 패치, 메시지 후킹, API 후킹 등 사용자가 원하는 다양한 일을 수행 현재 악성코드에 의해 악용되고 있음 DLL Injection 구현방법 원격 스레드 실행 - CreateRemoteThread() API 레지스트리 이용 - AppInit_DLLs 메시지 후킹 - SetWindowsHookEx() API 그 외 여러 가지 다양한 기법 존재 CreateRemoteThread() API를 이용한 DLL ..

EAT (Export Address Table) Windows OS에서 라이브러리(Library)란? 다른 프로그램에서 불러 쓸 수 있도록 관련 함수들을 모아 놓은 파일 (DLL/SYS) 대표적인 라이브러리 : Win32 API 핵심 라이브러리 파일 : kernel32.dll 개념 : 라이브러리 파일에서 제공하는 함수를 다른 프로그램에서 가져다 사용할 수 있도록 해주는 핵심 메커니즘 해당 라이브러리에서 Export하는 함수의 시작 주소를 정확히 구할 수 있음 Export 정보는 PE 파일 내 특정 구조체(IMAGE_EXPORT_DIRECTORY)에 저장 IMAGE_EXPORT_DIRECTORY 구조체는 PE File에 하나만 존재하며, PE Header에서 확인 가능 실제 IMAGE_EXPORT_DIRE..

IAT (Important Address Table) 개념 : 프로그램이 어떤 라이브러리에서 어떤 함수를 사용하고 있는지를 기술한 테이블 Windows OS의 핵심 개념인 Process, Memory, DLL 구조 등에 대한 내용이 함축되어 있음 DLL 로딩 방식 중 Implicit Linking에 대한 메커니즘을 제공하는 역할 디버거를 통해 IAT 확인 해보기 대상 프로그램 : notepad.exe CALL [1001104] → notepad.exe에서 kernel32.dll의 CreateFileW를 호출하는 명령어 CALL 명령어를 통해 호출하는 주소는 IAT 메모리 영역 (.text 섹션의 메모리 영역) 1001104 주소에 저장된 7C810CD9라는 값을 통해 CreateFileW를 호출 (직접 ..

NT Header IMAGE_NT_HEADERS NT Header의 구조체 3개 멤버로 구성 PE Signature : 50450000h(“PE”00) 값을 가짐 File Header 구조체 Optional Header 구조체 크기 : F8 (248byte) File Header IMAGE_FILE_HEADER 구조체 파일의 개략적인 속성을 나타냄 주요 멤버 각 멤버별 값들의 설정이 부정확할 경우 비정상 실행 1) Machine Machine 넘버는 CPU별로 고유한 값을 가짐 (32bit Intel x86 호환칩 = 14C의 값) winnt.h 파일에 정의된 Machine 넘버의 값 2) NumberOfSections 섹션의 개수 해당 값은 반드시 0보다 커야 함 정의된 섹션 개수와 실제 섹션이 다르면..

notepad.exe를 대상으로 Hex editor를 통해 바이너리 코드를 살펴보며 PE File Format 이해하기 Dos Header 초기 PE File Format Microsoft가 널리 사용되던 DOS 파일에 대한 하위 호환성을 고려하여 제작 PE Header의 첫 부분은 DOS EXE Header, 이후 IMAGE_DOS_HEADER 구조체로 확장 IMAGE_DOS_HEADER 구조체 크기 : 40h (64byte) 주요 멤버 e_magic : DOS signature (4D5A 👉 ASCll값으로 "MZ"를 의미함) e_lfanew : NT Header의 offset을 표시 NT Header 구조체의 위치를 가리킴 파일에 따라 가변적인 값을 가짐 Dos Stub Dos Header 아래에 ..

개요 PE (Portable Excutable) Windows OS에서 사용되는 실행 파일 형식 UNIX에서 사용되는 COFF(Common Object File Format) 기반 Windows OS에서만 사용 다른 OS로 이식성이 용이함 PE File PE32 : 32bit 형태의 실행 파일 PE+/PE32+ : 64bit 형태의 실행 파일 PE File Type OBJ를 제외한 모든 파일이 실행 가능한 파일 DLL, SYS 파일 등은 셸(Explorer.exe)에서 직접 실행할 수 없으며, 다른 형태의 방법(debugger, service, etc)을 이용하여 실행 가능 PE Header 실행 파일이 실행되기 위해 필요한 모든 정보가 구조체 형식으로 저장되어 있음 메모리 적재 위치, 실행 위치, 실행..