컬럼 이름 및 데이터 검색
이 레슨에서는 특정 테이블의 열 이름을 검색하여 데이터베이스 구조를 더 깊이 파고들 것입니다. 이 지식을 통해 테이블에서 잠재적으로 민감한 데이터를 추출할 수 있습니다.
예시 코드:
1' UNION SELECT 1, group_concat(column_name) FROM information_schema.columns WHERE table_name = 'users'#
위의 SQL 쿼리는 SQL 인젝션을 사용하여 'users' 테이블의 열 이름을 검색합니다. 이러한 열 이름을 보기 쉽게 하나의 문자열로 연결합니다.
다음은 세부 설명입니다.
1' UNION: 앞서 설명했듯이, 이 부분은 애플리케이션의 쿼리를 완성하고 주입된 페이로드와 결합하기 위한 것입니다.
SELECT 1, group_concat(column_name) FROM information_schema.columns WHERE table_name = 'users': 이 쿼리 부분은 주입된 페이로드입니다. 'users' 테이블에서 열 이름을 검색하고 group_concat 함수를 사용하여 단일 문자열로 연결합니다.
쿼리를 제출한 후 출력 결과에서 열 이름을 확인할 수 있습니다.
이제 열 이름을 얻었으므로 'users' 테이블에서 민감한 데이터를 검색할 수 있습니다.
예시 코드:
1' UNION SELECT user, password FROM users#
이 SQL 쿼리는 SQL 인젝션을 사용하여 'users' 테이블에서 'user' 및 'password' 열을 검색합니다.
쿼리를 제출한 후 출력 결과에서 사용자 이름과 해시된 비밀번호를 확인할 수 있습니다. 이 정보는 매우 민감할 수 있으며, 이를 추출하는 방법을 이해하는 것은 취약점을 악용하고 이러한 공격으로부터 방어하는 데 필수적입니다.
이러한 기술을 이해하는 목표는 두 가지입니다. 잠재적인 취약점을 식별하고 더 안전한 애플리케이션을 구축하는 것입니다.