Mongo DB의 경우 문자열이 아닌 타일의 값의 입력이 가능 - > 연산자 사용가능.
No SQL Injection
db.user.find({"id": "입력", "age": "입력"})
위의 입력칸에 입력이 가능할경우 admin의 age를 조회하는 방법
$ne 연산자(!=) 사용
admin, {"$ne": "아무값"}
위와 같은 방법으로 인증 우회 및 조회가 가능
Blind NoSQL Injection
Bliend SQL Injection과 같이 참/거짓을 통해 DB의 정보를 가져올 수 있다.
db.test.test.find({"uid":"admin","pw":"입력"})
마찬가지로 입력에 입력이 가능할 때 admin의 pw를 알아내는 방법은 다음과 같다.
$regex : 지정된 정규식과 일치하는 문서 선택
{"$regex":".{숫자}}
위 값의 입력 반복. 만약 fail을 의미하는 response가 도착할 시에 그 값의 -1이 목표값의 길이.
{"$regex":Striong.fromCharCode(숫자)}
위 값의 입력 반복. 만약 참일경우 그 값이 해당하는 문자.
다음 문자를 찾는 법은 다음과 같음.(첫번째 문자가 a일경우)
{"$regex":"a" + Striong.fromCharCode(숫자)}
이를 데이터 길이만큼 반복
'모의해킹 및 보안' 카테고리의 다른 글
Netcat (0) | 2023.06.02 |
---|---|
File Upload Vulnerability Summary (0) | 2023.06.02 |
파일 업로드 취약점 (0) | 2023.05.30 |
CSRF attack scenario (0) | 2023.05.28 |
CSRF_1 (0) | 2023.05.22 |