sqlmap
최근 프로젝트를 열심히 하면서 본사에 교육을 들으러 갈 일이 있었다.
교육해주시는 대표님께서 자동화 도구를 능동적으로 사용하는 방법에 대해서 알려주셨는데,
쿼리를 일일히 대입해보며 SQL Injection을 테스트해보기란 정말 오래걸리는 일이기 때문에, sqlmap을 이용해 이 도구가 보내는 패킷들의 형태를 보며 왜 이 쿼리를 날렸는지를 사용해보며 익힐 수 있다고 하셨다.
생각해보니 정말 좋은 방법인 것 같다.
이때까지는 웹 해킹의 정말 기초적인 부분만을 다뤄보고 툴 같은 거에 대해 소극적인 태도를 가졌었다고 생각하기 때문이다.
일단 바로 sqlmap을 설치해보자.
일단 sqlmap은 python을 기반으로 만들어진 툴이기 때문에 python이 설치되어 있어야한다.
본인은 python이 설치되어있다.
3.10.5 버전
그 후, 아래 주소로 들어가 sqlmap을 다운받아주자.
암거나 받아주자. 본인은 tarball을 받았다.
설치가 끝났으면 이렇게 여러폴더와 sqlmap.py를 비롯한 파일이 추가될 것이다. 여기 주소 표시줄에 cmd를 치고 python을 통해 sqlmap을 실행해보자.
실행이 잘 되는지 테스트해보기 위해 아래 명령어를 입력해보자.
python sqlmap.py --help
저렇게 주사기모양이 나오면 잘 설치된 것이다.
그럼 sqlmap을 잘 사용하기 위한 옵션들이 주루룩 나올 것이다.
자 그럼 이제 sqlmap 실습을 해볼 대상
직접 만든 홈페이지를 틀어보자.
sqlmap은 가능성이 있는 쿼리들을 모조리 때려박아버리는 툴이라 아무데서나 실습하면 큰일난다.
하지만 직접 만든 홈페이지는 어떤 패킷을 날리던지 내꺼라 아무상관이 없다^^
이 페이지는 로그인 창과 게시판에서 sql injection이 유효한 "취약한 페이지"이다.
sqlmap에 어떤 대상을 할 건지 -u 옵션을 통해 url을 넣을 수 있다.
그리고 --proxy="URL"을 통해 sqlmap이 날리는 쿼리들을 burp suite으로 받아볼 수 있다.
--cookie="PHPSESSID~~"를 통해 로그인 이후의 기능에서 SQL 쿼리를 삽입할 수 있고
-p 를 통해 어떤 파라미터에 삽입할 것인지를 결정할 수 있다.
-u : 어떤 url에 넣을 건지
-p : 어떤 파라미터에 넣을 건지
--proxy="" : sqlmap이 보내는 쿼리들을 burp suite으로 받아볼 수 있게 해줌.
--cookie : 로그인 상태를 유지시켜줌.
--dbs : 어떤 DB인지를 알려준다. (목표를 부여)
아래 명령어는
search_result.php라는 곳에 --cookie로 로그인을 하고 search 파라미터에다가 sql 쿼리를 넣어줘
근데 burp suite으로 패킷을 전송해주고 DB의 이름을 알려줘 라는 명령인 것이다.
python sqlmap.py
-u "http://192.168.219.100:2100/search_result.php?category=title&search=&pre_date=&end_date="
--cookie="PHPSESSID=4bvt5fm44p4it0erddbpvu97db"
-p "search"
--proxy="http://127.0.0.1:8080"
--dbs
그럼 sqlmap이 막 돌아가면서 search 파라미터가 취약한 것 같다고 해주고
DB의 정보가 'MySQL 인 것 같다'라고 알려준다.
그러더니 DB명이 어떤 것들이 있는지 까지 알려주고 5개가 있다고 알려준다.
놀랍다.
그 다음 Burp Suite 패킷을 보자.
--proxy 옵션을 줘서 그런지 sqlmap이 마구 쏘아댄 패킷들이 그대로 history에 잡혀 있다.
패킷들을 클릭해보면 어떤 쿼리를 날렸는지가 보이는데,
union과 concat 함수등등을 사용해간 흔적이 보인다.
확실히 평소에 스스로 잘 안쓰던 함수의 기능들도 접할 수 있는 능동적인 학습이 되는 것 같다.
TABLE 명 출력해보기
--dbs 옵션을 줬더니 DB종류와 DB이름을 출력했던 것처럼
--tables 옵션을 주거나 --columns 옵션을 주면 table 명, columns 명을 전부 뽑아낼 수 있다.
옵션만 --dbs에서 --tables로 바꿔서 enter를 쳐보니 주루룩 잘 돌아간다.
이럴 수가 test DB의 모든 tables가 출력되었다. 물론 위에 information_schema db 등등 모든 DB도 다 출력되어있지만 생략..
어떤 쿼리를 입력했나 봤더니 더러운 함수들을 많이 써놨다.
'해킹 > Web Hacking' 카테고리의 다른 글
Burp Suite 설정값 Json으로 추출해서 저장하기 (0) | 2023.09.03 |
---|---|
DOM Based XSS와 Reflected XSS의 차이점 (0) | 2023.08.28 |
[ 21주차 ] 스터디 정리 - 모바일 앱 해킹 (앱 단말기 취약점), 함수 후킹 (0) | 2023.08.13 |
[ 웹 진단 리스트 ] 취약한 암호화 프로토콜 이용 진단 - sslscan (0) | 2023.08.12 |
칼리 리눅스로 할 수 있는 것 (0) | 2023.08.02 |