在关系型数据库时代,SQL注入攻防几乎成了每一个Web开发者的必修课,很多NoSQL的支持者称NoSQL的同时也就No SQL注入了。其实不然,下面就是一个利用GET参数判断不严格进行的MongoDB注入,希望能够引起大家大家在安全方面的重视。
使用SQL数据库存储用户名密码的系统,我们检测用户名与密码的过程可能是这样的:
mysql_query(“SELECT * FROM user WHERE username=” . $_GET[‘username’] . “, AND passwd=” . $_GET[‘passwd’]) |
我们使用MongoDB进行最简单的用户名与密码检测可能是这样的:
$collection->find(array( ”username” => $_GET[‘username’], ”passwd” => $_GET[‘passwd’] )); |
在最普通的SQL注入中,我们可以构造下面这样的请求:
login.php?username=admin&passwd=abc OR 1 – |
这个请求会形成这样的SQL语句:
SELECT * FROM user WHERE username=admin AND passwd=abc OR 1; |
成功注入!
采用同理的方法,针对上面的MongoDB查询方式,你可以构造下面的请求:
login.php?username=admin&passwd[$ne]=1 |
这个请求会形成这样的MongoDB查询:
$collection->find(array( ”username” => “admin”, ”passwd” => array(“$ne” => 1) )); |
成功注入!
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
MongoDB与Cassandra数据库对比
MongoDB和Cassandra都属于NoSQL数据库系列,它们也恰好都是开源,但是,它们的相似之处仅此而已 […]
-
eHarmony公司利用Redis NoSQL数据库进行热存储
虽然关系型数据库不会消失,但关系型数据库管理系统有时仅在会话管理、推荐引擎和模式匹配等关键Web应用程序中担当 […]
-
Azure数据湖分析从U-SQL中获得提升
大数据的发展已经让许多精通SQL的数据专业人员不知所措。微软的U-SQL编程语言试图让这些人回归数据查询游戏。
-
2017年1月数据库流行度排行榜 新年新气象
新年新气象,数据库知识网站DB-engines最近更新了2017年1月份数据库流行度榜单。TechTarget数据库网站将与您分享1月份的榜单排名情况,让我们拭目以待。