
1. Target Overview (머신 요약)
- Target Name: Appointment
- OS: Linux
- Difficulty: Tier 0 (Starting Point)
- Vulnerability: SQL Injection (SQLi), Authentication Bypass (인증 우회)
- Attack Vector: Login Form Input Validation Failure (로그인 폼 입력값 검증 누락)
2. 핵심 개념 총정리
① SQL Injection (SQLi)
- 웹 애플리케이션이 클라이언트로부터 입력받은 데이터를 필터링이나 이스케이프(Escape) 처리 없이 데이터베이스 쿼리에 직접 결합(Concatenation)할 때 발생하는 보안 취약점
- 공격자는 악의적인 SQL 구문을 삽입하여 데이터베이스 구조를 열거하거나, 중요 데이터를 유출 및 조작가능
② 로그인 인증 우회 (Authentication Bypass)
- 정상적인 로그인 검증 쿼리(예: SELECT * FROM users WHERE username='[ID]' AND password='[PW]')의 논리적 구조를 파괴하는 기법
- 입력 폼에 admin'# 과 같은 페이로드를 삽입하면, 싱글 쿼터(')로 문자열 입력을 닫고 샵(#) 기호로 뒷부분의 패스워드 검증 구문을 주석 처리하여, 결과적으로 패스워드 일치 여부와 관계없이 참(True)을 반환하게 만들어 로그인을 우회
③ 웹 디렉토리 열거 (Web Directory Enumeration)
- Gobuster나 Dirb와 같은 브루트포스(Brute-force) 도구를 사용하여 웹 서버 내부에 숨겨진 관리자 페이지나 민감한 경로(Directory)를 탐색하는 정보 수집 단계
[Task 1] What does the acronym SQL stand for?
- 정답: Structured Query Language
- 분석: 관계형 데이터베이스(RDBMS)에서 데이터를 정의, 조작, 제어하기 위해 사용하는 국제 표준 질의 언어
[Task 2] What is one of the most common type of SQL vulnerabilities?
- 정답: SQL injection
- 분석: 사용자 입력값이 SQL 쿼리의 일부로 해석되게 만들어, 공격자가 의도한 비정상적인 쿼리를 데이터베이스가 실행하도록 조작하는 취약점
[Task 3] What is the 2021 OWASP Top 10 classification for this vulnerability?
- 정답: A03:2021-Injection
- 분석: 국제 웹 보안 표준 기구인 OWASP(Open Worldwide Application Security Project)에서 발표한 10대 웹 보안 위협 중 3위에 랭크된 치명적인 인젝션 취약점
[Task 4] What does Nmap report as the service and version that are running on port 80 of the target?
- 정답: Apache httpd 2.4.38
- 분석: nmap -sV -p 80 [Target IP] 명령을 통해 배너 그래빙을 수행한 결과, 80/tcp 포트에서 구동 중인 웹 서버 데몬 엔진과 정확한 버전을 식별
nmap -sV -p 80 [Target IP]

[Task 5] What is the standard port used for the HTTPS protocol?
- 정답: 443
- 분석: TLS/SSL을 통해 암호화된 안전한 웹 통신(HTTPS)을 제공하기 위해 사용되는 표준 TCP 포트 번호
[Task 6] What is a folder called in web-application terminology?
- 정답: directory
- 분석: 웹 서버의 URI 구조상에서 자원(파일)을 계층적으로 분류하고 저장하는 논리적 경로 단위
[Task 7] What is the HTTP response code is given for 'Not Found' errors?
- 정답: 404
- 분석: 클라이언트가 요청한 리소스(URI)가 서버 상에 존재하지 않을 때 웹 서버가 반환하는 표준 HTTP 상태 코드
[Task 8] Gobuster is one tool used to brute force directories on a webserver. What switch do we use with Gobuster to specify we're looking to discover directories, and not subdomains?
- 정답: dir
- 분석: Gobuster 실행 시, DNS 서브도메인이 아닌 웹 서버의 디렉토리 및 파일 경로를 브루트포싱 모드로 스캔하도록 지정하는 명령어 파라미터입니다.
gobuster dir -u http://[IP] -w [단어장]
[Task 9] What single character can be used to comment out the rest of a line in MySQL?
- 정답: #
- 분석: MySQL 데이터베이스 구문에서, 해당 문자 이후의 모든 문자열을 쿼리로 해석하지 않고 무시(주석 처리)하도록 만드는 예약 기호
[Task 10] If user input is not handled carefully, it could be interpreted as a comment. Use a comment to login as admin without knowing the password. What is the first word on the webpage returned?
- 정답: Congratulations
- 분석: 로그인 폼의 Username 필드에 악의적인 SQL 페이로드를 주입하여 인증을 우회한 직후 반환된 랜딩 페이지의 첫 단어입니다.
[Root Flag] 시스템 침투 및 플래그 추출
- 분석:
- 웹 브라우저를 통해 대상 웹 애플리케이션(http://[Target IP]/)에 접
- 노출된 로그인 폼에서 Username 필드에 admin'# 페이로드를 주입(Injection)
- Password 필드는 임의의 값을 입력하거나 비워둔 채 로그인을 시도
- 백엔드 데이터베이스는 입력값을 SELECT * FROM users WHERE username='admin'#' AND password='...' 로 해석
- # 이후의 구문이 제거되면서 조건문이 논리적으로 무력화
- 이를 통해 관리자 계정 세션 권한을 획득하고 페이지 내부의 해시값을
# 백엔드 SQL 검증 로직의 구조적 결함
# 원본 쿼리 예상:
SELECT * FROM users WHERE username='[사용자입력]' AND password='[사용자입력]';
# SQL Injection (admin'#) 삽입 후 데이터베이스에서 해석되는 실제 쿼리:
SELECT * FROM users WHERE username='admin'#' AND password='[무시됨]';


Discussion 1