dvwa万能密码的问题解决

  • A+
所属分类:安全文章

dvwa万能密码的问题解决

关于dvwa万能密码的问题解决
既然说到了万能密码这里就要先说一说万能密码的原理了

核心原理:

构造数据库操作命令的语句:

    select * from admin where user=‘$name’ and password=‘$pwd’

当提交用户名admin,密码123456时:

    select * from admin where user=‘admin' and password=‘123456’

当提交用户名admin,密码1’ or ‘1’=‘1时:

select * from admin where user=‘admin’ and password=‘1’or ‘1’=‘1’

当AND和OR运算符同时出现时,先进行AND运算,再进行OR运算 而‘1’=‘1’恒成立,因此只要数据库中有记录,返回的结果集一定不为空即登录必然成功。


同一条SQL语句中同时出现andorand 执行的优先级比 or 

这里列出3种比较经典的万能密码


dvwa万能密码的问题解决


dvwa万能密码的问题解决

dvwa万能密码的问题解决


1、Brute Force下的结果及原因



1.1、结果

图一,这里显示不能登录



dvwa万能密码的问题解决


图二登录成功


dvwa万能密码的问题解决


1.2、原因


在Brute Force源码中用红笔括号起来的代码表示从数据库中得到的结果只有一条才符合条件


dvwa万能密码的问题解决


而在数据库中查询图一中的username有不止一条结果符合,查询到超过一条结果,所以图一错误


dvwa万能密码的问题解决


在数据库中查询图二中的username只有一条结果符合,所以图二正确


dvwa万能密码的问题解决


2、login.php登录界面的结果及原因

2.1、结果


这里显示能登录


dvwa万能密码的问题解决


2.2、原因


在login.php源码中用红笔括号起来的代码表示从数据库中得到的结果只要非0就符合条件


dvwa万能密码的问题解决


3、总结


不同的网站有不同的过滤机制,像这里dvwa的登录界面和Brute Force的过滤机制就不一样了。虽然都是通过mysql_num_rows这个函数查询数据库结果并返回,但是一个是==1,一个是!==0,这就导致结果存在差异。

还有其中的admin or 1 or 1会查询所有结果,而admin or 1=1,admin or 1只返回admin一个结果。

dvwa万能密码的问题解决

本文始发于微信公众号(疯猫网络):dvwa万能密码的问题解决

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: