본문 바로가기

전체 글123

[블로그 개발 기록-3] 아마존 Lightsail 가상서버 SFTP 파일질라 연동 인스턴스의 SSH키 가져오기 아마존 Lightsail의 계정설정에서 SSH 키 설정을 가져올 수 있다. 우측 하단의 다운로드 키를 클릭하여 .pem 파일을 다운로드한다. 인스턴스 구성 및 Filezilla 연결 파일질라를 열어, 사이트 관리자 메뉴를 클릭한다. 새 사이트를 추가하고, 호스트에 해당 인스턴스의 고정 IP를 입력한다. linux ubuntu 사용자의 경우 사용자명에 ubuntu를 입력하고, 이전에 받은 pem 파일을 키 파일로 추가하면 된다. 이후 연결시, 아래와 같이 정상연동됨을 확인할 수 있다. Filezilla를 통해 대용량의 이미지 및 리소스 파일을 손쉽게 옮길 수 있다. 2021. 7. 13.
[블로그 개발 기록-2] Uwsgi + Flask(Python) + Nginx 이용한 가상서버 연동 Uwsgi / Flask / Nginx란? Uwsgi : 미들웨어 역할을 하는 웹 인터페이스 Flask : 파이썬 웹 어플리케이션 개발을 위한 경량 웹 프레임워크 Nginx : Apache와 같은 웹서버, 비동기 이벤트 기반의 웹서버로 프록시/리버스 프록시 등을 지원 패키지 설치 및 환경설정 $ pip install flask $ apt-get install uwsgi $ apt-get install nginx 먼저 flask / uwsgi / nginx를 pip/apt-get 이용하여 설치한다. Uwsgi 설정하기 uwsgi.ini 파일을 다음과 같이 설정해준다. [uwsgi] chdir = /home/ubuntu/BlooferBlog callable = app plugin = python3 modul.. 2021. 7. 13.
[블로그 개발 기록-1] 아마존 Lightsail 이용한 가상서버 호스팅 아마존 Lightsail의 요금 정책 블로그 개발을 다시 시작하게 되었다. 여러 국내외 가상서버 호스팅 업체를 비교하던 중, 지인의 추천으로 아마존 Lightsail을 사용해보기로 하였다. 아마존 Lightsail 가상서버의 과금정책은 아래와 같다. 보통 개인 개발블로그의 경우 비즈니스 페이지에 비해 트래픽이나 메모리 사용률이 그렇게 크지 않기 때문에 가장 저렴한 것을 사용한다. 나는 월 $3.5의 가장 저렴한 옵션을 선택하였다. 첫 1달은 과금이 무료라고 한다. 과금을 위해 카드번호 및 인적사항을 기록하여 가입하면, 이제 아마존 Lightsail 인스턴스를 생성할 수 있다. 아마존 Lightsail 인스턴스 생성 인스턴스를 생성하면 위와 같은 가상서버를 하나 할당받게 된다. 여기서 고정 IP를 생성하고.. 2021. 7. 13.
퍼징 템플릿 벡터(Fuzz Vectors) 퍼징 템플릿 벡터(Fuzz Vectors) 본 글의 퍼징 템플릿 벡터는 실제 퍼징 방법론에 사용되는 OWASP의 퍼즈 벡터 리소스를 참조합니다. 퍼즈 벡터(Fuzz Vectors)란? 다음의 퍼즈 벡터들은 ZAP Fuzzer에 사용되는 템플릿입니다. 퍼징은 매개변수 조작에 대한 프로그램의 응답을 테스트합니다. 퍼즈 벡터를 이용한 퍼징의 결과로 어플리케이션 프로그램에서 생성되는 일반적인 오류 조건을 찾을 수 있습니다. 퍼징의 분류 재귀 퍼징(Recursive fuzzing) 재귀 퍼징은 설정된 알파벳의 가능한 모든 조합을 반복하여 입력의 일부를 퍼징합니다. 아래의 예시를 보면, http://www.example.com/8302fa3b 설정된 16진수(0~f)는 재귀 퍼징 범위에 속합니다. 이렇게하면 총 1.. 2021. 6. 8.
퍼징(Fuzzing)이란 무엇인가? 퍼징(Fuzzing)이란? Fuzz 테스트(또는 퍼징)은 자동화 테스트로 기형/반기형적 데이터를 주입하여 소프트웨어 버그를 찾는 블랙박스 테스팅 기술입니다. 퍼징의 이해 간단한 예시 사용자가 0, 1, 2 숫자 중 하나를 선택하여 입력하는 프로그램을 가정하겠습니다. 이는 세 가지 실제 실행경로를 만듭니다. 하지만 3 또는 255를 전송하면, 정수는 정적크기 변수에 저장되기 때문에 전송되어질 수 있습니다. 기본 Switch-case가 안전하게 구현되지 않은 경우 프로그램이 전통적인 보안문제인 버퍼 오버플로우 등의 메모리 문제가 발생할 가능성이 내제합니다. 퍼징은 이러한 소프트웨어의 구현 결함을 자동으로 찾는 것이 목적입니다. 히스토리 Fuzz 테스트는 Barton Miller 교수와 학생들이 1989년 W.. 2021. 6. 6.
포맷스트링 공격(Format String Attack)이란? 포맷스트링 공격(Format String Attack)이란? 포맷스트링 공격은 프로그램에 입력된 문자열 데이터가 명령으로 해석될 때 발생합니다. 이러한 방식으로 공격자는 코드를 실행하거나 스택 메모리 일부를 읽거나 실행중인 프로그램에 Segmentation Fault를 발생시켜 시스템에 의도되지 않은 동작을 일으킬 수 있습니다. 포맷스트링의 3가지 개념 포맷 함수(Format Function) 프로그램 언어의 변수를 사람이 읽을 수 있는 문자열 형식으로 변환하는 printf, fprintf와 같은 ANSI C 함수입니다. 표1. 포맷 함수의 예시 Format function Description fprint Writes the printf to a file printf Output a formatted .. 2021. 5. 28.
[백준 1939] 중량제한 (C++) A. 문제설명 www.acmicpc.net/problem/1939 1939번: 중량제한 첫째 줄에 N, M(1≤M≤100,000)이 주어진다. 다음 M개의 줄에는 다리에 대한 정보를 나타내는 세 정수 A, B(1≤A, B≤N), C(1≤C≤1,000,000,000)가 주어진다. 이는 A번 섬과 B번 섬 사이에 중량제한이 C인 다리 www.acmicpc.net 문제에 대한 자세한 설명은 링크 참조 1. N(2≤N≤10,000)개의 섬으로 이루어진 나라가 있음 2. 이들 사이에는 M(1≤M≤100,000)개의 다리가 설치되어 차들이 다닐 수 있음 3. 그러나 다리에는 각각 중량제한이 있어 이를 넘는 차량은 다닐 수 없음 4. 섬들과 다리의 중량제한 정보가 주어졌을 때, 출발지에서 목적지로 한 번의 이동에서 .. 2021. 4. 18.
[백준 3079] 입국심사 (C++) A. 문제설명 www.acmicpc.net/problem/3079 3079번: 입국심사 첫째 줄에 N과 M이 주어진다. (1 ≤ N ≤ 100,000, 1 ≤ M ≤ 1,000,000,000) 다음 N개 줄에는 각 심사대에서 심사를 하는데 걸리는 시간인 Tk가 주어진다. (1 ≤ Tk ≤ 109) www.acmicpc.net 문제에 대한 자세한 설명은 링크 참조 1. 상근이와 친구들이 입국심사를 받음 2. 총 인원은 M명, 입국심사대는 N개 주어짐 3. 한 심사대에서는 한번에 한명씩 심사가 가능하며, 각 심사대는 심사소요 시간이 각각 다름 4. 각 인원별 심사 소요시간을 최소로 하여 총 심사 소요시간 중 최소가 되는 것을 구하라 B. 접근법 이분 탐색 먼저 문제의 조건을 확인하면, 주어진 메모리 제약과 .. 2021. 4. 13.
[백준 1525] 퍼즐 (C++) A. 문제설명 www.acmicpc.net/problem/1525 1525번: 퍼즐 세 줄에 걸쳐서 표에 채워져 있는 아홉 개의 수가 주어진다. 한 줄에 세 개의 수가 주어지며, 빈 칸은 0으로 나타낸다. www.acmicpc.net 문제에 대한 자세한 설명은 링크 참조 1. 3*3 퍼즐에 다음과 같이 수가 채워짐 1 2 3 4 5 6 7 8 2. 1~8까지 수가 주어지고 한 칸은 빈칸 3. 퍼즐의 초기 모양이 주어졌을 때, 위와 같이 정리된 상태를 만들기 위해 걸리는 이동 횟수를 구하라 B. 접근법 BFS + Map 자료구조 처음에 문제를 받아서 들었을 때, 퍼즐의 모양을 기록하여 BFS 탐사하는 방법을 생각하여 구현하였다. 하지만, 이 문제에서 주어진 메모리 제한은 32MB. 좀 더 효율적인 방법이 .. 2021. 4. 6.
[백준 9328] 열쇠 (C++) A. 문제설명 www.acmicpc.net/problem/9328 9328번: 열쇠 상근이는 1층 빌딩에 침입해 매우 중요한 문서를 훔쳐오려고 한다. 상근이가 가지고 있는 평면도에는 문서의 위치가 모두 나타나 있다. 빌딩의 문은 모두 잠겨있기 때문에, 문을 열려면 열쇠가 www.acmicpc.net 문제에 대한 자세한 설명은 링크 참조 1. 상근이는 빌딩에 침입해 문서를 훔치려고 함 2. 빌딩에는 문이 있고, 문을 열려면 해당 알파벳의 열쇠가 필요함 3. 열쇠는 주어지기도 하고, 주워서 얻을 수도 있음 4. 빌딩의 각 공간은 아래와 같은 규칙을 가짐 '.'는 빈 공간을 나타낸다. '*'는 벽을 나타내며, 상근이는 벽을 통과할 수 없다. '$'는 상근이가 훔쳐야하는 문서이다. 알파벳 대문자는 문을 나타낸다.. 2021. 3. 25.
[백준 1726] 로봇 (C++) A. 문제설명 www.acmicpc.net/problem/1726 1726번: 로봇 많은 공장에서 로봇이 이용되고 있다. 우리 월드 공장의 로봇은 바라보는 방향으로 궤도를 따라 움직이며, 움직이는 방향은 동, 서, 남, 북 가운데 하나이다. 로봇의 이동을 제어하는 명령어는 www.acmicpc.net 문제에 대한 자세한 설명은 링크 참조 1. 로봇이 궤도를 따라 움직이며 시작점에서 목적지로 이동 2. 로봇은 각각 한번의 명령마다 아래와 같이 이동할 수 있음 명령 1. Go k: k는 1, 2 또는 3일 수 있다. 현재 향하고 있는 방향으로 k칸 만큼 움직인다. 명령 2. Turn dir: dir은 left 또는 right 이며, 각각 왼쪽 또는 오른쪽으로 90° 회전한다. 3. 로봇의 현재 위치와 바라보.. 2021. 3. 23.
[백준 20056] 마법사 상어와 파이어볼 (C++) A. 문제설명 www.acmicpc.net/problem/20056 20056번: 마법사 상어와 파이어볼 첫째 줄에 N, M, K가 주어진다. 둘째 줄부터 M개의 줄에 파이어볼의 정보가 한 줄에 하나씩 주어진다. 파이어볼의 정보는 다섯 정수 ri, ci, mi, si, di로 이루어져 있다. 서로 다른 두 파이어볼의 위치 www.acmicpc.net 문제에 대한 자세한 설명은 링크 참조 1. N*N 크기의 배열에서 마법사 상어가 파이어볼을 발사 2. 각 파이어볼은 위치(r,c), 질량 m, 방향 d, 속력 s가 주어짐 3. 격자의 행과 열은 1번부터 N번까지 번호가 매겨져 있고, 1번 행은 N번과 연결되어 있고, 1번 열은 N번 열과 연결되어 있음 4. 파이어볼의 방향은 인접 8방향으로 이루어짐 5. 마.. 2021. 3. 11.
[백준 20055] 컨베이어 벨트 위의 로봇 (C++) A. 문제설명 www.acmicpc.net/problem/20055 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net 문제에 대한 자세한 설명은 링크 참조 1. 다음과 같은 형태의 컨베이어 벨트가 존재 2. 벨트는 1~2N의 위치로 시계방향으로 회전하며, 1번 위치에서 로봇이 탑승, N번 위치에서 로봇이 하차함 3. 컨베이어 벨트를 이용해 로봇을 한쪽에서 반대편으로 옮기려고 하는데, 다음의 규칙에 따라 이동함 1. 벨트가 한 칸 회전한다. 2. 가장 먼저 벨트에 올라간 로봇부터, 벨트가 회전.. 2021. 3. 9.
[프로그래머스 42888] 오픈채팅방 (C++) A. 문제설명 문제에 대한 자세한 설명은 링크 참조 programmers.co.kr/learn/courses/30/lessons/42888 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr 1. 카카오톡 오픈채팅방에서 사람들이 닉네임을 사용하여 대화를 한다. 2. 대화방에서 사람이 들어오거나 나가면 다음과 같은 메세지가 출력된다. "[닉네임]님이 들어왔습니다." "[닉네임]님이 나갔습니다." 3. 채팅방에서 닉네임을 변경할 수 있는데, 변경하는 방법은 아래 두가지이다. 채팅방을 나간 후, 새로운 닉네임으로 다시.. 2021. 2. 27.
[프로그래머스 64065] 튜플 (C++) A. 문제설명 문제에 대한 자세한 설명은 링크 참조 programmers.co.kr/learn/courses/30/lessons/64065 코딩테스트 연습 - 튜플 "{{2},{2,1},{2,1,3},{2,1,3,4}}" [2, 1, 3, 4] "{{1,2,3},{2,1},{1,2,4,3},{2}}" [2, 1, 3, 4] "{{4,2,3},{3},{2,3,4,1},{2,3}}" [3, 2, 4, 1] programmers.co.kr 1. 열거형의 특정 순서를 따르는 요소들의 모음을 튜플이라고 한다. 2. n개의 요소들을 가진 튜플을 n-튜플이라고 할 때, 아래와 같은 성질을 가진다. 중복된 원소가 있을 수 있습니다. ex : (2, 3, 1, 2) 원소에 정해진 순서가 있으며, 원소의 순서가 다르면 서.. 2021. 2. 21.