728x90
반응형

전체 글 112

[드림핵] php-1 풀이 (+LFI치트시트)

이번 문제에서는 PHP로 작성된 Back Office 서비스에서 발생하는 Local File Inclusion (LFI) 취약점을 이용하여 /var/www/uploads/flag.php 파일에 위치한 플래그를 획득하는 것이 목표입니다. LFI 취약점이란? LFI(Local File Inclusion) 취약점은 웹 브라우저를 통해 서버에 파일을 포함시키는 과정입니다. 이 취약점은 웹 어플리케이션에서 사용자 입력값을 적절하게 필터링하지 않아 디렉토리 변경 명령어들의 삽입을 허용했을 때 일어납니다. php-1 풀이 1. /index.php PHP Back Office 서비스의 메인 페이지해당 HTML 코드는 PHP Back Office 서비스의 메인 페이지를 나타냅니다. 여기서 중요한 부분은 다음과 같습니다...

드림핵 2024.02.01

해커용 검색엔진 : 쇼단 (shodan.io) 명령어 모음

Shodan은 심층적인 디지털 탐색 및 해킹 커뮤니티에서 폭넓게 사용되는 검색 엔진으로, 글로벌 네트워크 상에 연결된 모든 장치와 서버의 민감한 정보를 제공합니다. 이 독특한 플랫폼은 취약한 시스템 식별, 보안 취약점 평가, 그리고 해킹 활동에 활용되며, 전 세계적으로 디지털 보안 전문가들에게 핵심적인 역할을 하고 있습니다. 주소 : shodan.io 일반 all 모든 결과 asn 자체 표기된 자동화 시스템 네트워크 (ASN) city 도시 country 국가 cpe 공통 플랫폼 엔트리 (CPE) device 기기 geo 지리적 위치 has_ipv6 IPv6 지원 여부 has_screenshot 스크린샷 여부 has_ssl SSL 지원 여부 has_vuln 취약점 여부 hash 해시값 hostname 호..

정보보안 2024.01.20

안드로이드 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 미만인 경우에..

드림핵 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..

드림핵 2023.05.12
728x90
반응형