No SQL Database
비 관계형 데이터베이스
비 관계형 데이터베이스는 RDBMS와 다르게 SQL을 사용하지 않습니다. 또한 저장하는 방식이 테이블의 row, column 형태로 저장하지 않고 Collection , Document , Key : Value 형태로 데이터를 저장합니다.
비관계형 데이터베이스의 종류는 MongoDB, Redis , CouchDB.. 등이 있습니다. 일단 MongoDB, Reids , CouchDB의 문법을 알아보도록 하겠습니다.
MongoDB
MongoDB는 Document형태로 데이터를 저장합니다. 데이터의 형식이 JSON이라 쿼리를 질의할 때도 JSON방식으로 질의할 수 있습니다.
MongoDB의 기본 문법
- SELECT
db.example.find({}) //모두 질의
db.example.find({ //조건 질의
username : 'admin'
})
- INSERT
db.example.insert({
username : "guest",
userpassword : "password",
)}
- DELETE
db.example.remove() // 모두 제거
db.example.remove({ // 조건 제거
username : 'guest',
)}
- UPDATE
db.example.update({
password : "1234",
},
{
{
$set: { username : 'guest' } // MongoDB 연산자
}
)
연산자
Operator | Description |
$eq | equal |
$in | 일치하는 값을 찾는다. |
$ne | not equal |
$nin | 일치하지 않는 값을 찾는다. |
$and | AND |
$not | 쿼리식과 일치하지 않는 값을 찾는다. |
$nor | NOR, OR의 반대연산 |
$or | OR |
$eixsts | 지정된 필드가 있는 문서를 찾는다. |
$type | 지정된 필드가 해당 유형인 문서를 찾는다. |
$expr | 집계식 |
$regex | 정규식 |
$text | 텍스트 |
Redis
Redis도 key - value형태로 데이터를 저장하는 형태는 동일합니다. 다른점은 메모리를 이용하여 데이터를 저장하고 , 접근하기 때문에 속도가 빠르다는 장점이 있습니다.
명령어
기본 명령어 형태는 아래와 같습니다.
[OPERATOR] KEY VALUE
Instruction | 구조 | Description |
GET | GET key | 데이터 조회 |
MGET | MGET key... | 여러 데이터 조회 |
SET | SET key value | KEY에 데이터 추가 |
MSET | MSET key value [key value...] | KEY에 여러 데이터 추가 |
DEL | DEL key | 데이터 삭제 |
EXISTS | EXISTS key [key...] | 데이터 유무 확인 |
INCR / DECR | INCR key / DECR key | ++1 , --1 |
CouchDB
CouchDB는 REST API형식으로 작동되는 데이터베이스 입니다. REST API는 간단하게 말해서 URI기준으로 HTTP Method를 사용해서 연산을 수행하는 방식입니다. 예시는 다음과 같습니다.
curl -X PUT http://URL/database/ -d [DATA]
curl은 HTTP요청을 보낼 수 있는 Tool입니다. "PUT"이라는 헤더를 통해 "database"라는 곳에 DATA를 업데이트할 수 있습니다. 이와 같이 CouchDB는 REST API 방식을 가지고 있습니다.
명령어
- POST : 새로운 Record추가
- GET : Record 조회
- PUT : Record 업데이트
- DELETE : Record 삭제
URL
PATH | |
/ | 메타 정보를 반환 |
/_all_dbs | 데이터베이스 목록을 반환 |
/_utils | 관리자 페이지로 이동 |
/db | 지정된 데이터베이스에 대한 정보를 반환 |
/[db]/_all_docs | 지정된 데이터베이스에 포함된 모든 Document를 반환 |
/[db]/_find | 지정된 데이터베이스에서 JSON 쿼리에 해당하는 모든 Document를 반환 |
❗ 저작권
https://icons8.com/icon/TZ69zUw6d3Lu/right
Right icon in Flaticons Lineal Color Style
icons8.com
https://icons8.com/icon/NXAECrAk3Vkg/code
Code icon in Pastel Style
icons8.com
https://icons8.com/icon/48250/암호
Code icon in Gradient Line Style
icons8.com
해커들의 놀이터, Dreamhack
해킹과 보안에 대한 공부를 하고 싶은 학생, 안전한 코드를 작성하고 싶은 개발자, 보안 지식과 실력을 업그레이드 시키고 싶은 보안 전문가까지 함께 공부하고 연습하며 지식을 나누고 실력 향
dreamhack.io
'Hacking > Web' 카테고리의 다른 글
[Web Hacking] DNS rebinding (0) | 2022.07.30 |
---|---|
[Web Hacking] Missconfiguration DBMS (0) | 2022.07.26 |
[Web Hacking] SSRF (0) | 2022.07.25 |
[Web Hacking] Command Injection (0) | 2022.07.24 |
[Web Hacking] No SQL Injection(Mongo DB) (0) | 2022.07.23 |