pwntool로 문제를 풀다보면 동적 디버깅이 필요할 때가 있습니다. 이 때 사용하는 방법입니다. def lanuch_gdb(): context.terminal = ['gnome-terminal', '-x', 'sh', '-c'] gdb.attach(proc.pidof(p)[0], execute='b *0x00401238\nc') 그리고 이 파이썬을 실행할 때는 sudo를 이용해서 root 권한으로 해야합니다. p=process('test')gdb.attach(proc.pidof(p)[0], execute='b *0x4005d6\nc\n') 동시에 bp를 사용하려면 다음과 두 번째 예제와 같은 방식을 취하면 됩니다.
파이썬에서 C함수를 사용하기 위해 사용하는 모듈입니다. from ctypes import *libc=cdll.Loadlibrary('libc.so.6')libc=CDLL('libc.so.6') 를 통해서 모듈을 import 하면서 시작합니다. ctypes을 썼던 환경이 ubuntu 16.04 64bit 였는데 이상하게 cdll.Loadlibrary() 은 no such library로 실행이 안되지만 CDLL은 정상적으로 실행이 되더군요 (혹시 이유를 아시는 분은 댓글 부탁드립니다! .ㅠ) 이 후 간단한 rand를 통한 예제를 만들어드리면 from ctypes import *libc=CDLL('libc.so.6')libc.srand(0x3434)libc.rand() 이렇나 형식으로 사용하면 되겠습니다.
escape() (encode) w3school의 예제를 보면 var str = "Need tips? Visit W3Schools!"; var str_esc = escape(str); document.write(str_esc + " ") 의 결과 값은 Need%20tips%3F%20Visit%20W3Schools%21 입니다. 반대로 unescape() (decode) document.write(unescape(str_esc)) 의 결과 값은 Need tips? Visit W3Schools! 로 다시 복구시켜주는 역할을 합니다.
importfrom pwn import * 접속원격 접속 ncprocess=remote ("pwnable.kr",9000) 원격 접속 sshshell=ssh("note","pwnable.kr",port=2222,password="guest") p=shell.run('/bin/sh')p.sendline("nc 0 9019") 로컬 접속 process=process('process name') 다운로드shell.download_file('/home/alloca/alloca')권한 문제 발생할 수 있으니 sudo 로 실행할 것. 문자열 send recv 문자열 send process.sendline(input) process.send(input)문자열 recvprocess.recvuntil(' ')현재 줄의 ..
인텔 문법을 기준으로 설명하겠습니다. CMP EAX, ESI CMP compare를 줄인 것으로 예상되고 말그대로 두 개의 인자 값을 비교한다는 의미입니다. 그 중에서도 위의 경우 eax를 esi 와 비교한다는 의미입니다. 이런 식으로 비교를 한 후에는 이 것의 결과에 따라서 점프를 합니다. 점프문은 다양한 종류가 있고 상황에 따라서 사용합니다. 달라지는 레지스터는 크게 두 가지 입니다. ZF 는 두 값이 같을 때 활성화 됩니다.CF 는 오른쪽이 클 때 1로 활성화됩니다.
1.6 디버깅 툴 드라이버의 경우에도 디버깅이 가능하다. 단 커널 레벨에서 동작하기 때문에 간단하지 않다. 드라이버 디버깅에 사용하는 두 가지 툴이 DebugView 와 WinDBG 이다. 1.6.1 DEBUGVIEW 실시간으로 디버깅할 수 있는 것이 아니라 디버그 출력 관련 API를 출력한다. 주로 런타임 디버깅이 불가능한 경우 사용한다. 블루스크린이 발생할 때 함께 전달되는 버그 체크 코드와 문제 발생 시점을 보고 의심되는 코드 위치에 특정 변수의 값을 디버그 메시지로 출력하거나 특정 루틴이 호출되었는지 확인하는 용도로 사용한다.Capture Kernel 옵션을 체크해야지 커널에서 발생한 로그를 볼 수 있다. 드라이버가 출력하려고 하는 디버그 로그를 보는 방법은 DebugView 프로그램을 이용하거나..
드라이버 INF 구조 드라이버를 작성하면 같이 작성해야하는 것이 바로 INF 파일이다. 사용자의 컴퓨터에 장치가 연결되면 운영체제는 INF를 보고 어떤 드라이버를 연결할지 판단한다. INF는 섹션으로 구분해서 드라이버 정보를 기술한다. 섹션은 [ ] 로 감싸서 구분한다. [ Version ] 섹션 어떤 포멧의 내용을 서술하게 되는지 설명한다. Signature $WINDOWS NT : NT 계열의 운영체제만 지원한다. 즉 요즘 운영체제를 지원한다는 의미이다. $WINDOWS 95 : 9X와 ME 계열 지원 $Chicago : 모든 계열의 운영체제를 지원한다. Class=class-name 드라이버가 어떤 클래스를 지원하는 드라이버인지 나타낸다. 여기서 클래스는 장치 유형을 말한다. USB, 마우스 키보드..
2 개발툴 설치 1.2.1 WDK DDK : XP WDK 6000 : XP, 비스타 WDK 7600 : XP, 비스타, 윈도우7WDK 8.0 : 비스타, 윈도우7 윈도우8 윈도우 8.1WDK 8.1 : 비스타, 윈도우7 윈도우8, 윈도우 8.1 1.2.2 WDM, KMDF 그리고 UMDF 윈도우에서 사용되는 디바이스 드라이버들은 유형에 따라서 코딩 방식이 서로 다르다. 보편적으로 많은 드라이버들이 사용하는 것이 WDM 그리고 WDF에 대해서 간단히 소개할 예정이다. WDM과 WDF는 사실상 같은 드라이버로 봐도 무방하다. WDM 형식은 C WDF 는 C++, MFC 정도로 비유하면 딱 맞다. 그래서 WDM 형식으로 개발해본 경험자들은 WDF형식의 드라이버를 개발한 개발자보다 OS 지식이 훨씬 풍부하다고도..
- Total
- Today
- Yesterday
- rootkit
- gdb 명령어
- breakpoint
- DriverEntry
- gdb명령어
- 변환
- BP
- 디바이스
- VMware
- module
- PNP 드라이버
- gdb intel 변환
- vmware 오류
- GDB
- 레거시 드라이버
- gdb intel
- 드라이버
- 모듈
- LKM
- 리눅스 모듈
- IRP
- vmware cannot connect to the virtual machine
- Intel
- 백도어
- 루트킷
- backdoor
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |