[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 |