목록Linux (13)
둘둘리둘둘리둘둘리둘둘리둘둘리둘
@파일 접근 권한(mode_t) The following symbolic constants are provided for mode: S_IRWXU 00700 user (file owner) has read, write and execute permission S_IRUSR 00400 user has read permission S_IWUSR 00200 user has write permission S_IXUSR 00100 user has execute permission S_IRWXG 00070 group has read, write and execute permission S_IRGRP 00040 group has read permission S_IWGRP 00020 group has write per..
@ pipe pipe(3) #include int pipe(int pipefd[2]); #include #include #include int main(){ int pid; int fd[2]={0,}; char buffer[255]={0,}; if( pipe(fd) ) { perror("pipe"); return 0; } pid = fork(); if( !pid ){ memcpy( buffer, "hi mom\x0a\x00", 8); write( fd[1], buffer, strlen(buffer)); return 0; }else{ read(fd[0], buffer,255); printf(buffer); return 0; } return 0;} - 리턴값 : 성공은 0 에러는 -1, 실패시 errno 설..
@ 쓰레드 생성 pthread_create(3)#include int pthread_create(pthread_t *thread, //생성된 쓰레드의 buffer 포인터const pthread_attr_t *attr, //NULL이 아닐경우 쓰레드 속성 void *(*start_routine) (void *), //쓰레드로 생성할 함수 포인터void *arg); //생성할 쓰레드의 인자 Compile and link with -pthread //컴파일 시 -pthread 옵션 사용(gcc ./src.c -pthread) - 리턴값 : 성공 시 0, 실패 시 error number @ 쓰레드 정리 pthread_join(3)#include int pthread_join(pthread_t thread, //..
@ 종류 @ Signal 특징 - SIGKILL, SIGSTOP은 어플리케이션에서 catch 불가능하다. (시스템 관리차원) - 자식프로세스 생성시 signal정책도 상속된다 - 어플리케이션이 Signal을 처리중에 들어온 다른 Signal은 버려진다 @ Signal 전송 kill(2) #include #include int kill(pid_t pid, int sig); - pid > 0 : 해당 pid에 전송 - pid == 0 : 자신이 속한 모든 그룹 프로세스에 전송 - pid < -1 : pid가 속한 모든 그룹 프로세스에 전송 - pid == -1: init 프로세스를 제외한 모든 프로세스에 전송 @ Signal 핸들링 signal(2) #include typedef void (*sighandl..
@ 관련 함수 getpwent(3) #include #include struct passwd *getpwent(void); void setpwent(void); void endpwent(void);getpwent() : /etc/passwd에서 정보 추출setpwent() : /etc/passwd에서의 파일 포인터를 시작점으로 돌림.endpwent() : /etc/passwd 파일을 닫음 @ 구조체 passwd struct passwd { char *pw_name; /* 유저 이름 */ char *pw_passwd; /* 유저 패스워드 */ uid_t pw_uid; /* 유저 id */ gid_t pw_gid; /* 그룹 id */ char *pw_gecos; /* 실제 이름 */ char *pw_dir..
@ 함수 stat stat(2)#include #include #include int stat(const char *file_name, struct stat *buf); int fstat(int filedes, struct stat *buf); int lstat(const char *file_name, struct stat *buf); 지정된 파일 정보를 stat 구조체에 반환, 정보를 얻기 위해 필요한 접근 권한은 필요없지만, 파일을 읽는 경로의 모든 디렉토리에 대한 탐색 권한이 필요. 링크 파일은 그 자체의 정보가 반환 됨, 링크에 포함된 파일을 설명하지 않음.stat과 lstat은 동일시 된다.fstat은 File descriptor에 지정된 열린 파일만 가능. @ stat 구조체 struct st..
man page란 manual page의 약자로 윈도우의 MSDN처럼 개발자 도움말 페이지다 [root@hackayz dool2ly]# man write -결과-WRITE(1) Linux Programmer’s Manual WRITE(1) NAME write - 다른 사용자에게 메시지를 보낸다. SYNOPSIS write user [ttyname] DESCRIPTION Write 명령은행단위로 다른 사용자와 의사소통을 할 수 있게 한다. write 명령을 사용하면, 상대방의 화면에는 다음과 같은메세지가 나타난다. Message from yourname@yourhost on yourtty at hh:mm ... 상 대방이 어느 위치에 있건 간에 이 메시지는 나타난다. 상대방도 이 소식에 대한 답을 하기 위..
@ PEDA(Python Exploit Development Assistance for GDB) - 리눅스 플렛폼에서의 Exploit을 돕기위한 도구이지만 Exploit에 기초가되는 분석에도 상당히 유용한 Python script @ PEDA 설치 버전 확인[root@localhost home]# gdb -q(gdb) python print sys.version2.6.6 (r266:84292, Nov 22 2013, 12:11:10)[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] 파이썬이 2.x대 버전이면 그냥 설치가능한데 최신 리눅스에 gdb는 3.x대로 컴파일돼서 gdb 지우고 다시 2.x대로 컴파일해야한다고함 peda 설치[root@localhost work]# wget htt..
@IDA를 이용한 리눅스 원격 디버깅 IDA는 호스트 PC에서 구동되고 Debuggee는 리눅스 머신에서 작동하게 됩니다.리눅스 뿐만 아니라 여러 OS에서도 가능한것 같지만 리눅스에서밖에 안써봐서 리눅스 기준으로 설명하겠습니다. IDA 6.5기준이지만 버전별로 큰 차이는 없는것 같습니다. 1. 리눅스 머신에 서버 elf파일 구동 IDA설치폴더->dbgsrv 폴더에 OS별로 서버 파일이 있습니다. Debuggee가 구동될 시스템으로 알맞은 서버파일을 옮기고, 테스트용 간단한 elf파일을 생성한 후 서버파일을 실행합니다. 2. Debuggee 파일을 IDA가 구동되는 시스템으로 이동시킨후 IDA 실행 테스트용으로 생성한 a.out 파일을 IDA가 설치돼있는 시스템(필자기준 윈도우)으로 옮긴후 IDA를 이용하..
ROPeMe (ROP Exploit Made Easy) ropshell.py를 이용하여 ROP 구성시 필요한 가젯을 쉽게 찾을수있도록 해줌exploit생성시 유용한 모듈들도 있는것같음 설치 1. 아래 파일 다운로드 후 압축해제(tar -xvf) 2. ropeme-bhus10 디렉토리 내부 distorm-1.7.30.tar.gz 압축해제(tar -xvf) 3. distorm-1.7.30의 setup.py #./setup.py build#./setup.py install 이후 /ropeme-bhus10/ropeme/ropshell.py 사용하면됨 공식 다운로드 링크http://ropshell.com/ropeme/ 사용법 링크http://ropshell.com/howto