728x90
반응형

전체 글 110

안드로이드 APK 분석 (디컴파일링, 리버싱)

안드로이드 APK 분석 (디컴파일링, 리버싱) 1. 실행 파일 구조와 기계어 특징 1.1 실행 파일 구조 애플리케이션 실행 파일은 컴퓨터에서 실행되는 프로그램을 담고 있는 바이너리 파일입니다. 대부분의 운영 체제에서는 실행 파일이 특정한 형식을 따르며, 이 형식은 실행 파일의 구조를 결정합니다. 1.1.1 ELF(Executable and Linkable Format) 포맷 헤더(Header): ELF 파일의 기본 정보를 담고 있습니다. 헤더에는 섹션 및 프로그램 헤더 등이 포함됩니다. 섹션(Section): 코드, 데이터, BSS 등의 섹션으로 나누어진 부분입니다. 각 섹션은 특정한 유형의 데이터를 저장합니다. 프로그램 헤더(Program Header): 실행 시에 로드되는 정보를 포함합니다. 메모리에..

정보보안 2024.01.03

자주쓰는 정규표현식 예제 정리

-목차- 1. 이메일 주소 정규표현식 2. 전화번호 정규표현식 3. 주민등록번호 정규표현식 4. IPv4 주소 정규표현식 5. IPv6 주소 정규표현식 6. 신용카드 번호 정규표현식 (16자리) 7. 비밀번호 정규표현식 (영문, 숫자, 특수문자 조합, 8자 이상) 8. 사업자 등록번호 정규표현식 (10자리 또는 12자리) 9. 계좌번호 정규표현식 (국내 계좌번호 11~14자리) 10. 비트코인 주소 정규표현식 11. 이더리움 주소 정규표현식 12. 트론 주소 정규표현식 13. 리플 주소 정규표현식 이메일 주소 정규표현식 ^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$ 전화번호 정규표현식 (국내 010-1234-5678 형식) ^\d{3}-\d{4}-\d{4}$ 주민..

개발 2023.12.23

Flask 앱 배포 체크리스트

Flask 앱 배포 체크리스트 1. 서버 호스팅 및 인프라스트럭처 설정 서버 호스팅 선택 Flask 애플리케이션을 호스팅할 환경을 선택하는 것은 중요한 결정입니다. 대표적인 옵션은 클라우드 서비스와 VPS입니다. 클라우드 서비스 (AWS, Azure, Google Cloud)는 확장성이 뛰어나며 필요한 리소스를 동적으로 조절할 수 있습니다. 서버 크기와 리소스를 애플리케이션 요구 사항에 따라 선택하세요. VPS (가상 사설 서버)는 물리적 서버에서 독립적인 환경을 제공하며 상대적으로 저렴합니다. 간단한 웹 앱을 호스팅하기에 적합할 수 있습니다. SSH 접속 및 키 생성 서버에 원격으로 접속하기 위해서는 SSH (Secure Shell) 키를 생성해야 합니다. 이를 통해 보안적으로 접속할 수 있습니다. 로..

개발 2023.09.27

플라스크(Flask) 예제로 정리

1. 플라스크 설치 pip3 install Flask Flask를 사용하려면 먼저 Python을 설치해야 합니다. 그런 다음, 가상 환경을 설정하고 Flask를 설치합니다. virtualenv 또는 venv을 사용하여 프로젝트별로 환경을 격리시키는 것이 좋습니다. 2. 프로젝트 구조 프로젝트 디렉토리는 다음과 같은 구조를 가집니다. myapp/ ├── app.py ├── templates/ │ ├── index.html │ └── ... ├── static/ │ ├── style.css │ └── ... └── ... Flask 애플리케이션은 보통 하나의 파일로 시작하며, 나중에는 프로젝트가 커지면 여러 파일로 분리하는 것이 일반적입니다. 기본적으로 app.py 또는 application.py로 시작하는..

개발 2023.09.14

깃허브 명령어

# 저장소 생성 및 연결 # - git init: 새로운 Git 저장소 생성 # - git remote add origin [GitHub 저장소 URL]: 로컬 저장소를 원격 GitHub 저장소에 연결 # - git branch -m master main: 기본 브랜치 이름을 "master"에서 "main"으로 변경 git init git remote add origin [GitHub 저장소 URL] git branch -m master main # 파일 업로드 # - git pull (또는 git pull origin main): 원격 저장소에서 변경 사항을 가져옴 # - git add .: 변경된 파일 스테이징 # - git commit -m "커밋 메시지": 변경 사항을 커밋 # - git push..

개발 2023.09.14

[드림핵] Basic_Crypto1

Basic_Crypto1 이 문제는 로마 황제 암호(Roman emperor’s cipher)를 해독하는 문제입니다. 주어진 암호문 "EDVLF FUBSWR GUHDPKDFN"을 해독하여 "DH{decode_Text}"로 변환해야 합니다. 암호문은 알파벳 대문자와 공백으로 이루어져 있으며, 해독 과정에서 알파벳 대문자를 그대로 사용하고 공백은 "_"로 대체합니다. 로마 황제 암호(Roman emperor’s cipher) 로마 황제 암호는 알파벳을 암호화하는 간단한 치환 암호입니다. 각 알파벳을 암호화하기 위해 알파벳의 아스키 코드 값을 사용하며, 암호화에는 아스키 코드 값에서 3을 뺀 후 알파벳으로 변환하는 방식을 사용합니다. 이때, 알파벳이 A보다 작은 경우, 즉 아스키 코드 값이 65 미만인 경우에..

CTF 풀이 2023.05.28

[정보보안기사] 정보보호 개요

정보보호 개요 정보보호의 정의, 목표 및 기본용어 정리는 정보보안기사 시험에서 출제빈도가 높은 중요한 부분으로 꼽힙니다. 정보보호는 현대 사회에서 점점 더 중요성을 갖는 주제로, 기밀성, 무결성, 가용성을 유지하며 정보 자산을 보호하는 활동입니다. 이를 통해 조직은 정보에 대한 불법적인 액세스, 변경, 파괴 또는 중단으로부터 보호될 수 있습니다. -목차- 1. 정보보호 목표 2. 정보보호 대책 3. OSI 보안 구조 4. 기본 보안용어 정의 1. 정보보호 목표 정보보호 목표는 기존 CIA(기밀성, 무결성, 가용성) 세 가지에 요즘은 인증성, 책임추적성이 추가된 5가지로 구분합니다. 이러한 목표를 달성하기 위해 다양한 보안 메커니즘과 정책, 절차, 기술을 적용합니다. 이를 통해 조직은 정보 자산을 안전하게..

정보보안 2023.05.24

[드림핵] cpp-type-confusion

cpp-type-confusion -목차- 1. 개념정리 2. 풀이 1. 개념정리 "Type confusion"은 C++에서 발생할 수 있는 오류 중 하나로, 프로그램이 메모리를 잘못 사용하여 예상하지 않은 결과를 만드는 것을 말합니다. 이러한 오류는 주로 포인터 형식이나 참조 형식을 사용할 때 발생합니다. 예를들어, 다음과 같은 코드가 있다고 가정해 봅시다. void foo(int* p) { *p = 10; } int main() { double d = 3.14; foo((int*)&d); // type confusion! return 0; } foo 함수는 int 포인터를 인자로 받아서 해당 포인터가 가리키는 메모리에 10을 저장합니다. 그러나 main 함수에서는 double 변수 d의 주소를 int..

CTF 풀이 2023.05.12

[MAC] M1 실리콘 맥북에 윈도우11 설치(VMware Fusion13)

[MAC] M1 실리콘 맥북에 윈도우11 설치(VMware Fusion13) 1. VMware Fusion 다운로드 및 설치 https://www.vmware.com/kr/products/fusion/fusion-evaluation.html Download VMware Fusion | VMware Fusion 13 Player and Fusion 13 Pro are the best way to run Windows, Linux and more on the latest Macs, and the ultimate development and testing utility. Discover why. www.vmware.com 여기서 계정만들고 다운하면 됩니다. 2. Windows 11 클라이언트 ARM64 Ins..

리눅스 2023.04.06

모의해킹 기술면접 준비

면접 전 알아야 할 내용 * 사용자가 브라우저를 통해 웹사이트에 접속하는 과정 이해 - Proxy 개념 및 이해 - Request와 Resopose // Server와 Clinet 사용자가 브라우저를 통해 웹사이트에 접속하는 과정은 다음과 같습니다. 사용자가 웹 브라우저에 웹 사이트의 URL을 입력합니다. 브라우저는 URL을 해석하여 해당 웹 사이트의 IP 주소를 찾습니다. 이때, DNS 서버를 통해 IP 주소를 찾을 수 있습니다. 브라우저는 찾은 IP 주소로 HTTP 요청을 보냅니다. 해당 IP 주소를 가진 서버는 요청을 받고, 요청에 대한 적절한 응답을 생성합니다. 서버는 응답을 클라이언트(브라우저)로 보냅니다. 브라우저는 응답을 받아 화면에 출력합니다. Proxy는 클라이언트와 서버 사이에 위치하여..

정보보안 2023.04.06
728x90
반응형