분류 전체보기359

gdb 표기문법 1. (gdb) set disassembly-flavor intel 2. (gdb) set disassembly-flavor att 1번은 인텔문법, 2번은 AT&T문법 원하는 문법으로 디스어셈블한 파일을 볼 수 있다. 그러나 이것은 일시적인 방법이고 $ echo "set disassembly-flavor intel" > ~/.gdbinit => echo 는 출력한다. => "set disassembly-flavor intel" 내용을 => ~ 홈디렉토리의 .gdbinit => gdb 프로그램이 실행될 때 홈 디렉토리에서 /.gdbinit를 읽어오며 => ~/.gdbinit의 경우 gdb실행 시 초기 명령어를 저장한다. 2018. 5. 16.
strcpy(), strcat() - abc.c - int main (int args, char** argv[]) { char cmd[100]; strcpy( cmd, "dig @" ); strcat( cmd, argv[1] ); strcat( cmd, " version.bind chaos txt"); system( cmd ); return 0; } $ abc.exe "127.0.0.1; /bin/sh; " ; DiG 9.2.1 @127.0.0.1 cmd[100] = "dig @127.0.0.1 version.bind chaos txt\0" ; = 한 줄에 여러개의 명령어 실행 127.0.0.1을 적고 추가적으로 /bin/sh 실행 abc.exe의 실행권한이 +4000 일 경우 권한탈취 가능 2018. 5. 13.
int main(int argc, char *argv[]) dir /? = 입력 시 dir 명령에 대한 도움말이 출력. = 이때 "/?" 라는 문자열이 옵션. int main(int argc, char* argv[]) 함수를 보면 argc = 프로그램을 실행할 때 지정해 준 "명령행 옵션"의 "개수"가 저장되는 공간 argv = 프로그램을 실행할 때 지정해 준 "명령행 옵션의 문자열들"이 실제로 저장되는 배열 - abc.c - #include #include // exit() int main(int argc, char* argv[]) { // 옵션 지정하지 않았을 때 에러 출력하고 종료 if (argc == 1) { fputs("옵션을 입력하지 않았습니다. \n", stderr); exit(1); } // 옵션 개수 출력 printf("%d 개의 옵션을 입력하였.. 2018. 5. 13.
vi editor vi editor = visual editor : sh = vi를 실행한 사용자 권한으로 shell실행 : ![명령어] = vi를 실행한 사용자 권한으로 명령어 실행 : !id = id 명령어 결과(uid, gid, groups) 출력 2018. 5. 13.
find 명령어 find 명령어 옵션 1. find / -user [소유자 이름] $ find / -user bejjangyi = 찾는다. 루트디렉토리부터 하위디렉토리까지. 소유자가 bejjangyi 인 파일 및 디렉토리를 2. find / -user [사용자이름] -perm [8진수 권한] $ find / -user bejjangyi -perm +4000 = 찾는다. 루트디렉토리부터 하위디렉토리까지. 소유자가 bejjangyi 인 파일 및 디렉토리를 permission +4000 = 사용가능한 권한 중 하나라도 일치할 경우 permission -4000 = 사용가능한 권한 전부가 일치할 경우(가능하지 않은 권한은 달라도 무관) permission 4000 = 사용가능하지 않은 권한까지 동일할 경우 3. find / -.. 2018. 5. 13.
도커 리눅스 커널의 cgroups 와 namespaces 가 제공하는 기술 가상화가 아닌 격리 Docker hub 윈도우즈에서 도커를 사용하여 특정 기능이 있는 하나의 컨테이너에 아이피를 주고 접속하여 사용가능 그러나 하나의 컨테이너형식으로 되어있어 일반 윈도우즈화면과 같이 마우스 클릭 및 바탕화면사용기능이 제한된다 윈도우 컨테이너의 경우 파워쉘을 호출할 수 있는 스크립트 제작 가능 2018. 4. 27.
BigQuery: Qwik Start - Web User Interface 웹 사용자 인터페이스 - shell connection시 project가 PROJECT_ID로 연결 BigQuery - Compose query 의 New Query 1) Query문으로 데이터 확인 #standardSQL SELECT weight_pounds, state, year, gestation_weeks FROM `bigquery-public-data.samples.natality` ORDER BY weight_pounds DESC LIMIT 10; 2) 데이터 집합 만들기 - Create new dataset - Dataset ID 지정 후 확인 3) $ wget http://www.ssa.gov/OACT/babynames/names.zip = 많이 쓰는 아기이름 데이터 추가 google371.. 2018. 4. 27.
Kubernetes Node 1. Kubernetes 란? - 리눅스 컨테이너 작업을 자동화 시키는 오픈소스 플랫폼 - High Availability Cluster를 조종하고 Automation(자동화) 하는 플랫폼 2. Cluster 란? - 여러 개의 컴퓨터를 연결해서 하나의 덩어리(Cluster)로 작동되도록 연결한 하나의 유닛 - Kubernetes를 사용하면 컨테이너화 된 어플리케이션을 별도의 Sysem 없이 Cluster에 배포가능 - 단, 어플리케이션을 개별 호스트에서 분리하는 방식으로 컨테이너화를 해야함 - Kubernetes는 Cluster전체에서 어플리케이션 컨테이너의 배포 및 스케줄을 효율적으로 자동화 - 하나의 클러스터 = 하나의 마스터 + 여러개의 노드 + 마스터 : 클러스터를 지휘 및 조정, 클러스터에 대.. 2018. 4. 26.
클라우드 런처로 서비스 제공 지역에 대한 상세내용 = https://cloud.google.com/compute/docs/zones Nginx 스택 시작하기 - VM instance 구성 참고 : 'Google Cloud Platform'옆의 왼쪽 상단에있는 버튼을 클릭하여 GCP 제품 및 서비스 목록으로 메뉴를 볼 수 있습니다 . Cloud Launcher 시작하기 이 섹션에서는 Google Compute Engine에서 Cloud Launcher를 사용하여 Nginx 스택을 만드는 방법에 대해 알아 봅니다. 클라우드 런처로 이동 에서 Google 클라우드 콘솔 로 이동 클라우드 실행기 하고 그것을 클릭 : Cloud Launcher 홈 페이지가 표시됩니다. Nginx 선택 "솔루션 검색"이란 검색 창에 "Nginx"를 입력하십시.. 2018. 4. 26.
가상머신 만들기 명령어 확인 : https://cloud.google.com/sdk/gcloud 1) $ gcloud auth list = PROJECT_ID에 설정되어 있는 것 확인 google369434_student@qwiklabs-gcp-d5a796316a20c809:~$ gcloud auth list Credentialed Accounts ACTIVE ACCOUNT * google369434_student@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT` 2) $ gcloud config list project = google369434_student@qwiklabs-gcp-d5a796316a20c809:~$ gc.. 2018. 4. 26.
call by reference #include int main() { int x = 7; int y = 5; int k = 0; int i; int my[5] = { 1, 2, 3, 4, 5 }; test(my); //배열은 이름을 보내면 주소가 전달된다. for (i = 0; i %d \n", i, my[i]); } test1(x, &y); //주소를 보내고 printf("%d , %d \n", x, y); return 0; } void test(int data[]) { for (int i = 0; i < 5; i++) { data[i] = data[i] * 2; } } void test1(int a, int *p) { //포인터타입으로 받는다. a = a + 5; *p = *p + 5.. 2018. 3. 28.