Linux 58

Linux :: 디렉토리, 파일 정보 가져오기

/* * http://sosal.tistory.com/ * made by so_Sal */ 살펴볼것 1. stat(), fstat(), lstat() ,struct stat // 파일의 소유자나 그룹의 번호 를 가져오는 함수, 구조체 2. getcwd() // 현재 디렉토리의 경로를 알아내기 위한 함수 getpwuid(), struct passwd // passwd 파일의 한 항목을 가져오는 함수 및 구조체 getgrgid() , struct group // group 파일의 한 항목을 가져오는 함수 및 구조체 getlogin() // 로그인 이름 반환 함수 3. 245 opendir(), closedir() // 디렉토리를 열고 닫는 함수 readdir() struct dirent // 디렉토리 정보를..

Linux/Linux_programing 2010.01.29 (2)

Linux :: pwd 현재 디렉터리 경로 프로그램 소스

/* * http://sosal.tistory.com/ * made by so_Sal */ 1. getcwd() 함수 2. 예제 1. getcwd() 함수 #include char* getcwd( char* buf, size_t bufsize); 경로를 나타내는 문자열의 시작 주소가 반환됩니다. buf :: 현재 디렉토리의 경로가 저장될 배열 bufsize :: 현재 디렉토리 경로 문자열의 크기 (unsigned int = size_t) 2. 예제 #include #include int main(void){ char buf[BUFSIZ]; int bufsize; getcwd(buf,bufsize); printf("buf :: %s , size :: %d \n",buf,bufsize); return 0; ..

Linux/Linux_Source 2010.01.29 (4)

Linux :: 간단한 Port scanner 구현하기

/* * http://sosal.tistory.com/ * made by so_Sal */ c언어와 소켓 프로그래밍에 대한 지식, OSI 7계층 프로토콜중 TCP, IP, UDP, ICMP와 전송계층, 네트워크 계층의 프로토콜 지식이 있으면 충분히 이해할 수 있는 간단한 내용입니다. 예제 소스도 아주 간단하게 "열려있는지"만 파악하는 내용이므로 어렵지 않게 이해하실 수 있을것이라 생각합니다. 포트스캔 하는 방법도 상당히 여러가지고, 무척 어려운 부분이지만 아주 간단하게 준비하였습니다. 이 글을 보시고 난 후 옵션이나 기능을 추가하시면서 더 멋있는 포트스캐너를 만들어 보세요. 1. port? 2. portscan? 3. 예제 소스 CTF 해킹방어대회나 서버 모의 해킹을 할 때 가장 기본적으로 하는것중에 하..

Linux/Linux_Source 2010.01.27 (2)

Linux - real id, effective id 사용자 id

/* * http://sosal.tistory.com/ * made by so_Sal */ setuid() seteuid() setreuid() getuid() geteuid() getgid() getegid() 주구장창 real id, effective id에 대해서 설명한 후에 위 함수들을 간단하게 정리하고 끝내려 합니다. 함수들이 어떤것인지 간단하게만 보고자 한다면 이 글의 맨 아래로 내려가 주세요. 사용자 id는 크게 2가지로 나뉜다. real id, effective id. 정확하게 무엇인진 모르겠지만.. real id는 실제 id를 말하고 effective id는 현재 권한을 뜻한다고 일단 생각하자. 시스템 해킹 문제에 자주 쓰이는 setuid() 라는 함수의 man page를 확인해보자. #..

Linux/Linux_programing 2010.01.27 (5)

Linux - ps 프로세스 리스트 출력 프로그램 및 소스

/* * http://sosal.tistory.com/ * made by so_Sal */ 이 포스팅에서 다루는 내용 :: DIR *opendir(const char *dirname); :: int readdir(unsigned int fd, struct dirent *dirp, unsigned int count); :: struct dirent{}; :: int closedir(DIR *dir); :: int lstat(const char* path, struct stat* buf); :: struct stat{}; :: ==================예제================== #include #include DIR *opendir(const char *dirname); opendir() ..

Linux/Linux_Source 2010.01.26

Linux - dirent.h 함수와 구조체, find 프로그램 맛보기

/* * http://sosal.tistory.com/ * made by so_Sal */ 이번 포스팅에서 다루는 내용 :: DIR *opendir(const char *dirname); :: int readdir(unsigned int fd, struct dirent *dirp, unsigned int count); :: int getdents(unsigned int fd, struct dirent *dirp, unsigned int count); :: struct dirent :: int closedir(DIR *dir); #include #include DIR *opendir(const char *dirname); opendir() 함수는 매개변수 dirname에 해당하는 디렉토리 스트림을 열고, ..

Linux - fcntl File control

/* * http://sosal.tistory.com/ * made by so_Sal */ fcntl - File control #include #include int fcntl(int fd, int cmd); int fcntl(int fd, int cmd, long arg); int fcntl(int fd, int cmd, struct flock *lock); (flock 구조체에 대해서는 게시하지 않았습니다. ) 첫번째 매개변수 fd부터 보겠습니다. fd - 파일 서술자(file descriptor) ㄴ 제어하기를 원하는 파일의 서술자를 지정하는 매개변수입니다. 리눅스 시스템에서 모든 프로세스는 0, 1, 2 라는 3개의 파일 서술자는 미리 정해져있습니다. 각각 입력(0), 출력(1), 에러(2)를 ..

Linux/Linux_programing 2010.01.17 (7)

Hackerschool Level11 Exploit

/* * http://sosal.tistory.com/ * made by so_Sal */ 오랜만에 다시 해커스쿨 잡아봤습니다.. ㅠㅠ ID :: Level11 PW :: what!@#$? 이 포스트에서는 문제의 풀이에대한 요점만 다룹니다. 따라서 BOF의 이해는 아래 링크루 ^-^ LINK_ #include #include int main( int argc, char *argv[] ) { char str[256]; setreuid( 3092, 3092 ); strcpy( str, argv[1] ); printf( str ); } 256 크기의 배열이 선언되어있고, 이 스택을 overflow 시켜서 ret값을 바꾸면 되겠네요. 배열을 선언할때마다 dummy 메모리 (잉여공간)이 생성됩니다. 따라서 메모리..

Linux/Linux_technic 2010.01.10

fork, pipe를 이용한 간단한 프로세스 통신 예제

/* * http://sosal.tistory.com/ * made by so_Sal */ #include #include #include int main(void){ char buffer[BUFSIZ]; int fd[2]; if(pipe(fd)==-1){ perror("pipe error..\n"); exit(0); } pid_t pid; pid = fork(); if(pid == -1){ perror("fork error..\n"); exit(0); } else if(pid==0){ //자식 프로세스의 경우// write(fd[1],"This letter is from child",BUFSIZ); sleep(1); //레이스 컨디션 문제 발생. 부모보다 자식이 먼저 fd에 있는 자료를 //가져갈 수 ..

Linux/Linux_Source 2009.12.18 (1)

IPC - 03. pipe() 를 통한 프로세스 통신

/* * http://sosal.tistory.com/ * made by so_Sal */ 각각의 프로세스는 독립적인 메모리 영역을 가지고 있다. fork() 함수를 쓰더라도, 그 이전의 변수들이 복사되는 것일 뿐, 부모 프로세스와 자식 프로세스가 그 변수를 공유한다던가, 정보를 주고받는 행동은 방법이 없었다. 동시에 2개의 프로그램을 실행시키는데, 변수를 공유하려면 어떻게 해야할까? 공유메모리 기법을 쓰는 방법이 있고, pipe를 통해 변수를 공유한다기 보다 정보를 주고 받는 방법이 있다. 여기 포스팅되는 글은 단순히 buffer를 주고받을 수 있는 pipe에 대해서 설명하려 합니다. 부모프로세스에서 buffer 문자열을 자식프로세스에게 줄 수 있고, 자식 프로세스 역시 답장 가능입니다. ㅋ (아참, ..

Linux/Linux_programing 2009.12.18 (3)