본문 바로가기

728x90
반응형

sql

[PortSwigger] XML 인코딩을 이용한 필터 우회 SQL Injection (WAF Bypass) 1. 개요 (Overview)공격 유형: XML 인코딩 기반 WAF 우회 SQL 인젝션 (SQLi with XML Encoding / WAF Bypass)목표: 웹 방화벽(WAF)의 키워드 필터링을 Hackvertor의 XML 엔티티(Hex Entities) 인코딩으로 우회하여, 재고 조회 기능에서 users 테이블의 administrator 비밀번호를 탈취한다.이번 실습은 입력값에 대한 기본 필터링이나 WAF가 적용되어 있어 일반적인 SQLi 구문이 차단될 때, 백엔드 XML 파서(Parser)의 특성을 이용해 방화벽을 우회하는 고급 공격 기법입니다. 2. 취약점 분석 (Vulnerability Analysis)웹 애플리케이션이 데이터를 주고받을 때 XML 형식을 사용하는 경우 발생하는 취약점입니다.W.. 더보기
[PortSwigger] Blind SQL Injection with Time Delays and Information Retrieval - 시간 지연 기반 데이터 탈취 1. 개요 (Overview)공격 유형: 시간 지연 기반 블라인드 SQL 인젝션 (Time-Based Blind SQL Injection)목표: 화면에 어떠한 반응이나 에러 메시지도 출력되지 않는 환경에서, 세미콜론(; / %3B)으로 연결한 조건부 시간 지연 구문(pg_sleep)을 이용해 administrator 계정의 존재 여부, 비밀번호 길이, 실제 비밀번호를 순차적으로 알아내고 로그인한다. (postgre SQL 기준)이번 실습은 참/거짓에 따른 문구 변화나 에러가 전혀 없는 환경에서 쿼리 결과에 따른 응답 지연 시간(Response Time)만을 유일한 힌트로 활용하여 데이터를 탈취하는 기법입니다. 2. 취약점 분석 (Vulnerability Analysis)핵심 동작 원리:공격자가.. 더보기
[PortSwigger] Visible Error-Based SQL Injection - 단계별 에러 우회 및 데이터 탈취 1. 개요 (Overview)공격 유형: 오류 기반 SQL 인젝션 (Error-Based SQL Injection)목표: DB의 상세 에러 메시지를 유도하는 과정에서 발생하는 여러 제약 조건(Boolean 식 필요, 문자열 길이 제한, 다중 행 반환 에러)을 단계별로 해결하며 administrator의 패스워드를 추출한다.이번 실습은 단순히 에러를 내는 것을 넘어, 쿼리 문법 에러와 제약 조건을 하나씩 우회하면서 원하는 데이터를 에러 창에 출력시키는 디테일한 과정을 다룹니다. 2. 취약점 분석 (Vulnerability Analysis)핵심 원리: 문자열(아이디, 비밀번호)을 숫자로 바꾸려는 형변환(CAST) 시도 시, DB가 "문자열 'administrator'를 int로 변환할 수 없다"라며 에러 메.. 더보기
[PortSwigger] Blind SQL Injection - 조건부 응답을 이용한 데이터 탈취 1. 개요 (Overview)공격 유형: Blind SQL Injection (Conditional Responses)목표: 쿼리 실행 결과가 화면에 직접 노출되지 않는 환경에서, 참/거짓 반응("Welcome back!" 유무)만을 이용해 administrator 계정의 비밀번호를 한 글자씩 알아내고 로그인한다.2. 취약점 분석 (Vulnerability Analysis)이 취약점은 Cookie 헤더의 TrackingId 파라미터가 데이터베이스 쿼리에 그대로 결합될 때 발생합니다. 백엔드 동작 원리:서버는 쿠키의 TrackingId를 DB에서 조회합니다.조회 결과가 참(존재함)이면 화면에 "Welcome back!" 메시지를 표시합니다.조회 결과가 거짓(없음)이면 메시지를 표시하지 않습니다.공격 핵심.. 더보기
[PortSwigger] UNION 공격을 활용한 SQL Injection (6) - 데이터베이스 구조 탐색(Information Schema) 및 계정 탈취 1. 개요 (Overview)공격 유형: SQL Injection (Information Schema 기반 데이터베이스 메타데이터 탐색)목표: 데이터베이스 내부 사전(information_schema)을 조회를 통해 난수화된 사용자 테이블명과 컬럼명을 알아내고, 최종적으로 관리자 계정의 아이디와 비밀번호를 추출하여 로그인한다.실제 웹 애플리케이션 환경에서는 테이블 이름이 단순히 users가 아니라 users_abcdef처럼 난수(임의의 문자열)가 붙어 있는 경우가 많습니다. 이번 실습에서는 데이터베이스의 전체 구조 정보를 저장하고 있는 information_schema 메타데이터 테이블을 조회하여 숨겨진 테이블과 컬럼 이름을 알아내고 데이터를 탈취하는 전체 공격 과정을 정리합니다. 2. 취약점 분석 (V.. 더보기
[PortSwigger] UNION 공격을 활용한 SQL Injection (5) - 데이터베이스 버전(Version) 정보 추출 1. 개요 (Overview)공격 유형: SQL Injection (UNION 기반 DB 버전 식별)목표: 주석 기호(-- vs #)의 차이를 이용해 원본 쿼리를 정상적으로 무력화하고, @@version 구문을 통해 데이터베이스의 종류와 버전을 확인한다.SQL Injection 공격을 진행할 때 가장 중요한 단계 중 하나는 "상대방 DB가 무엇인가(MySQL, Oracle, PostgreSQL 등)"를 알아내는 것입니다. DB 종류마다 사용하는 주석 처리 방식이나 버전 확인 명령어가 완전히 다르기 때문입니다.이번 실습에서는 일반적인 주석 기호(--)가 작동하지 않을 때 다른 주석 기호(#)를 찾아내고, DB 버전 정보까지 출력시키는 과정을 다룹니다. 2. 취약점 분석 (Vulnerability Analy.. 더보기
[PortSwigger] UNION 공격을 활용한 SQL Injection (4) - 단일 열에서 여러 값 추출하기 1. 개요 (Overview)공격 유형: SQL Injection (UNION 기반 공격)목표: 문자열을 출력할 수 있는 열(Column)이 하나뿐이거나 제한적인 상황에서, 문자열 연결 연산자(||)를 이용해 여러 개 데이터(username, password)를 하나의 열에 합쳐서 탈취한다.이번 실습은 UNION 공격의 응용편입니다! 만약 화면에 글자를 출력할 수 있는 공간이 딱 1개밖에 없다면, 아이디와 비밀번호를 동시에 어떻게 가져올 수 있을까요? 답은 두 데이터를 하나로 붙여서 한꺼번에 가져오는 것입니다. 2. 취약점 분석 (Vulnerability Analysis)지난 시간과 마찬가지로 카테고리 필터 파라미터에서 SQL Injection 취약점이 발생합니다. 하지만 이번에는 데이터베이스 출력 조건.. 더보기
[PortSwigger] UNION 공격을 활용한 SQL Injection (3) - 다른 테이블의 데이터 탈취하기 1. 개요 (Overview)공격 유형: SQL Injection (UNION 기반 공격)목표: 앞서 배운 기법들을 활용하여 DB 내의 다른 테이블(users)을 조회하고, 관리자(administrator)의 아이디와 비밀번호를 탈취하여 로그인한다.이번 실습은 UNION 기반 SQL Injection의 꽃이라고 불리는 단계입니다! 지난 시간에 배운 '열 개수 찾기'와 '문자열 열 찾기'를 바탕으로, 서버의 완전히 다른 테이블에 저장되어 있는 비밀 데이터(회원 정보)를 가져와 로그인까지 성공시키는 과정입니다. 🔍 2. 취약점 분석 (Vulnerability Analysis)이 공격은 쇼핑몰 카테고리를 조회하는 원래 쿼리에 사용자 데이터베이스 테이블(users)을 조회하는 쿼리를 합성(UNION)하여 결과.. 더보기

728x90
반응형