DVWA 를 이용해서 SQL인젝션을 해본다.
안의 구조를 보니 숫자값을 입력하면 그에 맞는 아이디를 보여주는 방식이였다
1 번이 admin 으로 데이터베이스에 등록이되어있어서 위의 UserID 에 1 을입력하면
admin이라는 아이디를 보여준다.
그럼 위와같은 동작을하게되는 SQL 구분을 생각했을때
select 컬럼 from 테이블명 where userid=' ' 이와 같은 구분형태로 되어있을것이고
위의 화면에서 값을 넣으면
where= 뒤의 싱글쿼터(') 사이에 값이들어가서 그에맞는 값을 보여줄것이다.
위에서 말한것처럼 1을 넣었을때 admin이 나오는걸봐서는
select userid from member where useid= '1' => admin 이 나오는것으로 예상이된다 .
(컬럼과 테이블명은 그냥 상상만한것)
그렇다면 where 문법을 무시할수있는방법을 사용하면 조건이 걸리지않고
모든 정보를 볼수있을것이다.
이때 사용할것은 or 연산자이다.
일단 싱글쿼터 사이에 값이들어가기때문에 싱글쿼터도 잘 처리해줘야한다
입력창에 싱글쿼터(') 를 입력을한다면
where userid=' ' ' 이러한 형태가될것이고. 조건을 간단하게 뛰어넘을수있을것이다
하지만 뒤의 싱글쿼터가 하나 더 남기때문에 주석을 이용해서 이를 제거해줘야한다.
주석은 # 으로 처리한다.
where userid = ' ' # ' 를 사용하면 완전히 조건을 빠져나오면서 에러가나지않은 문법이 된다.
이제 or 문법을 이용해서 모든것을 꺼내보자.
' or 1 #
위와같이 ' or 1 # 이 문법이 어떠한 형태가되는지 잘생각을해야한다.
where userid = ' ' or 1 이러한 형태가 될것이다. 물론 뒤에 # ' 라는 주석이있을것이다.
그럼 조건이 or 로 1 이되어 참이되었기때문에 모든 값이 이 조건에 충족할것이고 값을 꺼낼것이다.
출력된 값을 보니 DB에있는 모든 id를 보여주고있다.
그럼 이 뒤에 우리가원하는 정보가 더있다면 union문법을 이용해서 시도해볼수있을것이다.
그전에 union은 컬럼의 갯수가 맞아야하기때문에 몇개의 컬럼이 있는지 확인해보자
컬럼 확인 방법은 두가지가있다 두가지 모두 해보자.
컬럼의 수 확인 -union 사용
union을 할때 컬럼의 수가 다르면 에러가 나는데 이걸이용해서 에러가안날때까지 해보는방법이있다.
먼저 ' union select null # 을 해보자.
만약 앞에있는 테이블의 컬럼수가 1개라면 문제없이 실행될것이다.
결과
에러가났다.
그렇다면 null 을 두개로 늘려보자.
' union selcet null,null # 을 한결과 정상적으로 처리된모습이다
이를통해 컬럼이 두개라는 것을 알수있다.
컬럼의 수 확인 -order by 사용
orber by 를 이용해서 1번 컬럼 을 기준으로 정렬 , 2번컬럼 기준으로 정렬 을 시킬수가있는데 이를 이용하는것이다.
1` order by 1# 을 실행한 결과 에러가 나지않고
1` order by 2# 를 실행해본 화면이다.
정상적으로 잘나오고있다.
하지만 1` order by 3# 을 실행한 결과 에러가 난 모습이다.
3번 컬럼이 없는데 3번컬럼으로 정렬 하라고하니 에러가난것이다.
이렇게 여러 방식을 통해 테이블의 컬럼수를 알수있다.
이제 컬럼수도 알았으니 원하는 정보들을 뽑아보자.
내장함수중 무슨 DB를 사용하는지 알수있는 함수가있다.
그 함수는 database() 인데 이를 이용해서 알아보자.
컬럼 수를 맞추기 위해 database() , null 로 한것이다.
나온정보를 보니 dvwa라는 db를 사용하고있다는걸 알수있다.
중간쯤 부터 명령문을 1' 로 시작하고있어서 원하지않는 admin 이 게속 같이 출력되고있는데
1만 안쓰면 불필요한 정보를 볼필요없다.
이제 DB가 뭔지도 알았으니 DB에 어떠한 테이블들이있는지 확인해보자.
DBWA 가 가지고있는 모든 테이블 명을 보여줘라.
그결과 dvwa안에 guestbook , users 테이블이 있다는걸 파악했다.
각 테이블에는 어떠한 컬럼들이있는지 확인해보자.
이렇게 모든 테이블들을 확인해보았는데
users안의 컬럼을 보니 user 와 password 가 신경쓰이니 확인해보자.
'보안' 카테고리의 다른 글
DVWA를 이용한 웹해킹 - 2(리버스쉘) (0) | 2019.05.20 |
---|---|
DVWA를 이용한 웹해킹 - 1(바인드쉘) (0) | 2019.05.20 |
[웹해킹] DB해킹을 위한 명령어 들 (0) | 2019.05.20 |
웹해킹 기초 공격 과 대응 방법 (0) | 2019.05.20 |
웹 프로토콜 분석 과 웹 기본 용어들 (0) | 2019.05.20 |