[CTF] dreamhack - Mango

2024. 5. 25. 12:25ㆍWeb/dreamhack

728x90

문제 설명

웹 서버에 접속해 보자

메인 페이지

주어진 파일을 다운

/login 페이지 요청 시 실행되는 코드

이용자가 쿼리로 전달한 uid와 upw로 데이터베이스를 검색하고, 찾아낸 이용자의 정보를 반환한다

위의 코드는 일부 문자열을 필터링하는 함수

/login의 GET 핸들러를 살펴보면, 이용자의 요청에 포함된 쿼리를 filter함수로 필터링한다

해당 함수는 admin, dh, admi라는 문자열이 있을 때 true를 반환

위의 코드는이용자가 전달한 쿼리의 값과 타입을 반환하는 코드

아래의 요청 결과를 보면, string외에 다양한 형태의 object도 쿼리로 전달될 수 있음을 알 수 있다

위 코드는 로그인 페이지를 구성하는 코드인데

코드에서 MongoDB에 쿼리를 전달하는 부분을 살펴보면, 쿼리 변수의 타입을 검사하지 않는다

이로 인해 NoSQL Injection 공격 가능

 

filter 함수로 인해 uid와 [$regex]= 값에 제한이 생김
하지만 임의 문자를 뜻하는 .을 이용해서 쉽게 우회할 수 있다

 

공격 코드

flag값 확인

DH{89e50fa6fafe2604e33c0ba05843d3df}

728x90

'Web > dreamhack' 카테고리의 다른 글

[CTF] dreamhack - image-storage  (0) 2024.05.25
[CTF] dreamhack - command-injection-1  (0) 2024.05.25
[CTF] dreamhack - simple_sqli  (0) 2024.05.25
[CTF] dreamhack - csrf-2  (0) 2024.05.24
[CTF] dreamhack - csrf-1  (0) 2024.05.24