둘둘리둘둘리둘둘리둘둘리둘둘리둘
@ROP? 리턴 지향 프로그래밍(Return Oriented Programming)이란 이름에서 알수있듯이 공격자가 Call Stack의 제어권을 얻었을때, 대상 프로그램 내의 원하는 명령어와 RETN으로 이루어진 가젯(Gadget)들을 순차적으로 호출하여 해당 프로그램이 공격자의 의도대로 흘러가게 하는 공격 방식. 원하는 가젯들을 프로그래밍 하듯이 조합 하여 ROP란 이름이 붙은듯하다. Stack Pivot Call Stack의 제어권을 얻은 지점의 ESP에서 ROP Chain까지 이어주는 다리 스택을 그렸을때 그림의 노란주소의 명령어가 제어권을 얻는 지점 ESP를 제어 가능한 버퍼까지 내려줘서 RETN후 ROP Chain을 호출가능하도록해준다.(여건이 된다면 노란주소 바로아래 ROP Chains를 구..
FS:[18] *TEB TEB +0x30 *PEB(FS:[30]) PEB +0x18 *ProcessHeap +0x90 *ProcessHeaps HEAP +0x58 *Heap Segments HEAP_SEGMENT +0x20 *Heap Block HEAP_BLOCK Pre Allocate MetaData +0x08 User Data //실제 데이터쓰이는곳(가변 크기) Post Allocate MetaData Pre Allocate Metadata2bytesCurrent Block Size (여따 8을 곱한게 실제 사이즈)2bytesPrevious Block Size (마찬가지 곱하기8)1byte SegmentIndex1byte Flags1byte Unused1byte SegmentIndex Heap Fla..
FS:[18] *TEB TEB +0x30 *PEB (FS:[30]) PEB +0x0C *LDR LDR +0x14 *InMemoryOrderModuleList +0x1c*InInitializationOrderModuleList InMemoryOrderModuleList NextEntryLink +0x10 ImageBaseAddress +0x28 *BaseDllName InInitializationOrderModuleList NextEntryLink +0x08ImageBaseAddress +0x20 *BaseDllNameIMAGE_DOS_HEADER +0x3C Offset to IMAGE_NT_HEADERS IMAGE_NT_HEADERS +0x78 Export Table RVA IMAGE_EXPORT_DIR..
LPSTR = long pointer string = char * LPCSTR = long pointer constant string = const char * LPCTSTR = long pointer constant t_string = const tchar * LPWSTR = long pointer wide string = w_char * LPCWSTR = long pointer constant wide string = const w_char *
@IMAGE_THUNK DATAtypedef struct _IMAGE_THUNK_DATA32 { union { DWORD ForwarderString; // PBYTE DWORD Function; // 함수주소 DWORD Ordinal; DWORD AddressOfData; // PIMAGE_IMPORT_BY_NAME } u1;} IMAGE_THUNK_DATA32;typedef IMAGE_THUNK_DATA32 * PIMAGE_THUNK_DATA32;typedef PIMAGE_THUNK_DATA32 PIMAGE_THUNK_DATA; @IMAGE_IMPORT_DESCRIPTORtypedef struct _IMAGE_IMPORT_DESCRIPTOR { union { DWORD Characteristics; ..