티스토리

criling
검색하기

블로그 홈

criling

criling.tistory.com/m

criling 님의 블로그입니다.

구독자
0
방명록 방문하기

주요 글 목록

  • [P4C 4기] 8주차 과제 Out Of bounds Out Of Bounds 배열의 범위를 벗어난 메모리에 접근할 수 있는 취약점 입니다. 개발자가 인덱스에 대한 검사를 제대로 하지 않으면 발생하는 취약점으로 임의의 주소 읽기, 임의 주소 쓰기로 이어질 수 있습니다. 배열은 연속된 메모리 공간을 가지며 배열의 크기는 각 요소가 가지는 자료형 크기에 각 요소의 개수를 곱한 값입니다. 배열 등의 요소를 참조할 때 인덱스 값이 음수거나 배열의 길이를 벗어날 때 발생합니다. 개발자가 인덱스 범위에 대한 검사를 명시적으로 프로그래밍 하지 않으면, 프로세스는 앞서 배운 식을 따라 요소의 주소를 계산할 뿐 계산한 주소가 배열의 범 위 안에 있는지 검사하지 않습니다. 배열 참조에 사용되는 인덱스를 임의의 값으로 설정할 수 있다면 배열의 주소로부터 특정 오프셋에 있는 메.. 공감수 0 댓글수 0 2022. 6. 11.
  • [P4C 4기] 7주차 과제 올드 스쿨 (Buffer Overflow, Format String Bug, RET overwrite, memory write primitive) RET Oerwrite 함수는 종료될 때 Return address(RET)를 pop하여 다음 명령어로 분기됩니다. 하지만 RET Overwrite를 이용해 되돌아갈 RET를 다른 주소로 변경한다면 해당 주소로 이동해 명령을 수행합니다. 'BBBB'가 입력될 자리에 쉘코드의 주소가 들어간다면 함수가 리턴된 뒤 쉘코드로 인해 쉘이 실행될 수 있습니다. BOF는 버퍼의 크기를 고려하지 않거나 입력 값의 길이를 검증하지 않는 경우에 발생할 수 있습니다. BOF(Buffer OverFlow) 메모리를 다루는 데에 오류가 발생하여 잘못된 동작을 하는 프로그램 취약점입니다.(위키피디아) (BOF를 이해하려면 함수가 호출되고 리턴될 때 발생하는 함수 프롤로그 및 에필로그에 대해 알아야합니다.) 입력된 데이터를 저장하.. 공감수 0 댓글수 0 2022. 6. 3.
  • [P4C 4기] 6주차 과제 - Doubly Linked List 구현, 구구단 with 어셈블리어, Stack 문서 요약 1. Doubly LInked List(이중 연결 리스트, 이하 DLL) DLL은 데이터를 저장하는 자료구조의 하나로 연결 리스트와 비슷합니다. 차이점이 있다면 다음 노드만이 아닌 이전 노드에 대해서도 연결되어 있습니다. 맨 첫 번째 노드는 Head가 되고 맨 마지막 노드는 Tail이 됩니다. 1 2 3 4 5 typedef struct linkedlist { struct Node* head; struct Node* tail; int count; //노드의 개수 }linkedlist; cs 각 노드가 가지는 정보는 다음과 같습니다. 1 2 3 4 5 typedef struct Node { char data[10]; struct Node* prev; // 이전 노드 포인터 struct Node* next;.. 공감수 0 댓글수 0 2022. 5. 29.
  • [P4C 4기] 4~5주차 - 과제C언어로 HTTP 서버 구현 HTTP HTTP란 무엇인지 간단하게 살펴보겠습니다. Hyptertext Trasnfer Protocol 여기서 Hypertext는 클라이언트의 선택에 따라서 이동이 가능한 조직화된 정보입니다. 어떠한 사이트에 접속 시 메인 페이지라 불리는 첫 번쨰 페이지 파일이 전송되어 브라웅저를 통해 출력합니다. HTTP는 상태가 존재하지 않는 Stateless 프로토콜입니다. 서버는 클라이언트의 요청에 응답 후 연결을 끊습니다. 이러한 특징을 보완하고나 쿠키와 세션이라는 기술을 이용하여 상태 정보의 유지가 가능하게 됩니다. 요청 메시지(Request Message) 요청 메시지는 요청라인, 메시지 헤더, 메시지 몸체로 이루어져 있습니다. 요청 라인에는 요청방식에 대한 정보가 삽입되는데 대표적인 요청방식으로는 GET.. 공감수 0 댓글수 0 2022. 5. 17.
  • [P4C 4기] 3주차 과제 - 코드업 기초 100제 (~100) 1번 1073 : [기초-반복실행구조] 0 입력될 때까지 무한 출력하기2 입력 정수가 순서대로 입력된다. -2147483648 ~ +2147483647, 단 개수는 알 수 없다. 입력 예시 7 4 2 3 0 1 5 6 9 10 8 출력 입력된 정수를 줄을 바꿔 하나씩 출력하는데, 0이 입력되면 종료한다. (0은 출력하지 않는다.) 출력 예시 7 4 2 3 풀이 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include int main() { int num1; reload: scanf("%d", &num1); if (num1 != 0) { printf("%d\n", num1); goto reload; } return 0; } cs 위 처럼 goto문을 사용하여 reload라는 레이블로 이동.. 공감수 0 댓글수 0 2022. 5. 3.
  • [P4C 4기] 2주차 과제 - 코드업 기초 100제 (~70) 1번 1035: [기초-출력변환] 16진 정수 1개 입력받아 8진수로 출력하기 입력 16진 정수 1개가 입력된다. (단, 16진수는 영문 소문자로 입력된다.) 입력 예시 f 출력 8진수로 바꾸어 출력한다. 출력 예시 17 풀이 1 2 3 4 5 6 7 8 9 #include int main() { int num; scanf("%x", &num); printf("%o\n", num); return 0; } cs 위와 같이 문제를 해결할 수 있었습니다. 그러다 scanf가 궁금해져 scanf에 대해 찾아보다 다음과 같은 내용을 찾을 수 있었습니다. "scanf는 입력된 값들을 왼쪽부터 읽는다. 이때 서식문자에 알맞은 형식의 데이터가 입력되었는지 확인한다. 알맞지 않은 데이터일 경우 다음 서식문자를 이용하여 .. 공감수 0 댓글수 0 2022. 4. 20.
  • [P4C 4기] 1주차 과제 - 코드업 기초 100제 (20~30) 1번 1023 : [기초-입출력] 실수 1개 입력받아 부분별로 출력하기 입력 실수 1개가 입력된다. (단, 입력값은 절댓값이 10000을 넘지 않으며, 소수점 이하 자릿수는 최대 6자리까지이고 0이 아닌 숫자로 시작한다.) 입력 예시 1.414213 출력 첫 번째 줄에 정수 부분을, 두 번째 줄에 실수 부분을 출력한다. 출력 예시 1 414213 풀이 1차 풀이 1 2 3 4 5 6 7 8 9 10 11 12 #define _CRT_SECURE_NO_WARNINGS #include int main() { int a; int b; scanf("%d.%d", &a,&b); printf("%d\n%d",a,b); return 0; } cs 입력시 "."으로 구분하여 정수부와 소수부를 구분합니다. 2차 풀이 실.. 공감수 0 댓글수 0 2022. 4. 18.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.