Juice Shop - NoSQL Injection Tier 1(★★★★) 풀이
Wargame | CTF/WebHacking

Juice Shop - NoSQL Injection Tier 1(★★★★) 풀이

서버를 잠시동안 sleep 하라는 문제입니다. Juice Shop 을 하면서 정말 많은것을 배우는것 같습니다. 현재 NoSQL은 널리 사용되고 있음에도 불구하고 Injection에 대한 정보는 많이 없고, 관심도 적은것 같습니다. SQL Injection 이나 마찬가지일텐데 말이죠. 

대표적인 NoSQL 은 MongoDB 가 있으며, 클러스터 환경에서 많이 사용됩니다. 데이터의 일관성이 중요하지 않고, 많은 데이터가 단시간에 쓰여지고, 굳이 바꿀 필요가 없는경우. 예를 들면 게임로그 같은 경우에 쓰인다고 하네요.

이 문제를 풀려면 MongoDB에 대한 기본적인 지식이 필요합니다. 여기서는 사용자의 리뷰를 데이터 베이스에서 검색할 때, product 번호를 쓰는데요. 데이터베이스 구문을 에측해 보면, db.reviews.find( { "ProductId" : "INPUT" } ) 가 아닐까 생각이 듭니다.

사실 MongoDB sleep 가 이렇게 그냥 데이터베이스의 입력으로 들어가도 작동이 되는지에 대한 정보를 찾고싶었는데, 없네요.

sleep(1000) 을 넣으면 진짜로 서버가 잠시동안 멈추긴 합니다. 실제 데이터베이스 구문은 잘 모르겠지만.. ProductId가 들어갈 자리에 sleep()을 넣어주면 동작을 하네요.