[root-me] NoSQL Injection - Authentication

NoSQL을 사용하고 hidden user를 찾아야하는 문제다.

임의의 닉네임과 패스워드를 입력하자 이런 화면이 나왔다.

 

NoSQL에서 [$ne]는 !=를 뜻한다.

test가 틀린 유저네임과 패스워드라면 test가 아닌 다른 디비는 어떤게 있는지 검색하는 방향으로 가야할거 같다.

login과 pass가 get방식으로 전달되고 있으므로 url을 통해 작성해주었다.

그러자 admin으로 커넥트할수 있다고 한다. 하지만 admin은 hidden user는 아닐듯하다.

이번엔 아까와 같은 방식으로 admin이 아닌 정보가 무엇이 있는지 찾아보았다.

앗 내가 임의로 입력했던 test가 또 다른 user인듯 하다.

하지만 아까 test와 test로 로그인을 시도했을때 틀렸다고 했으므로 패스워드 부분을 바꿔서 검색하는 식으로 접근했다.

또 다시 admin이 나와버렸다.

따라서 admin과 test를 한번에 제거하는 방식을 찾아야 할듯 하다.

 

MongoDB에서 $regex를 이용하면 정규식을 통한 표현이 가능하다고 한다.

정규표현식에 대해 참고한 블로그 링크는 아래.

정규표현식 https://hamait.tistory.com/342

 

정규표현식 (Regex) 정리

정규표현식은 아주 가끔 쓰기때문에 항상 다시 볼때마다 헥깔리곤 하는데.. 주요 사용예를 정리하여 보았다. 나중에 찾아보기 편하라고~ 정규 표현식의 용어들 정규 표현식에서 사용되는 기호

hamait.tistory.com

 

지금 나는 admin 또는 test가 아닌 것들의 결과를 보고 싶으므로 [^admin$|^test$] 라고 적어주면 될듯하다.

플래그가 등장했다.

 

NoSQL에 관한 궁금증은 아니고 정규표현식에 대한 의문인데 다른 라이트업을 검색하다 보니 대부분 [^admin|^test]라고만 쓰고 끝내서 문자열 끝을 알리는 $를 이렇게 쓰는게 아닌가에 대한 의문이 생겼다.

참고한 링크

https://support.cognex.com/docs/vidi_341/web/KO/vidisuite/Content/ViDi_Topics/1_Overview/images_display_filters_regex_basics.htm

 

정규 표현식(regex) 기초

^ 문자열 또는 줄의 시작을 지정합니다. 예를 들어 ^0은 0으로 시작하는 문자열과 일치합니다. 참고 :  [^0]처럼 ^ 문자가 대괄호 안에 들어 있다면, ^는 시작하지 않는다는 뜻입니다. $ 문자열 또는

support.cognex.com

https://blog.naver.com/odise444/60145646608

 

regex 정규식 예제

출처 : http://www2.xhost.co.kr/bbs/?id=tip_preg,14 regex 정규식 ...

blog.naver.com

정규식에서 []안의 ^는 부정을 의미한다고 한다. 나는 ^를 문자열의 시작으로 받아들였는데 []를 사용했기 때문에 $가 의미를 가지지 않게 된거 같다.(아닐수있음 주의)

'문제풀이 > 보안 writeup' 카테고리의 다른 글

websec.fr babysteps level04  (0) 2021.07.19
wargame.kr [SimpleBoard]  (0) 2021.07.03
SuNiNaTaS(써니나타스) 22번  (0) 2021.07.02
SuNiNaTaS(써니나타스) 4번  (0) 2021.07.01
SuNiNaTaS(써니나타스) 7번  (0) 2021.05.24
myoskin