레인보우 테이블
·
Hack&Dev/암호학
🔐 1. 해시(Hash) 값이란?1.1 개념 정의해시(Hash)란 임의의 길이를 가진 데이터를 고정된 길이의 문자열로 변환하는 암호학적 함수이다.결과로 생성된 문자열을 해시 값(Hash Value) 또는 다이제스트(Digest)라고 부른다. 1.2 특징단방향성(One-way)원래의 데이터를 해시 값으로 변환하는 것은 쉽지만,해시 값으로부터 원래 데이터를 역산하는 것은 거의 불가능하다.충돌 저항성(Collision Resistance)서로 다른 두 입력값이 같은 해시 값을 가지지 않도록 한다.변경 민감성(Avalanche Effect)입력값이 조금만 바뀌어도 해시 값은 크게 바뀐다. 1.3 주요 해시 알고리즘MD5128비트 해시 값을 생성. 현재는 보안 취약성으로 인해 잘 사용되지 않음.SHA-116..
CURL 이란?
·
Hack&Dev/Web
1. CURL 명령어 옵션 정리1.1 CURL 기본 사용법curl [옵션] [URL]curl은 다양한 프로토콜(HTTP, HTTPS, FTP 등)을 지원하는 데이터 전송 도구로, API 요청, 웹 데이터 가져오기, 파일 다운로드 등에 활용된다.  1.2 주요 옵션 정리1.2.1 기본 HTTP 요청 관련 옵션-X HTTP 요청 방법 지정 (GET, POST, PUT, DELETE 등)-H ": "HTTP 요청 헤더 추가-d ""HTTP 요청 본문 데이터 전송 (POST, PUT 요청에서 사용)-F "="폼 데이터 전송 (파일 업로드 등)-G쿼리 스트링(?key=value)을 사용하여 GET 요청 1.2.2 파일 다운로드 및 저장 옵션-o 응답 데이터를 지정한 파일명으로 저장-O응답 데이터를 서버의 원래 파..
PHP - STRCMP [DREAMHCK] wargame.kr strcmp
·
Hack&Dev/Web
1. PHP strcmp() 함수의 취약점 분석 (배열 이용)PHP 7이하의 버전에서 취약함1.1 개요PHP의 strcmp() 함수는 문자열을 비교하는 함수로, 두 개의 문자열이 동일하면 0을 반환하고, 다르면 음수 또는 양수를 반환한다.하지만, 예상치 못한 데이터 타입(예: 배열)이 들어갈 경우 strcmp()의 동작이 비정상적으로 수행되며, 보안 취약점이 발생할 수 있다.  1.2 strcmp()의 기본 동작PHP에서 strcmp()는 다음과 같이 동작한다.위 코드에서 strcmp("hello", "hello")의 결과가 0이므로, 이를 if 조건문에서 사용하면 FALSE로 평가된다.  1.3 배열을 넣을 경우 발생하는 문제PHP의 strcmp()는 두 개의 문자열을 비교해야 하지만, 배열을 넣으면 ..
INFORMATION_SCHEMA
·
Hack&Dev/Web
1. INFORMATION_SCHEMA란?INFORMATION_SCHEMA는 데이터베이스의 메타데이터(구조 정보)를 조회할 수 있도록 제공하는 가상 시스템 데이터베이스이다.이는 SQL 표준에서 정의된 정보 저장소이며, 대부분의 관계형 데이터베이스 관리 시스템(RDBMS)에서 지원된다.사용자는 INFORMATION_SCHEMA를 활용하여 테이블, 컬럼, 인덱스, 제약 조건 등 데이터베이스의 구조적 정보를 조회할 수 있다. 1.1 주요 테이블 및 설명1.1.1 TABLES데이터베이스 내의 테이블 목록을 확인할 수 있는 뷰이다.주요 컬럼:TABLE_SCHEMA : 테이블이 속한 데이터베이스(스키마) 이름TABLE_NAME : 테이블 이름TABLE_TYPE : 테이블 유형 (BASE TABLE, VIEW 등)E..
call → ret 과정
·
Hack&Dev/Pwnable
1. 함수 호출 과정 (CALL 명령부터 RET까지)어셈블리에서 CALL 명령어를 실행하면 함수가 호출되고, RET 명령어를 실행하면 호출한 함수로 돌아가는 방식으로 함수 호출이 이루어진다.함수 호출 과정에서 스택을 활용하여 호출자의 실행 상태를 저장하고, 함수가 종료될 때 이를 복원하는 과정이 필요하다. 1.1 CALL 명령어 실행CALL 명령어는 함수를 호출하는 역할을 한다. 실행되면 다음 과정이 수행된다. 1.1.1 현재 명령어의 반환 주소 저장CALL 명령어를 실행하면, 현재 RIP(Instruction Pointer) 레지스터에 저장된 다음 명령어 주소 (함수 호출 직후 실행될 명령어의 주소)가 스택에 저장된다.즉, CALL이 실행된 후 돌아올 위치를 저장해야 RET 명령어 실행 시 정상적으로 ..
img 태그의 src 속성과 자동 GET 요청 [Dreamhack csrf-1 참고]
·
Hack&Dev/Web
1. 개요HTML의 태그는 웹 페이지에 이미지를 삽입하기 위해 사용되며, src 속성을 통해 불러올 이미지의 URL을 지정한다.이 과정에서 브라우저는 src 속성에 지정된 URL로 자동으로 GET 요청을 보낸다. 2. src 속성의 동작 방식사용자가 태그를 포함한 HTML 문서를 요청하면, 브라우저는 해당 문서를 파싱하면서 img 태그를 발견한다.src 속성에 지정된 URL이 유효하면, 브라우저는 자동으로 해당 URL에 대한 HTTP GET 요청을 보낸다.웹 서버는 요청을 처리하고, 응답으로 이미지 파일을 반환하면 브라우저가 이를 다운로드하여 페이지에 표시한다.2.1 예제 코드위 코드가 실행되면 브라우저는 https://example.com/image.jpg에 대해 자동으로 GET 요청을 보낸다.요청..
SSRF(Server-Side Request Forgery)와 우회 기법 (Dreamhack SSRF 문제 curling 기준)
·
Hack&Dev/Web
1. SSRF 개요SSRF(Server-Side Request Forgery)는 공격자가 서버 측에서 요청을 보내도록 유도하여 내부 네트워크 자원에 접근하거나 외부 요청을 조작하는 취약점이다.일반적으로 방화벽 뒤에 있는 내부 시스템을 공격하는 데 사용되며, 종종 클라우드 인프라의 메타데이터 서비스 (AWS EC2, Google Cloud 등)에 접근하는 데 악용된다.본 문서는 Dreamhack의 "curling" 문제를 기반으로 SSRF 취약점과 그 우회 기법, 방어 기법을 설명한다. 2. 특정 도메인 필터링을 우회하는 기법개발자는 /api/v1/test/curl 엔드포인트를 구현할 때 특정 도메인(example.com, tools.example.com)만 요청을 보낼 수 있도록 필터링을 적용하였다.그러..
Flask 디버그 모드에서의 LFI(Local File Inclusion) 및 PIN 탈취 취약점
·
Hack&Dev/Web
1. Flask 디버그 모드와 PIN 개요디버그 모드는 개발자가 실시간으로 애플리케이션의 변경 사항을 반영하고, 오류가 발생했을 때 문제를 쉽게 분석할 수 있도록 돕는다.디버그 모드를 활성화하면 다음과 같은 기능이 제공된다:자동 리로드(Automatic Reloading)소스 코드가 변경되면 서버가 자동으로 다시 실행되어 개발 속도를 높인다.인터랙티브 디버거(Interactive Debugger)오류가 발생하면 Werkzeug Interactive Debugger가 실행되며, 개발자가 애플리케이션 내부 상태를 분석하고 명령어를 실행할 수 있다.추적 로그(Traceback Logs)애플리케이션에서 발생하는 오류를 상세한 스택 트레이스(Stack Trace)와 함께 제공한다.  1.1 PIN(Personal..
TXT 레코드란?
·
Hack&Dev/Web
1. TXT 레코드란?TXT(텍스트) 레코드는 DNS(Domain Name System)에서 도메인과 관련된 특정 정보를 저장하는 레코드 유형이다.주로 인증, 보안, 설명 등의 목적으로 사용된다. 1.1 TXT 레코드의 주요 기능1.1.1 도메인 인증SPF(Sender Policy Framework)이메일 스푸핑(spoofing)을 방지하기 위해 특정 메일 서버만이 해당 도메인의 이메일을 보낼 수 있도록 지정한다.DKIM(DomainKeys Identified Mail)이메일에 전자 서명을 추가하여 위변조를 방지한다.DMARC(Domain-based Message Authentication, Reporting & Conformance)SPF 및 DKIM 정책을 조합하여 이메일 인증 정책을 정의하고, 부정..