본문 바로가기

전체 글193

[ C ] 동적할당 malloc(), free() 2021. 12. 29.
[ ft_printf ] 1. printf # printf - C언어의 표준 출력 함수 - 여러 종류의 데이터를 각 서식에 맞게 출력할 수 있다. - 원형 # include int printf(const char *format, ...); > format에 쓰여진 데이터를 ...(서식지정자)의 형식으로 출력한다. - 서식 지정자 (format specifier) : 서식 지정자를 통해 printf()로 출력할 데이터의 서식을 지정할 수 있다. 서식 지정자 출력 데이터 서식 지정자 출력 데이터 %c 하나의 character %x 부호 없는 16진 정수 (소문자) %s 문자열 %X 부호 없는 16진 정수 (대문자) %d 부호 있는 10진 정수 %% 퍼센트(%) 기호 %i 부호 있는 10진 정수 %e 실수 (e-표기법) %u 부호 없는 10진 정수 %.. 2021. 12. 29.
기타 인젝션 # iframe 인젝션 * iframe - HTML 페이지 안에서 또 다른 HTML 페이지를 보여주는 태그 - 어떤 제한 없이 다른 페이지를 해당 웹페이지 안에 불러와 삽입할 수 있다. # OS Command 인젝션 - 시스템 명령어를 쿼리문에 주입하여 취약한 변수를 통해 서버 운영체제에 접근하는 공격 # PHP Code 인젝션 # SSI 인젝션 2021. 12. 24.
HTML 인젝션 (비박스 환경을 활용한 웹 모의해킹 완벽 실습) # 인젝션 : 공격자가 악의적으로 주입한 데이터를 웹 애플리케이션에서 데이터베이스의 정상적인 쿼리 일부로 인식하고 실행할 때 발생하는 취약점 - 데이터를 입력받거나 데이터베이스 정보를 요청하는 곳에서 공격이 가능하다. # HTML - Hyper Text Markup Language, HTML - 웹 페이지를 만드는 데 사용하는 언어 - 제목, 단락, 목록 등과 같은 본문을 위한 구조적 의미를 나타내는 것뿐만 아니라 링크, 인용과 그 밖의 항목으로 구조적 문서를 만들 수 있는 방법을 제공 # HTML 인젝션 - 반사(GET) - 취약한 매개변수에 악의적인 HTML 코드를 삽입하는 공격 - HTML 태그로 악의적인 사이트에 연결하거나 악성 파일을 다운로드 하도록 유도 # HTML 인젝션 - 반사(POST) .. 2021. 12. 23.
[ printf ] 0. 문제 이해하기 - libc의 printf 직접 구현하기 - 성공적인 ft_printf는 체계적이고 확장성있는 코드입니다. - 사용 가능한 외부 함수 malloc : void *malloc(size_t size); : size 바이트의 메모리를 힙에서 할당하여 반환 free : void free(void *ptr); : ptr이 가르키는 메모리를 해제 write : size_t write(int fd, const void *buf, size_t n); : open()함수로 연 파일에 쓸 수 있게 함 va_start : ** va_arg : ** va_copy : ** va_end : ** ** 가변인자(variadic arguments)를 사용하는 방법을 배워봅시다. > 가변인자 : 매번 함수에 들어가는 인수의 개수가 .. 2021. 12. 23.
[ GNL ] 04. 선행지식_read() 함수 # read() ssize_t read (int fd, void *buf, size_t len) read() 시스템 콜은 파일의 끝(EOF)를 알려주기 위해 0을 반환합니다. 파일에 읽은 바이트가 더 이상 없을 경우에 해당하며 에러로 처리되지는 않습니다. 다만, 파일을 읽을 데이터가 더 이상 없을 뿐임을 알려주는 것 # 시스템 콜 + 운영체제는 커널 모드(Kernel Mode)와 사용자 모드(User Mode)로 나뉘어 구동 + 운영체제에서 프로그램이 구동되는데 있어 파일을 읽어 오거나, 파일을 쓰거나, 혹은 화면에 메시지를 출력하는 등 많은 부분이 커널 모드를 사용한다. 시스템 콜은 이러한 커널 영역의 기능을 사용자 모드가 사용 가능하게, 즉 프로세스가 하드웨어에 직접 접근해서 필요한 기능을 사용할 수.. 2021. 11. 3.
[ GNL ] 03. 선행지식_정적변수(Static) # 정적변수 (static) + 변수 자료형 앞에 static을 붙여서 선언한다. + 중괄호 내부에서 읽힐때 메모리 생성되고 프로그램이 종료되면 메모리 소멸한다. + 전역변수처럼 프로그램이 종료되기전까지 메모리가 소멸되지 않으며, 특별히 초기값을 지정하지 않아도 0으로 자동 초기화된다. + 상수로만 초기화할 수 있다. + 함수가 끝나도 값을 유지할 수 있다. + 하지만 다른 함수에서 해당 변수의 값에 접근할 수 없다. + stack이 아닌 데이터 부분에 메모리가 할당된다. # 지역변수 + 중괄호 내부, 함수의 매개변수에서 사용되는 변수 + 중괄호 밖, 함수의 외부에서는 무효화된다. + 변수의 이름이 같아도 다른 함수에 존재하고 있으면 다른 변수이다. + 다른 함수의 지역 변수에 접근할 수 없다. + 초가.. 2021. 11. 3.
[ GNL ] 02. 선행지식_파일 디스크립터 # 파일 디스크립터 (fd, file descriptor) + Unix OS 계열의 시스템에서 프로세스가 파일을 다룰 때 사용하는 개념. + 특정 파일에 접근할 때 사용하는 추상적인 값 + 파일 디스크립터는 일반적으로 0이 아닌 정수값을 가진다. + 유닉스 시스템에서는 정규파일, 디렉토리, 소켓, 파이프, 블록 디바이스, 캐릭터 디바이스 등 모든 객체를 파일로 관리한다. 프로세스가 실행 중에 파일을 open하면 커널은 해당 프로세스의 파일 디스크립터 숫자 중 사용하지 않는 가장 작은 값을 할당. 그 다음 프로세스가 열려있는 파일에 시스템 콜을 이용해서 접근할 때, 파일 디스크립터(FD)값을 이용해서 파일을 지칭할 수 있다. + 프로세스에서 열린 파일의 목록을 관리하는 (FD)테이블의 인덱스 - FD테이블.. 2021. 10. 31.
[ GNL ] 01. 과제 이해하기 + fd에서 한 줄을 읽는 것은 너무나도 지루하다(tedious). + 파일 디스크립터로부터 읽혀진, 개행으로 끝나는 한 줄을 반환하는 함수를 만들자. + main이 되는 함수는 프로젝트의 이름을 딴 get_next_line 프로토타입 : char *get_next_line(int fd); 매개변수 : 읽어들일 파일의 디스크립터 반환값 : 1) 읽혀진 라인 - 한 줄이 제대로 읽혔을 때, 2) NULL - 읽을 라인이 더이상 없거나 에러 발생시. 파일 디스크립터로부터 한 줄을 읽고 반환하는 함수 + get_next_line 함수를 반복문 안에서 호출하면 파일 디스크립터에 존재하는 텍스트를 EOF전까지 한 번에 한 줄씩 읽어 들일 수 있다. + 방금 읽어들인 문자열 한줄을 반환하되 더 이상 읽어들일 것이 .. 2021. 10. 31.