인젝션 취약점은 애플리케이션이 사용자 제어 데이터를 통해 셸 명령이나 데이터베이스 쿼리의 의미를 바꾸도록 허용할 때 발생합니다. 이 과정은 의도적으로 취약한 로컬 애플리케이션을 대상으로 명령 인젝션과 SQL 인젝션을 실습하며 그 경계 붕괴를 확인합니다.
먼저 구분자, 따옴표, 주석, 불리언 표현식, UNION SELECT가 동작을 바꾸는 이유를 이해하도록 페이로드를 수동으로 만듭니다. 이어서 sqlmap 으로 탐지, 스키마 열거, 데이터 추출, OS shell 흐름을 자동화하고 독립적인 데이터베이스 침해 챌린지를 수행합니다.
학습 내용
- 명령 인젝션 지점을 찾고 Linux 명령 구분자로 실행을 확인합니다.
- 셸 이스케이프와 와일드카드로 단순 키워드 필터를 우회하고 대상에 증명 파일을 만듭니다.
- SQL 오류를 유발하고 불리언 페이로드로 취약한 로그인을 우회합니다.
ORDER BY와UNION SELECT로 쿼리 열 수와 화면에 반영되는 위치를 파악합니다.- SQLite 스키마 메타데이터를 조회하고 애플리케이션 응답에서 실습용 사용자명과 비밀번호를 추출합니다.
- sqlmap 으로 SQLi 를 탐지하고 데이터베이스를 열거하며 지정 테이블을 덤프하고 대화형 OS shell 을 시도합니다.
- 마지막 챌린지에서 두 SQLi 입력 지점을 독립적으로 검증하고 실습용 고객 테이블을 내보냅니다.
추천 대상
자동화에 의존하기 전에 인젝션 원리를 이해하려는 웹 보안 학습자를 위한 중급 과정입니다. 예비 모의 해킹 전문가, 애플리케이션 보안 학습자, 안전하지 않은 명령 구성과 동적 SQL 이 시스템 및 데이터를 노출하는 구체적 사례가 필요한 개발자에게 적합합니다.
선수 지식: Linux 터미널과 curl, 기본 HTTP GET/POST 요청 및 URL 인코딩, SELECT, WHERE, 열, 테이블 같은 입문 SQL 개념에 익숙해야 합니다.
학습 환경: sqlmap 과 로컬 5000, 8080, 80 포트의 격리된 의도적 취약 웹 애플리케이션이 준비된 Ubuntu 22.04 터미널입니다. 모든 명령과 추출하는 예제 데이터는 과정 환경 안에 머뭅니다.
자주 묻는 질문
시작 전에 고급 SQL 지식이 필요한가요?
아니요. 쿼리 문맥, 불리언 논리, 주석, 열 수 파악, UNION SELECT 순서를 실습에서 설명합니다. 기본 SQL 용어를 알면 중급 실습을 더 쉽게 따라갈 수 있습니다.
인젝션 페이로드를 실제 시스템에 보내나요?
아니요. 모든 대상은 연습을 위해 구성된 로컬 애플리케이션입니다. 명령, 자격 증명, 고객 레코드, 토큰은 실습용 데이터입니다.
왜 sqlmap 전에 수동 SQL 인젝션을 배우나요?
수동 실습은 입력이 쿼리 구문을 바꾸는 방식과 반영된 열이 데이터를 노출하는 방식을 보여줍니다. 이를 통해 sqlmap 의 탐지 기법을 이해하고 자동 열거 범위를 정할 수 있습니다.
운영체제 명령 실행까지 수행하나요?
예, 격리된 실습 안에서 수행합니다. 명령 인젝션 실습은 선택한 Linux 명령을 직접 실행하고, sqlmap 실습은 준비된 PHP 대상을 상대로 --os-shell 흐름을 안내합니다. 작업은 로컬 환경을 벗어나지 않습니다.





