万能密码使用原理

万能密码使用原理

RT,很多人都觉得万能密码就是’or’=’or’,其实则不然。

“万能密码”这个称呼我觉得并不是很恰当,因为万能密码利用的原理就是在后台登陆页面没有对用户输入的内容进行验证,此时程序所用用户输入的数据都合法的,所以这个时候无论是合法的管理员还是非法的入侵者所输入的数据都是被信任的,非法入侵者正是利用这一特点来进行非法登录的。

我们首先来看一个实例。在某网站的后台登录页面,程序没有对用户所输入的数据进行合法性的检查,导致可以非法登录。我们先来用大家常用的“万能密码”来登录下试试。
在关键字 ‘or’ 附近有语法错误。

我们可以看到,程序在进程SQL查询时出现了语法错误。由于程序代码的关系,此时我们虽然看到了错误提示,但是并没有因此得到这个程序的SQL查询语句是如何写的。好,现在我们来分析一下。我们所常说的’or’=’or’万能密码的原理是这样的:SQL语句sql=”select * from user where username=’”&username&”‘and pass=’”& pass&’” ,当我们用户名和密码都填写’or’=’or’提交的时候,即此时语句中的username和pass都等于’or’=’or’,那么,这条SQL语句就变成了:sql=”select * from user where username=”or’ ‘=”and pass=”or’ ‘=” ,自然也就通过了程序的验证。

但是我们现在手上的这个例子的SQL插叙语句是什么样的我们还不得而知,但是大家都知道,SQL语句,特别是登录验证语句,写法上一般都没有什么花样。SELECT * FROM username WHERE username =”,我们应当注意这样一件事情,那就是无论查询语句怎么写我们所输入的内容都是要被单引号引起来的,那么我们现在尝试利用这样的特点来构造新的“万能密码”登录。

首先我们需要在密码的最前面有一个单引号,来闭合SQL语句中的单引号,OK,然后构造一个or,也就是或者,或者怎么样我们才能通过验证呢?当然最简单的就是1=1了,呵呵,所以由此我们构造出新的密码: ‘or ’1′=’1。为什么密码的最后面少了一个单引号呢?这是同样为了使SQL语句不出错,是来闭合程序中的SQL语句的后面的单引号的,如果我们在后面再加上一个单引号的话就会出错了
字符串 ’1” 之前有未闭合的引号。
第 1 行: ’1” 附近有语法错误。 这个原理和字符型注入差不多,不多说了。但是使用这个账户和密码同样没有登录成功,不过却没有了语法错误
既然没有的语法错误,那么按理说不应该啊,竟然提示密码错误。那么这个时候最有可能造成密码错误的原因就是,我们虽然让这条语句没有了语法错误,但是这条查询语句到底是什么样的我们现在还不得而知,很有可能是后面的其他语句对我们精心构造好的查询语句造成了影响,那么怎么办呢?简单得很,只要把后面的内容注释掉了不就好了。我们在后面再加上一个“–”注释,但是要注意的,前面我们在’or ’1′=’1后面没有加单引号是为了闭合语句后面的那个单引号,现在我们加了一个注释–把后面包括单引号后面的内容都给注释掉了,所以这个时候我们要在1=1后面再加上一个单引号来闭合,这样不至于出现语法错误。所以现在我们构造出来的密码就是“’or ’1′=’1′–”。好了,我们现在来用’or ’1′=’1′–登陆一下试试。
OK,登录成功。本文就到这里把,主要说一下有关传说中的万能密码的原理和灵活的利用方面,彩笔一个,求大牛别喷。    转载自:http://www.okadwin.com/index.php/adwinblog/176

over

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值