본문 바로가기

반응형

분류 전체보기

(170)
Linux/네트워크 어댑터 명 변경 다루어야할 설정파일- /etc/udev/rules.d/70-persistent-net.rules-/etc/sysconfig/network-scripts/ifcfg-ethXXX 기본적인 eth0 어댑터의 이름을 변경하려면,/etc/udev/rules.d/70-persistent-net.rules 의 설정을 변경하여야한다./lib/udev/write_net_rules에 의해서 자동으로 생성되는 설정파일이며, MAC주소나 어댑터의 name을 변경할 수 있다. 설정 파일 부분 12# PCI device 0x8086:0x100e (e1000)SUBSYSTEM="net", ACTION="add", DRIVERS="?*", ATTR{address}=="08:00:27:3e:f6:76", ATTR{type}=="1",..
Windows/DEP보호기법/DEP기법 우회 DEP 기법DEP(Data Execution Prevention)란, 실행 권한이 없는 메모리 영역의 코드가 실행되지 못하도록 방지하는 기법스택 영역, 힙 영역의 실행 코드 방지 DEP의 우회- 초기 기법 : RTL 기법- 현재 기법 : ROP 기법RTL Chaining 기법-> DEP와 ASLR은 Exploit 방지의 핵심 DEP 종류- H/W 기반, S/W 기반최근 CPU에서는 대부분 H/W기반 지원옵션에 따라 여러 가지 방식으로 동작 DEP 옵션옵션설명Optin지정된 바이너리만 보호OptOut지정된 바이너리를 제외하고 모두 보호AlwaysOn모든 프로세스를 항상 보호AlwaysOff모든 프로세스를 보호하지 않음기본 동작 방식 windows 7 : OptIn 추가적으로 Permanent DEP 옵션 ..
Windows/SEH보호기법/SafeSEH SEH overwrite Exploit- SEH Handler를 덮어씌워서 공격하는 방법 SafeSEH 검증 과정Handler의 주소값 검증등록된 핸들러인지 확인실행 여부 결정 SafeSEH 검증 과정 (세부)Handler의 주소가 스택인지 확인주소가 스택의 범위에 포함되어 있다면 호출 SafeSEH 검증 과정 (세부2)가리키는 주소가 현재 로드된 모듈의 주소그 모듈이 SafeSEH로 컴파일된 모듈이면 적절한 절차로 등록됬는지 검증 * 이때 PE헤더의 Load Configuration Directiory가 이용 SafeSEH 특징SEH는 옵션을 주었을 때만 동작특정조건에 맞는지만 검증 SafeSEH 우회SafeSEH 활성화는 컴파일러에 /SAFESEH옵션을 준 뒤 컴파일-> 단 하나의 모듈이라도 컴파일 ..
C/고수준 파일 입출력/임시 파일 생성 임시파일 생성- 임시파일명이 중복되지 않도록 임시파일명 생성- 임시파일명 생성 : tmpnam(3)임시파일명을 시스템이 알아서 생성- 접두어 지정 : tempnam(3)임시 파일명에 사용할 디렉토리와 접두어 지정, 접두어는 5글자까지만 지원tempnam 사용- 템플릿을 지정한 임시 파일명 생성 : mktemp(3)임시파일의 템플릿을 받아 임시 파일명 생성템플릿은 대문자 'X' 6개로 마치도록 해야한다. tmpnam 과 tempnam 실행 예시 임시 파일명 만들기 예시12345678910111213141516171819202122232425#include #include #include int main(void) { char *fname; char fntmp[BUFSIZ]; char template[32]..
C/고수준 파일 입출력/파일 포인터와 파일 기술자간 변환 파일기술자와 파일포인터간 변환저수준 파일 입출력의 파일기술자와 고수준 파일 입출력의 파일포인터는 상호 변환 가능 - 파일 포인터 생성 : fdopen(3) (파일 디스크립터 오픈의 약자)파일 기술자와 모드값을 받아 파일 포인터를 생성- 파일 기술자 생성: fileno(3)파일 포인터를 인자로 받아 파일 기술자를 리턴고수준에서 저수준으로 변환 fdopen 함수 사용하기123456789101112131415161718192021222324#include #include #include int main(void) { FILE *fp; int fd; char str[BUFSIZ]; fd = open("unix.txt", O_RDONLY); if (fd == -1) { perror("open"); exit(1);..
C/고수준 파일 입출력/파일 오프셋 지정 및 이동, 저장 파일 오프셋 지정- 파일 오프셋 이동 : fseek(3)stream이 가리키는 파일에서 offset에 지정한 크기만큼 오프셋을 이동whence는 lseek과 같은 값을 사용fseek은 성공하면 0을 실패하면 EOF를 리턴- 현재 오프셋 구하기 : ftell(3)현재 오프셋을 리턴. 오프셋은 파일의 시작에서 현재 위치까지의 바이트 수- 처음 위치로 오프셋 이동 ; rewind(3)오프셋을 파일의 시작 위치로 즉시 이동- 오프셋의 저장과 이동 : fsetpos(3), fgetpos(3)fgetpos: 파일의 현재 오프셋을 pos가 가리키는 영역에 저장fsetpos : pos가 가리키는 위치로 파일 오프셋을 이동 fseek 함수 사용1234567891011121314151617181920212223242526..
C/고수준 파일 입출력/형식 기반 입출력 함수 형식 기반 입출력 - 형식 기반 입력 함수 : scanf(3) -> 저수준, fscanf(3) -> 고수준fscanf도 scanf가 사용하는 형식 지정 방법을 그대로 사용성공하면 읽어온 항목의 개수 리턴 - 형식 기반 출력 함수 : printf(3) -> 저수준 , fprintf(3) -> 고수준fprintf는 지정한 파일로 형식 지정 방법을 사용하여 출력형식 기반 입출력 예시1234567891011121314151617181920#include #include int main(void) { FILE *rfp; int id, s1, s2, s3, s4, n; if ((rfp = fopen("unix.dat", "r")) == NULL) { perror("fopen: unix.dat"); exit(1); ..
C/고수준 파일 입출력/버퍼 기반 입출력 함수 버퍼 기반 입출력 - 버퍼 기반 입출력 함수 : fread(3)항목의 크기가 size인 데이터를 nitems에 지정한 갯수만큼 읽어 ptr에 저장성공하면 읽어온 항목 수를 리턴읽을 항목이 없으면 0을 리턴- 버퍼 기반 출력함수 : fwrite(3)항목의 크기가 size인 데이터를 items에서 지정한 개수만큼 ptr에서 읽어서 stream으로 지정한 파일에 출력성공하면 출력한 항목의 수를 리턴오류가 발생하면 EOF를 리턴 버퍼 기반 입출력 예시12345678910111213141516171819202122#include #include int main(void) { FILE *rfp; char buf[BUFSIZ]; int n; if ((rfp = fopen("unix.txt", "r")) == NULL..

반응형