모의해킹

SQL Injection 실습(1)

박연준 2023. 7. 1. 23:00

SQL Injection 실습(1)

아래 홈페이지는 KISEC에서 실습할 수 있는 페이지를 제공해주었고 여기서 SQL Injection을 실습할 것이다.

메뉴 상단에 login을 누르면 다음과 같이 로그인 화면이 나오게 된다.

 

아이디와 비밀번호 값에 둘 다 ‘ or 1=1 -- 를 대입해보았다.

 

로그인 한 결과 로그인이 성공했고 my account 라는 탭에 들어가보면 사용자가 oyes라는 계정으로 로그인되었다. oyes라고 로그인 되어진 이유는 모든 레코드 값 중에 제일 상위에 있기 때문에 oyes 계정이 반환되어 진 것이다.

 

‘and db_name() > 1-- 라는 값을 삽입 하면 데이터베이스의 이름을 파악할 수 있다. db_name() 함수는 데이터베이스의 이름을 문자열로 반환하는 MS-SQL 함수이다. 저렇게 나온 이유는 결과 값 문자열을 정수와 비교연산 하도록 하여 에러를 유발시킨 것이다.

 

having을 이용하여 Table명과 첫 번째 Column명을 파악할 수 있다. select 목록에 group by 절이 없어 반환된 에러 메세지로 Members.num이라는 컬럼이 Members 테이블의 첫 번째 컬럼이라고 확인할 수 있다.

 

group by를 이용하여 num이라는 컬럼을 알아냈으므로 나머지 컬럼 명도 알 수 있다. 다음과 같이 Members.user_id 라는 아이디 값에 들어가는 컬럼 명이 user_id 인 것을 유추할 수 있다.

‘or 1 in(SELECT user_id FROM Members WHERE num > 0) --를 이용해서 문자값을 숫자와 비교해서 에러가 날 수 있게 함으로 user_id 컬럼의 값 oyes를 알 수 있다.

 

'모의해킹' 카테고리의 다른 글

파일 업로드 취약점 실습(2)  (0) 2023.07.01
파일 업로드 취약점 실습(1)  (0) 2023.07.01
XSS 실습  (0) 2023.06.26
모의해킹 실습(3) / fngs.kr  (0) 2023.06.25
모의해킹 실습(2) / fngs.kr  (0) 2023.06.25