분류 전체보기359 리눅스 사용자계정관리 1. 사용자계정 생성 $ sudo useradd [생성할 사용자계정명] = 사용자계정을 생성 $ sudo passwd [생성한 사용자계정명] = 사용자계정의 비밀번호 설정 2. 사용자계정 수정 사용자계정명을 바꾸는 경우가 생길 수 있다. 아래 명령어를 수행하기 전 수정할계정은 로그아웃을 한 상태에서 관련이 없는 계정으로 접속 후 시도한다. $ sudo usermod -d /home/[변경할 사용자계정명] -l [변경할 사용자계정명] [기존 사용자계정명] = 사용자계정 이름을 수정하고 홈 디렉토리도 변경하였으나 $ ls -l /home = 확인해보면 그룹명이 변경되지 않고 그대로 있는 것을 확인할 수 있다. $ chown [변경할 소유자명]:[변경할 소유자 그룹명] [변경할 파일 및 디렉토리명] = 실행결.. 2018. 5. 23. for문 - 1 numbers = [1, 2, 3, 4, 5] position = 0 while position < len(numbers): number = numbers[position] if number % 2 : print (number, 'hol') else : print (number, 'jjak') position += 1 2018. 5. 22. 데이터 저장타입 1. list() >>> data = ['a', 'b'] >>> data = list('ab') 위 2가지 방식으로 초기화 (1) offset으로 값을 얻어올 수 있다. >>> print data[1] b (2) .append는 가장 마지막 인덱스 다음에 데이터를 추가 >>> data.append('c') >>> print data ['a', 'b', 'c'] (3) .insert는 원하는 인덱스에 데이터를 추가, 나머지 데이터는 뒤로 한 칸씩 이동 >>> data.insert(1, 'c') >>> print data ['a', 'c', 'b'] (4) del [리스트이름[인덱스]] 는 해당 인덱스 데이터 삭제, -1은 뒤에서 첫 번째, 즉 맨 뒤 데이터를 의미 >>> del data[-1] >>> pr.. 2018. 5. 22. Overflow - 1 vulnerable.c 위 코드는 strcpy()함수로 argv[1]을 str로 복사 후 printf()함수로 str을 출력 그러나 위 코드에는 strcpy()함수와 printf()함수의 취약점이 존재. strcpy()는 argv[1]의 문자열의 길이를 검증하지 않아 Buffer Overflow 취약점이 발생 printf()는 포멧 타입과 인자를 지정하지 않고 변수를 직접 인자로 넣어서 Format String Bug 취약점이 발생 시나리오1. Buffer Overflow - str 사이즈가 256byte이고 strcpy()는 문자열의 길이를 검증하지 않으므로 argv[1]에 shell 코드를 넣고 str로 복사하여 str을 Overflow시키고 main()함수의 return address를 str주소로.. 2018. 5. 20. 공유메모리 dump shmget 함수의 원형 int shmget(key_t key, size_t size, int shmflg); key_t key : 공유메모리의 키 값, 정수로 입력 가능, IPC_PRIVATE로 인자를 가지면 개인공유메모리 생성가능 size_t size : 생성하려는 공유메모리 크기 int shmflg : 공유메모리의 flg값으로 공유메모리의 권한, 생성 시 옵션 부여. shmat 함수의 원형 void* shmat(int smId, const void* shm_addr, int flag); int smId : 공유메모리 식별자 const void* shm_addr : 공유메모리와 연결하고자 하는 프로세스 내부의 메모리 int flag : 속성설정 가상메모리와 물리메모리 영역을 연결해주는 함수. memc.. 2018. 5. 20. scrncmp strncmp 함수의 원형 #include int strncmp ( const char * str1, const char * str2, size_t num ); strncmp 함수 = 두 문자열의 일부분만 비교하는 함수 = 일치할 경우 0을 반환 예제소스 #include int main() { char* str[8] = { "banana", "baby", "always" }; for (int i = 0; i < 3; i++) { if (strncmp(str[i], "baxx", 2) == 0) { printf("%s \n", str[i]); } } return 0; } 2018. 5. 19. gcc 메모리보호옵션 gcc메모리 보호옵션 -m32 32bit로 컴파일 -fstack-protector(-all) ssp 보호기법 켜기 -fno-stack-protector ssp 보호기법 끄기 -W,-Wall 모호한 코딩에 경고를 보냄 -S 어셈블리 파일 생성 -std=[c표준] 지정한 c표준으로 컴파일 -l[라이브러리] 해당 라이브러리를 링크 -shared 공유 라이브러리를 우선 링크 -static 정적 라이브러리를 우선 링크 -s 심볼 테이블 제거 -Wl,-z,relro,-z,now Full Relro 보호기법 적용 -e [name] 시작 심볼을 name심볼로 사용 -M 심볼들의 정보르 자세히 출력 -fno-builtin 단독으로 링크(표준lib 링크 X) -mpreferred-stack-boundary=2 더미 없애기.. 2018. 5. 18. gcc 사용방법 보호되어 있는 글 입니다. 2018. 5. 18. 함수의 호출규약 1. 함수 호출 규약(Calling Convention) ▶ 파라미터를 전달하는 방법에 대한 약속을 정의한 것이다. 2. 32비트 모드 (1) __cdecl 방식(C declaration) [1] C와 C++(가변인자)의 기본 호출규약이다. [2] 인자(argument)는 스택을 사용해서 오른쪽에서 왼쪽 순서로 전달한다. [3] callee(호출자)가 스택포인터를 정리한다. (c언어에서는 내부적으로, assembly에서는 직접) [4] 함수이름 앞에 _(언더바) 기호가 붙는다. (2) __stdcall 방식(Standard Call) [1] Win32 API[Windows OS의 System call]의 기본 호출 규약이다. [2] __cdecl방식과 동일하게 인자(argument)는 스택을 사용해서 오.. 2018. 5. 18. gdb debugging (gdb) break *main+0 Breakpoint 1 at 0x804840b - main의 기준주소 + 1번째 주소를 breakpoint로 지정 (gdb) break *0x0804840c Breakpoint 2 at 0x804840c - 위와 같은 뜻이지만 main의 주소에 1을 직접더해서 사용 (gdb) info break Num Type Disp Enb Address What 1 breakpoint keep y 0x0804840b 2 breakpoint keep y 0x0804840c - breakpoint 되어있는 목록 확인 (gdb) del 2 (gdb) info break Num Type Disp Enb Address What 1 breakpoint keep y 0x0804840b - de.. 2018. 5. 17. gdbgui install $ sudo apt-get install git [설치형태] git clone git://"github주소".git ex)$ git clone git://github.com/cs01/gdbgui.git $ sudo apt install python-pip $ pip install gdbgui --upgrade $ gdbgui 2018. 5. 17. gdb disassemble - c 원본소스 - - 실행파일 exe를 gdb로 main 함수를 disassemble 한 것 - 1) push ebp => 이전 함수의 기준주소를 stack에 저장 - ebp란? extended base pointer로 기준주소를 의미한다. 2) mov ebp, esp => 현재 stack의 top pointer를 기준주소로 저장 (main함수의 기준주소를 ebp에 저장) - 모든 함수의 시작에는 1) 과 2)가 있다. 3) sub esp, 0x8 => stack memory의 공간을 8byte만큼 확보한다. 4) mov DWORD PTR [ebp-0x4], 0xa => 0xa(10진수 10)를 ebp-0x4 [3)에서 확보한 스택포인터]에 4byte정수를 넣는다. - DWORD PTR은 4byte 정.. 2018. 5. 16. 이전 1 ··· 26 27 28 29 30 다음