일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 계산기
- dangling pointer
- RAO
- return to libraty
- kaslr
- PLT
- sgerrand
- kernel debug
- Android
- WinDBG
- canary leak
- frida-dump
- SCP
- patchelf
- windows kernel
- house of force
- elf 헤더
- brop
- HOS
- ioploaddrivers
- top chunk
- randtbl
- ntwritefile
- pwndbg
- fastbin
- libc-database
- JOP
- libc.so
- windows
- cmake
- Today
- Total
목록전체 글 (24)
sh711 님의 블로그

📌 1. 개념1.1 컴파일컴파일이란 아래와 같이 작성된 고급 언어(C언어)를 실행 가능한 포멧으로 변환하는 과정이다.컴파일에는 동적 컴파일과 정적 컴파일 방식이 있다.// main.c#include #include int main() { printf("stdout : %p\n", stdout); char buffer[0x40]; read(0, buffer, 0x80); return 0;} 1.1.1 동적 컴파일일반적으로 동적 컴파일을 통해 printf, scanf 와 같은 외부 함수는 라이브러리 (리눅스의 경우 libc.so)를 참조하여 사용된다.함수 원형 코드를 프로그램 자체에 포함하지 않기 때문에 파일의 크기가 크지 않은 장점이 있지만 프로그램을 실..

1. iOS 앱Apple의 iOS 앱은 앱스토어에 등록될 때 FairPlay DRM(Digital Rights Management) 를 사용하여 앱의 바이너리 코드를 암호화하여 등록된다. 암호화되는 영역은 다음과 같다.1. 바이너리 코드 (Mach-O 실행 파일)이 암호화는 앱이 App Store에서 다운로드될 때 적용되고, 실행 시 iOS 커널이 복호화하여 메모리에 로드보호 대상: 앱의 코드 섹션(.text), 데이터 섹션(.data) 일부2. 네트워크 트래픽 (App Transport Security, ATS)iOS 앱은 기본적으로 HTTPS를 강제하는 ATS(App Transport Security)를 사용즉, 네트워크 요청 데이터(HTTP 요청/응답)가 암호화보호 대상: 앱 내에서 이루어지는 네..
Dalvik과 ART는 안드로이드의 런타임 환경을 의미한다.원래는 앱 개발 시 Java를 활용하여 개발하였고 JVM 환경이 아닌 Dalvik VM이라는 환경을 사용하였지만 현재는 ART에서 실행된다.DalvikDalvik VM은 안드로이드 Api 2.1 ~ 5.1 까지 사용된 런타임 환경이다.JIT(Just In Time) 컴파일러를 사용하였으며 이 방식은 실행되는 시점에서 당장 필요한 부분만 컴파일 하여 앱 자체가 느려지는 단점이 있다. ARTART는 안드로이드 Api 4.4 ~ 현재까지 사용되는 런타임 환경이다.AOT(Ahead of Time) 컴파일러를 사용하며 이 방식은 설치되는 시점에 코드를 컴파일 하고 미리 캐시하여 실행하는 방식으로 JIT에 비해 실행 속도가 빠르다.dex2oat 도구를 사용..

📌 1. 개념1.1. Stack Buffer OverflowStack Buffer Overflow란, 입력 값의 길이를 검증하지 않고 메모리 영역에 입력을 받거나, 복사 등의 작업을 수행 시 버퍼가 초과될 경우 발생한다.이로 인해 프로그램 실행에 영향이 끼치고 예상치 못한 일이 발생하는 버그 현상이다.아래 코드에서 입력 값 길이 검증 없이 데이터를 복사하는 strcpy 함수로 인해 스택 버퍼 오버플로우가 발생 가능하다.// gcc -o stack_bof stack_bof.c -fno-stack-protector#include #include void vuln(char *input) { char buffer[64]; strcpy(buffer, input);}int main(int argc, c..