Linux 22

Linux Shell 구현 소스

/* * http://sosal.tistory.com/ * made by so_Sal */ 유닉스 프로그래밍 수업에서 (비록 리눅스를 사용하지만)쉘 프로그래밍 과제가 나와, 했던 과제를 한번 올려 봅니다.- Linux shell programming 쉘(shell) 구현에서 간단한 시그널처리와 fore / back-ground 프로세싱 처리 등에 관하여 구현해보았습니다. * SIGNAL 기능. - ctrl + c : SIGINT - ctrl + z : SIGTSPT - wait 상태의 부모프로세스는 SIGCHLD로 다시 run. - rs (restart) : 자식을 SIGCONT signal로 stop 상태를 run으로, 부모는 restart된 자식을 다시 waitpid로 기다림 * lss : ls - ..

Linux/Linux_Source 2011.05.23 (5)

/proc/pid/maps : 파일 프로세스의 메모리 공간

/* * http://sosal.tistory.com/ * made by so_Sal */ - 프로그램 안에서, Code segment, data segment, stack segment, heap segment, .bss 등을 살펴보겠습니다. "유닉스 계열은 모든 것이 파일, 프로세스 이다. " 라는 말을 무수히 들어보셨을 것입니다. 그렇다면 중요한 정보들이 어디에 파일로 저장되어 자리하고 있는지 알게된다면 쉽게 정보들을 찾을 수 있을 것 같습니다. proc : process의 줄임말이며, 이곳에 프로세스의 정보들이 저장됩니다. 사용자 프로세스의 정보들을 이곳에서 얻을 수 있으며 심지어 조작도 가능하다는 점에서 /proc 파일시스템은 굉장히 유용합니다. 위 그림에서 보는바와 같이 (pstree 명령어)..

Linux/Linux_technic 2011.01.29 (4)

SMP2010 binary hacking6 풀이

/* * http://sosal.tistory.com/ * made by so_Sal */ smp2010 중, 6번 바이너리 해킹문제 입니다. 문제파일입니다. 리눅스 서버에서 wget 툴을 사용하여 바이너리를 일단 받죠. (위 파일의 url임) wget http://sosal.tistory.com/attachment/cfile23.uf@167E83114CEC1DCD1F4271 받은 파일의 이름을 간단하게 바꾸고, file 명령어로 실행이 가능한 파일인지 확인 후 실행해봤습니다. Segmentation fault! 작렬하네요. argv를 넣어보니, 뭔가 인자를 발견했다 하고 바로 꺼지네요..? (일단 설치하고 문제 프로그램의 이름을 myfile로 수정하여 공격하겠습니다.) 매개변수를 여러개 넣어도 같은 결..

시스템 보안 10.패스워드 설정 문제

/* * http://sosal.tistory.com/ * made by so_Sal */ 관리중인 솔라리스 시스템에 계정을 가지고 있는 내부사용자들에게 패스워드를 자주 바꿀것을 공지하고 있으나 일부 사용자들이 잘 따라주지 않아서 부득이 강제로 패스워드를 바꿔야하는 제한기간을 설정해야 한다. yspace라는 계정의 패스워드 정책을 다음과 같이 강제 설정하시오. - 패스워드를 바꾼지 14일이 되면 무조건 새 패스워드로 바꿔야함. - 패스워드를 새로 바꾼지 만 하루가 지나기 전에는 패스워드를 변경할 수 없음. (단, yspace라는 계정에 대해서만 적용되어야 하고 타 계정에 영향을 주어서는 안됨) [passwd] 시스템 모든 계정은 /etc/passwd파일에 관련 항목을 가지고 있다. 이 파일에는 각 행마다..

시스템 보안 03.쉘 환경변수 변경 문제

/* * http://sosal.tistory.com/ * made by so_Sal */ 환경변수? / 네이버 백과사전 시스템의 속성을 기록하고 있는 변수라는 IT용어로, OS의 셸 등에 설정되어 있다. 변수의 이름과 의미는 미리 정해져 있기 때문에 환경변수를 읽으면 시스템의 설정을 어느 정도 알 수 있다. 사용자가 의도적으로 변환할 수 있는 환경변수도 많으며, 특히 웹 브라우저에서는 자신의 정체를 숨길 목적으로 브라우저 등의 변수를 변환하는 경우도 있다. 일단 접속해봅시다. ------- 사용자의 쉘환경변수들은 그 설정값에 따라 때로는 보안상의 문제점을 야기시키기도 한다. 현재의 bash 쉘환경변수 설정을 살펴보고 보안상 문제가 있는 부분을 바로 잡으시오. 단, 이문제에서는 현재 접속되어 있는 쉘에 ..

bof를 이용하여 함수포인터 공략하기

/* * http://sosal.tistory.com/ * made by so_Sal */ 함수포인터를 블로그에 정리한적이 없었네요.. 이번기회에 함수포인터도 정리할겸~~ 포스팅합니다. 배열의 이름이 배열이 메모리의 어떤 공간에 저장되어있는지를 가리키듯, 함수의 이름은 함수의 내용이 메모리 어디에 적재되었는지 포인터가 되어 가리키고 있는것입니다. 주로 윈도우에서 DLL을 로드할 때, 함수포인터를 사용합니다. #include int foo(){ //func1 foo() printf("foo - function1\n"); return 1; } int boo(){ //func2 boo() printf("boo - function2\n"); return 2; } int main(){ int value; int ..

Linux/Linux_technic 2010.11.06

Strcmp 부분 gdb로 암호 문자열 크랙하기

/* * http://sosal.tistory.com/ * made by so_Sal */ 가끔 프로그램이, 변수에 어떤 값이 들어가있는지 궁금할 때가 있다. 그때는 심볼이나 디버깅 정보를 삽입하여, gdb에서 watch 명령어나 직접적으로 메모리에 접근하여 정보를 가져오는방법, 레지스터를 확인하는 방법 등이 있는데, 이 포스팅에서 레지스터가 가리키는 문자열 변수에 어떤 값이 들어가있는지 GDB 디버깅 툴을 이용하여 확인하는 방법을 알아보려고 한다. (답) ANUG9LMRKOB^IS_SOSAL #include #include int main(){ char password[] = "MY_PASSWORD_IS_SOSAL"; char input[100] = ""; int length = strlen(passw..

Linux/Linux_technic 2010.08.29

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

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

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

Linux/Linux_programing 2009.12.18 (3)