webhacking.kr의 2번 문제를 풀려고 하니, Blind SQL Injection을 해야하고
그러기 위해서는 DB 구조에 대해 조금 공부가 필요하다!!
물론, 맞지 않는 내용이 있을 수 있고 좀 이상할 수 있지만 나만 이해하면 되니까ㅎㅎㅎㅎ
1. Information_schema란?
먼저 schema란 MySQL 내에 존재하는 DB의 메타정보(테이블, 컬럼, 인덱스 등)..
즉, DB의 DB라고 보면 된다. 보통 DB의 데이터를 묶어놓은 집합체라고 많이들 표현한다.
DB는 크게 Database -> Table -> Column -> Value의 하위 구조로 되어 있다.
즉, Value을 알기 위해서는 Colume을 알아하고,
해당 Colume이 어느 Table에 이는지 알아야하고
해당 Table이 어느 Database에 있는지 알아야 한다.
그리고 이때 Table의 정보를 모아놓은게 Information_schema.tables가 되고
Column 정보를 모아놓은게 Information_shema.columns가 된다.
- Value는 Table과 Column만 알고 있으면 select로 가능하다.
그래서 table 정보를 알기 위해서
select table_name from information_schema.tables where table_schema=database()
- information_schema.tables에는 해당 database에 있는 테이블 정보를 모아놓은 메타정보이다.
- database()말고 데이테비으명을 입력해도 된다.
그리고 column정보를 알기 위해서
select column_name from information_schema.columns where table_name='users'
- information_schema.columns은 column을 모아 놓은 메타정보이며 where로 내가 원하는 table_name을 넣는다.
그리고 마지막 value를 알기 위해서
select pw from users
- 내가 위 정보에서 table 정보를 알아냈고, column을 알아냈기 때문에 가능하다!!
'기본 이모저모' 카테고리의 다른 글
HTTP, 쿠키와 세션의 차이점 (0) | 2021.10.10 |
---|---|
웹이란? (0) | 2021.10.02 |
크롬 확장 프로그램!! 프록시 간편하게 잡기 (0) | 2021.08.07 |
php_ascii 코드 (0) | 2021.02.21 |
DB별 주석처리 문자열 (0) | 2021.02.14 |