일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 올바른 변수명 짓기
- 빅데이터를 지탱하는 기술
- leetcode 49
- MapReduce 실습
- Hadoop
- webcrawler
- leetcode 344
- leetcode 5
- Hortonworks Sandbox
- leetcode 15
- leetcode 561
- 배열
- airflow docker
- leetcode 121
- docker로 airflow 설치하기
- leetcode 937
- Python
- leetcode 234
- leetcode125
- 머신러닝
- 스파크 완벽 가이드
- 데이터레이크와 데이터웨어하우스
- leetcode
- 블로그 이전했어요
- 문자열 조작
- leetcode 819
- leetcode 238
- wargame.kr
- ctf-d
- 컴퓨터구조
- Today
- Total
목록ALL (102)
HyeM
More Effective C++의 항목 16에서 20까지를 문서화함.
구조체 SOCKADDR_IN : 주소 정보 담기 struct SOCKADDR_IN { //소켓에 저장될 주소 정보 sa_family_t sin_family; //주소체계 uint16_t sin_port; //TCP/UDP port번호 struct in_addr sin_addr; // 32비트 IPv4주소 char sin_zero[8]; //패딩으로 사용 }; struct in_addr{ Unit32_t s_addr; //32비트 IPv4주소 }; ▷ Sin_family : 프로코콜마다 적용하는 주소체계가 다름 주소체계( Address Family) 의미 AF_INET IPv4 인터넷 프로토콜에 적용하는 주소체계 AF_INET6 IPv6 인터넷 프로토콜에 적용하는 주소체계 AF_LOCAL 로컬 통신을 위한..
More Effective C++의 항목 16에서 20까지를 문서화 한 파일이다.
id: level3 pw : can you fly? ㄴ 드래그 ㄱㄱ 1. ls -l 2. cat명령어로 hint 파일 읽기 해석 : argc : 프로그램을 시작했을 때 전해지는 인자의 갯수. 첫번째 인수는 실행파일의 경로로 고정되어 있음. argv : 프로그램이 시작되었을때 넘겨받은 인자. 문자열로 처리함 argv[0]은 파일경로의 값, argv[1]부터 차례대로 인자들이 들어감 만약 프로그램 실행시 전해지는 인자의 개수가 2개가 아니면, "Usage: ~ host" 에러 메시지 띄우고 종료 2개라면, strcpy( cmd, "dig @"); //cmd 배열에 dig @ 복사하고, strcat( cmd, argv[1] ); // cmd 배열에 입력 두번째 인자([1])를 추가하고, strcat( cmd,..
id: level2 pw : hacker or cracker ㄴ 드래그 ㄱㄱ 1. ls -l 명령어로 파일 목록을 본다. 2. cat명령어로 hint 파일 읽기 텍스트 파일편집 (ex. vi editor) 중에 쉘의 명령어를 실행하라는 힌트.. 우선 넘어가자 3. find 명령어를 통해 level3의 권한을 가진 파일이 있는지 살펴본다. 4. 위의 파일( /usr/bin/editor )을 실행해본다 5. 위에서 봤던 힌트를 생각해보면, 이 파일이 level3의 권한을 갖고있으니, :sh 명령어로 쉘로 이동해보자. 6. 이동한 쉘의 프롬프트를 보니까 level3이다. 7. my-pass를 이용하여 level3의 pw 획득! level3의 pw : can you fly?
ID : Level1 PW : level1 ㄴ 드래그 ㄱㄱ 1. ls -l 2. hint파일의 내용보기 cat hint 3. find 명령어를 이용하여, 사용자가 level2이고, setuid가 걸린 파일을 찾는다. setuid : 일시적으로 파일 소유자의 권한을 얻어 실행. -4000 4. 위의 결과로 나온것을 실행하면, 다음과 같이 나옴 이때, bash를 이용하여 레벨2 권한의 배시쉘 실행시킨다. 이유 : setuid를 통해 일시적으로 권한을 얻은 순간 쉘을 실행시키면, level2 소유의 정상적인 쉘에 머무르게 됨. -> 완전한 level2의 권한을 얻게됨. 5. pwd로 위치를 확인해보면, level2인것 확인 가능 6. my-pass 명령어를 통해 level2의 pw 획득! level2 의 pa..
항목 14 : 예외지정 기능은 냉철하게 사용하자 예외지정 : Java처럼 그 함수가 발생시킬 예외를 미리 지정하는 기능 > 장점 1. 코드보기 수월 2. 예외사용을 적절히 제약해줌 예외지정에 일관성이 없으면 컴파일러가 컴파일 도중에 발견해 줌. > 단점 - 함수가 예외 지정 리스트에 없는 예외를 발생시킬 경우, 런타임 에러가 발생하면서 unexpected라는 특수함수가 자동으로 호출됨 -> 결국, 프로그램이 멈추고, 활성 스택 프레임에 만들어진 지역변수는 없어지지 않는다. * unexpected 함수는 terminate를 호출하여, 멈춰버린다. - 다른 호출 측 함수에서 예외처리 코드가 준비된 상황에서조차도 unexpected가 호출될 수 있다. 예외 지정 불일치 피하기 방법 1. ( 보통 타입 인자를 ..
항목 13 : 발생한 예외는 참조자로 받아내자 catch문 작성시, 예외객체가 전달되는 방식 1 포인터 2 값 3 참조자에 의한 전달(예외받기) TIP! : 문제점 : 해결점 1. 포인터 예외를 포인터로 발생시, 객체의 복사 X 위의 코드는 완벽하지 않다. 프로그램 흐름이 떠나더라도, 예외 객체가 그대로 남아 있을 수 있는 방법이 필요하다. 이에 대한 대안은 힙 객체를 새로 만들고, 그 객체의 포인터를 예외로 발생시킨다. 이로써 위의 문제는 해결되지만, catch문으로 들어온 포인터를 삭제하느냐 마느냐의 문제가 생긴다. 만약 예외객체가 원래부터 힙에 할당되지 않은 것이면, 메모리 해제를 해선 안된다. 하지만 이를 알 수 있는 방법이 없으므로, 이런 경우는 피하는 것이 좋다. 또한 '포인터에 의한 예외잡기..