728x90

2025/05 14

[Windows] Stack Buffer Overflow

1) Stack Buffer Overflow메모리 경계를 검사하지 않는 함수 사용으로 인해 스택을 덮어쓰게 되어 주로 발생한다. 아주 고전적인 취약점이지만 아직도 많이 발생하고 있으며 실제로 퍼징을 하다 보면 여전히 많이 발견된느 취약점이다.함수는 각각의 스택 프레임을 가지고, 함수 호출 시 저장된 SFP(Saved Frame Pointer), RET(Return address)를 이용하여 호출 이전의 코드로 돌아간다. 실습 소스코드#include #include #include int main(int argc, char* argv[]){ char readbuf[2000] = { 0, }; char printbuf[500] = { 0, }; printf(" # text reader #\n"); if (a..

System Hacking 2025.05.26

프로그램 카운터

마이크로프로세서 내부에 있는 레지스터 중의 하나로서, 다음에 실행될 명령어의 주소를 가지고 있어서 실행할 기계어 코드의 위치를 지정한다. 때문에 명령어 포인터라고도 한다. 인텔의 x86계열의 CPU에서는 IP라고 한다.https://ko.wikipedia.org/wiki/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8_%EC%B9%B4%EC%9A%B4%ED%84%B0 CPU는 메모리(RAM)에 저장된 명령어들을 순서대로 실행한다.PC는 다음에 실행할 명령어의 메모리 주소를 가리킨다.CPU가 명령어를 하나 실행하면, PC는 자동으로 다음 명령어 주소로 업데이트된다.만약 jmp, call, ret 과 같은 분기 명령어가 나오면, PC는 새로운 주소로 점프하여 흐름 제어(Control Flo..

컴퓨터 구조 2025.05.21

Windbg

Microsoft 사에서 제공하는 디버거이다. 윈도우 프로그램 디버깅 시 유용하고 커널 디버깅을 지원한다 .명령어 줄 기반의 디버거라 다른 디버거에 비해 불편하다는 단점이 있지만, 익숙해지면 오히려 더 빠르고 편리하다GO : break point 위치까지 프로그램을 실행Step Out : 현재 함수를 끝까지 실행 후 리턴Step Into : instruction 한개 실행, 만약 함수를 호출하면 함수 내부로 진입Step Over : instruction 한개 실행, 만약 함수를 호출하면 해당 함수를 끝까지 실행후 리턴 r : 레지스터 정보 표시u : 언어셈블dc : 메모리를 double word 배열로 보여주고 ASCII로 해석한다.ba : windbg의 breakpoint는 특정 메모리에 접근할 때 걸..

System Hacking 2025.05.17

뮤테이션

입력(input)을 약간씩 변형해서 새로운 입력을 만들어내는 작업hellohello 라고 입력을 했다고 해봅시다afl은 여기에 다음과 같은 작은 변경을 가할 수 있다.어떤 문자를 바꾸기 -> hello -> hezlo문자를 추가하기 -> hello -> helloo문자를 삭제하기 -> hello -> helo비트를 뒤집기 -> hello -> hfllo기존의 입력을 조금씩 변화시켜(mutate) 프로그램에 집어 넣고, 실행 경로(coverage)가 달라지는지 확인하는 방식이걸 반복해서 더 넓은 커버리지를 찾는 것이다.즉 mutation기존 입력을 기반으로 하여 새로운 테스트 케이스를 자동 생성하는 기법이다.

Fuzzing 2025.05.15

__cdecl

_cdecl인자값 전달은 오른쪽부터스택 정리는 caller (호출하는 함수가 스택에서 정리)C언어에서 기본 호출 규약은 _cdecl이다.최적화 옵션이 켜져 있어서 그런지, ida의 때문인지 실제 흐름과 다를 수 있지만 개념만 이해한다는 생각으로 하였다.push 로 인자값을 역순으로 넣는다는 것을 알 수 있다. add esp, 14h5 * 4 = 20 byte 총 5개의 인자가 들어간 것이다.printf("a = %d, b = %d\n", a, b);여기에서 총 3개의 인자가 들어가고, 두 번째 printf 에서 2개의 인자가 들어간다. 그리고 push 하며 늘어났던 20바이트의 스택을 함수 호출 이전의 상태로 만들어 주었다

컴퓨터 구조 2025.05.12

DVWA 환경 설정

DVWAhttps://en.wikipedia.org/wiki/Damn_Vulnerable_Web_ApplicationDamn Vulnerable Web Application은 보안 취약점을 의도적으로 포함 하고 교육 목적으로 의도된 소프트웨어 프로젝트이다. 환경설정sudo apt install apache2 php php-mysqli php-gd mariadb-server git unzipcd /var/www/htmlsudo git clone https://github.com/digininja/DVWA.gitwww-data:www-data는 apache 웹 서버 또는 nginx 웹 서버가 사용하는 기본 사용자와 그룹을 의미합니다. 이를 통해서 웹 서버가 파일 및 디렉토리에 접근하고 작업을 수행할 수 있습..

Web Hacking 2025.05.12

DLL (Dynamic Link Library)

https://zoosso.tistory.com/941 DLL (Dynamic Link Library) 파일이란?DLL 파일이란? DLL은 "Dynamic Link Library" 의 준말로 "동적 링크 라이브러리" 해당 파일을 이해하기 위해서는 "라이브러리 (Library)" 개념 먼저 이해하고, 정적 라이브러리 (Static Link Library) 방식과 비교zoosso.tistory.com DLLDynamic Link Library 동적 링크 라이브러리정적 라이브러리 (Static Link Library) 방식과 비교하면 이해하기 쉽다. 라이브러리(Library)code에서 반복되는 기능이 많은데, 그런 기능들을 매번 다시 작성할 수 가 없다. 그러한 로직을 따로 모아둔파일이라고 볼 수 있습니다...

System Hacking 2025.05.11

WinAFL Fuzzing

WinAFLAFL(American Fuzzy Lop)은 coverage-guided 퍼징 툴이다. Windows에서 사용할 수 있도록 변경을 한 것이 WinAFL 입니다. 준비물Visual Studio 2022DynamoRIO githubhttps://github.com/DynamoRIO/dynamorio/releases Releases · DynamoRIO/dynamorioDynamic Instrumentation Tool Platform. Contribute to DynamoRIO/dynamorio development by creating an account on GitHub.github.com DynamoRIO는 프로그램이 실행되는 동안 프로그램의 모든 부분에서 실시간으로 가로채서 분석, 수정할..

Fuzzing 2025.05.10
728x90