반응형

전체 글 799

C programming :: Void형 포인터와 NULL 포인터

/* * http://sosal.tistory.com/ * made by so_Sal */ Void* NULL* Void * 포인터는 모두 주소를 저장하는 변수로 모두 4바이트의 같은 크기를 갖고있다. (물론 32비트 프로그래밍에서 이야기한다.) 주소값이 가지는 값들은 결국 컴퓨터에겐 단순한 숫자일 뿐이지만, 그 숫자가 의미하는것에 따라 의미를 부여하여 int, char, double 등 자료형을 만들었다. 위와 같이 일반적인 포인터는 자신이 가리키는 주소가 가지는 자료형과 같은 자료형을 쓴다. 하지만 포인터 자료형중에 void라는 특별한 놈이 있다. 이놈은 일반적인 포인터와 달리 데이터 자료형이 명시되지 않은 포인터이다. 포인터는 단지 주소에 접근하기 위함 뿐만 아니라 * 연산자를 이용해 값을 변경하고..

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 - 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)를 ..

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

Race condition 해킹 기법 문제

/* * http://sosal.tistory.com/ * made by so_Sal */ 2009 11월 16~17일 24시간동안 진행된 시립대학교 idea bank 해킹대회 chal0 문제입니다. 아래는 문제 소스입니다. (바로 공개되었습니다.) /home/chal1/keyfile 을 읽어라! 가 문제의 목적입니다. //----------- 문제 소스 chal0 -------------// #include #include #include int main(int argc, char * argv[]) { int loop; char buffer[512]; memset(buffer, 0, sizeof(buffer)); if (argc != 2) return 0; if (strlen(argv[1]) >= 30..

Linux - BOF metasploit을 이용한 간단한 buffer over flow

/* * http://sosal.tistory.com/ * made by so_Sal */ BOF에 대해 기본적인 지식이 없으신 분은 아래 링크에 가셔서 글을 읽고오세요~ LINK_ /* * 사실 요즘 나오는 OS들은 BOF 버그가 통하지 않습니다.. * 그럼에도 이 해킹기법을 공부하는 이유는.. * 컴퓨터 메모리 구조에 대한 이해(?)를 * 극대화 시킬 수 있는 재미있는 놀이이기도 하고.. * ftz.hackerschool.org 워게임 문제들중.. * 대략 50% 만큼의 비중을 차지하고 있는 * 공격기법이기도.. ㅎㅎ * 여튼 한번 Buffer over flow를 한번 일으켜 봅시다.. ㅠ * 아래 bof 실습 환경은 제가 리눅스 구버전을 가지고 있지 못해서 * ftz.hackerschool.org ..

반응형