curl❓ curl 명령어는 다양한 네트워크 프로토콜을 사용하여 데이터를 전송하고 받는 목적으로 사용되는 커맨드 라인 도구이며 URL을 사용하여 웹 서버와 통신하고, 데이터를 다운로드하거나 업로드하며, 여러 프로토콜을 지원한다. 예를들어 자바스크립트 환경에서 REST API(http)를 테스트하고싶다면 보통 ajax, fetch 를 이용해 요청을 보내는 것과 같이, SHELL(커맨드라인 환경)에서 REST API(http) 테스트 하고 싶으면 curl 명령어를 이용하면 된다 라고 이해하면 된다. HTTP / HTTPS / FTP / LDAP / SCP / TELNET / SMTP / POP3 등 다양하고 주요한 프로토콜을 지원하며 Linux/Unix 계열 및 Windows 등 주요한 OS 에서 구동되므로..
Gobuster❓ Gobuster는 웹 애플리케이션 또는 웹 서버에서 숨겨진 디렉토리 및 파일을 발견하기 위한 오픈 소스 보안 도구 중 하나다. 이 도구는 디렉토리 및 파일 이름을 브루트 포스 (Brute Force) 방식으로 검색하여 웹 서버의 취약한 지점을 탐지하는 데 사용되고 Gobuster는 주로 웹 애플리케이션 취약점 분석, 보안 테스팅, 해킹, 펜 테스트 등과 관련된 작업에서 활용된다. 디렉토리 및 파일 브루트 포스: Gobuster는 웹 서버에 대한 디렉토리 및 파일 이름을 브루트 포스 공격을 통해 탐색한다. 이를 통해 숨겨진 페이지나 디렉토리를 찾거나 웹 애플리케이션의 취약한 지점을 식별할 수 있다. 다양한 디렉토리 및 파일 목록: Gobuster는 사용자 지정 디렉토리 및 파일 목록을 통..
OSINT❓ OSINT (Open Source Intelligence)는 공개된 소스에서 정보를 수집하고 분석하는 정보 수집 및 분석 기술 및 활동을 의미하며 이것은 정보 수집을 위한 여러 다양한 소스와 기술을 활용하여 정보를 얻는 방법론 및 접근법을 나타낸다. OSINT는 주로 정보 수집 및 분석의 전문가, 보안 전문가, 조사관, 군사 및 정부 기관 등에 의해 사용되며, 다음과 같은 목적으로 활용된다 Passive OSINT(최초 정보 수집) - 목표 대상에 대한 정보를 수집하기 위해 가능한 최소한의 상호작용을 하는 단계, 정보 수집자가 직접 타겟을 조사하거나 대상과 직접 상호 작용하지 않고 오픈 소스 정보를 수집하는 방식이다. - 직접 목표 대상에게 접근하지 않고 제3자로부터 정보 수집 - 방법: 온..
전처리기❓ C 언어의 전처리기(Preprocessor)는 코드 컴파일 이전에 소스 코드에 대한 특별한 처리를 수행하는 역할을 한다 주로 # 기호를 사용하여 전처리 지시문을 정의하고 전처리기에게 명령을 내리는데 아래에 C 언어의 전처리 지시문과 예시 코드를 살펴보자 예시코드 헤더 파일 포함 (Include) #include 이 지시문은 헤더 파일을 현재 소스 파일에 포함시키며 표준 입력/출력 함수인 printf와 관련된 정의를 제공한다. 매크로 정의 (Define) #define MAX_VALUE 100 이 지시문은 MAX_VALUE를 100으로 정의하며 이후 코드에서 MAX_VALUE를 사용하면 컴파일러는 이를 100으로 대체한다. 조건부 컴파일 (Conditional Compilation) #ifdef..
adb❓ ADB(Andriod Debug Bridge)는 안드로이드 디바이스와 컴퓨터 간의 통신을 지원하는 커맨드 라인 도구이다. ADB를 사용하면 안드로이드 디바이스를 관리하고 디버깅, 설치, 파일 전송, 로그 분석, 포트 포워딩 및 다양한 디바이스 관련 작업을 수행할 수 있다. ADB는 안드로이드 애플리케이션 개발 및 디바이스 관리에 필수적인 도구 중 하나이다. adb 주요 기능 애플리케이션 설치 및 제거: ADB를 사용하여 안드로이드 애플리케이션(APK 파일)을 설치하거나 제거할 수 있다. 애플리케이션 디버깅: ADB를 통해 안드로이드 디바이스에서 애플리케이션을 디버깅하고 로그를 확인할 수 있다. 파일 관리: 파일을 디바이스로 복사하거나 디바이스에서 파일을 가져올 수 있다. 스크린샷 및 화면 녹화:..
메모리 덤프❓ 메모리 덤프(Memory Dump)는 컴퓨터 시스템의 현재 메모리 상태를 파일로 저장하는 프로세스나 결과물을 가리키는 용어이다. 디버깅(Debugging): 프로그램이 충돌하거나 예상치 못한 오류가 발생할 때, 메모리 덤프를 생성하여 오류 발생 시점의 메모리 상태를 분석할 수 있다. 이를 통해 오류 원인을 식별하고 수정할 수 있다. 보안 분석(Security Analysis): 해킹 공격이나 악성 코드 분석을 위해 시스템의 메모리 덤프를 생성한다. 이를 통해 공격자의 활동을 추적하거나 악성 코드의 작동 방식을 이해할 수 있다. 성능 분석(Performance Analysis): 프로그램이나 시스템의 성능 문제를 해결하기 위해 메모리 덤프를 생성하여 메모리 누수나 자원 소비에 대한 정보를 얻..
Node.js ❓ Node.js는 JavaScript 런타임 환경(Runtime Environment)으로서, 서버 측 애플리케이션 개발을 위해 설계된 오픈 소스 플랫폼이다. Node.js는 Google Chrome의 JavaScript 엔진인 V8 엔진을 기반으로 구축되었으며, 비동기식 이벤트 주도 프로그래밍(Asynchronous Event-Driven Programming)을 지원하여 빠른 네트워크 애플리케이션 개발을 가능하게 한다. 비동기식 프로그래밍: Node.js는 비동기식 I/O 작업을 처리하기 위해 설계되었다. 이것은 여러 작업을 동시에 처리하고 응답 시간을 최적화하는 데 도움이 된다. Callbacks, Promises, Async/Await 등을 사용하여 비동기 코드를 작성할 수 있다...
바인딩❓ SQL 쿼리나 프로그래밍 언어와 데이터베이스 사이의 상호작용에서 사용되는 개념이다. 데이터베이스 바인딩은 쿼리나 명령어에 데이터 값을 동적으로 제공하기 위한 메커니즘을 가리킨다. 바인딩을 사용하면 보안성을 높일 수 있고 SQL 인젝션 공격과 같은 보안 문제를 방지할 수 있다. 매개 변수 바인딩 (Parameter Binding): 이것은 주로 SQL 쿼리에 사용된다. 매개 변수 바인딩은 SQL 쿼리에서 사용되는 변수를 외부에서 제공된 값으로 채우는 프로세스를 나타낸다. 이렇게 하면 SQL 쿼리가 사용자나 외부 입력으로부터 값에 노출되는 것을 방지할 수 있으며, SQL 인젝션 공격을 막을 수 있다. 대부분의 데이터베이스 시스템은 매개 변수 바인딩을 지원하며, 이를 통해 쿼리 실행 시 데이터 값을 ..
npm ❓ npm은 Node Package Manager의 약자로, JavaScript 프로그래밍 언어를 위한 패키지 관리자이다. npm은 JavaScript 개발자가 다른 개발자가 작성한 코드, 라이브러리, 프레임워크 및 도구를 쉽게 다운로드하고 프로젝트에 추가하는 데 사용된다. 이를 통해 개발자는 자신의 프로젝트에서 다른 개발자가 개발한 코드를 재사용할 수 있으며, 코드를 더 빠르고 효율적으로 작성할 수 있다. npm은 주로 Node.js 환경에서 사용되며, Node.js는 JavaScript를 서버 측에서 실행하기 위한 런타임 환경이다. 따라서 JavaScript를 사용하여 서버 측 애플리케이션을 개발하는 경우 npm은 필수 도구 중 하나이다. 패키지 설치: npm을 사용하여 다른 개발자가 작성한 ..
***이 글은 해외 글을 번역하여 쓰였으며 해당 글은 특정 웹서비스(storyblocks) 아키텍처 구성을 통해 기초 개념을 제공한다.*** 사용자가 구글에서 "Strong Beautiful Fog And Sunbeams In The Forest"를 검색한다. 사용자가 첫 번째 검색 결과로 이동하려고 클릭한다. 브라우저 내부에서 DNS 서버에 Storyblocks 사이트에 어떻게 접속해야 하는지 물어보고 Storyblocks에 접근을 시도한다. 브라우저 요청은 Storyblocks 측의 로드 밸런서에 도착하고, 랜덤하게 선택된 서버에서 요청을 처리한다. 웹 서버는 이미지 정보를 캐싱 서비스에서 가져온 후 필요한 정보를 데이터베이스에 요청한다. 사용자에게 전달된 이미지의 컬러 프로필이 아직 생성되지 않았다..