随着网络的普及,我们的生活越来越方便,但是网络安全也成了很多人面临的一个问题。特别是那些有着商业数据的企业电脑,更要注意上网安全常识,不然病毒会对我们造成严重的威胁。 我们在以前已经讲过SQL注入的一些原理和思路, 对于这种具有普遍性的攻击, 对于建站者来说是很难防范的。 目前已经有了很多自动注入的工具, 但对于深入学习技术的人来说, 更好的掌握SQL注入实质对于进攻将更加有自信。 当然你一样可以凭借自己的入侵经验积累和手工注入技巧轻松进入网站的后台了。 要知道, 工具黑客和手工黑客, 完全是两个层次的水平, 工具谁都会用, 但是对于手工, 很多人却得不到进入其中的法门。 在Web入侵技术中, 最抢眼的无可厚非自然是SQL注入, 而在SQL注入中, 又存在一种广为流传的技术叫做“瞬注”, 当然这是一门手工技巧, 就是数据库的联合查询。 “瞬注”, 顾名思义, 瞬间注入得到密码, 实战中它能比全自动化的SQL注入工具还要快。 检测漏洞 我们已经找到了一个注入点(这对于浩瀚的网络来说并不难)在这个URL后面加上一个单引号后提交, 发现页面变化了, 出现的异常表明可以趁虚而入。 初步推测这个数据库的管理程序不是MS SQLServer, 而是另外一种常见的——Access。 幸运的是:瞬注对这两种数据管理系统是通杀的。 用and 1=1和and 1=2看页面是否相同就能确定注入漏洞的存在。 提交这样的http://www.myxxxxx.org/showarticle.asp?id=2107 and 1=1, 发现又变回了原来的正常页面。 接下来提交http://www.myxxxxx.org/showarticle.asp?id=2107 and 1=2, 页面再次出现异常。 现在注入漏洞的存在已经可以肯定了。 注意这里%20在地址栏中是空格的URL编码表现形式。 数据库管理系统为SQLServer的时候, 在URL后面加单引号会出现程序的出错信息, 而ACCESS一般会出现页面没有内容的状况。 猜测字段数 数据库—表段—字段—字段内容是我们渗透的过程。 相邻两个都是由前至后一对多的关系。 在注入中数据库的名字是相当不重要的, 我们用“瞬注”先不需要考虑是要猜解的表段的名字, 而是先看库中是否有拥有我们猜测的字段总数的表。 假设这个表有10个字段, 提交:http://www.myxxxxx.org/showarticle.asp?id=2107 order by 10, Order命令本来其实是在SQL语句中用来排序的, 我们也可以巧妙地用它来猜测字段数目。 发现页面出现异常, 表明语句错误。 为提高效率, 直接取10的折中数目5。 提交http://www.myxxxxx.org/showarticle.asp?id=2107 order by 5, 发现页面仍然异常, 没有内容显示, 说明字段数还是太大。 利用这种二分法一步步的切下去。 当猜测的字段数小于等于(<=)实际总共字段数时, 页面一直保持正常, 当我们猜测的字段数大于(>)表中实际字段总数时, 页面就会出现也常。 这就是为什么看到页面出现异常就去降低猜测的字段总数而不是增加的原因。 当提交http://www.myxxxxx.org/showarticle.asp?id=2107 order by 3时, 页面终于正常了! 通过以上步骤, 我们终于可以确定, 数据库中一定存在这么一个表, 该表内有3个字段。 猜测表名 得到了字段的总数目, 我们还需要表名才行。 同样假设有一个表的名字是“Users”, 提交URL:http://www.myxxxxx.org/showarticle.asp?id=2107 and 1=2 union select 1,2,3 from users, 空格会自动被转换为%20。 提交后页面什么内容都没有显示, 说明users这个表是不存在滴。 同样再猜解admin, 这些都是常见的表明:http://www.myxxxxx.org/showarticle.asp?id=2107 and 1=2 union select 1,2,3 from admin, 果然, 期望的页面出来了。 这张页面的“当前位置”后面写的不再是路径信息了, 变成了“1”, 而正文内容里面只有一个“2”, 说明字段1和2是可以显示在页面中的。 字段内容 为什么说瞬注比自动化的SQL注入工具还要快呢?因为它得到密码的方法不是一个个字符地猜解, 而是直接爆出来, 但就像上面的操作一样, 会出现不成功的情况!刚刚前面不是提交了个http://www.myxxxxx.org/showarticle.asp?id=2107 and 1=2 union select 1,2,3 from admin, admin, 接下来页面中出现了“1”和“2”吗?这里的“1”和“2”是可以直接显示在页面上的, 我们如果把URL中的可显示在页面中的数字改成字段名的话, 那么字段内容(包含用户名和密码)就能直接在页面中看到。 假设如果有23个字段的话, 就要写成http://www.myxxxxx.org/showarticle.asp?id=2107 and 1=2 union select 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23 from admin, 最后的数字为字段总数。 假设存放用户名的字段名为user, 存放密码的字段名为pass。 提交http://www.myxxxxx.org/showarticle.asp?id=2107 and 1=2 union select user,pass,3 from admin, 当然同样会出现错误的情况, 但知道出现MD5类的数值, 表明该字段内容被爆出来了。 后台入侵 登录后台, 在MD5破解网站上解出密码原文, 登入就可以随意控制了。 事实上, 当我们用自动注入工具检测时, 发现admin这个表中的确有3个字段id,username和password。 看看是不是和我们在页面中爆出的一样呢?瞬注这个网站当时我只花了3分钟左右(当然, 经验和运气很重要, 对常见的表名和字段名要有积累), 而啊D整整跑了7分钟。 这种入侵思路可以帮助我们更好的理解SQL入侵实质, 并且提高入侵效率, 不过运气成分也很重要。
上面是电脑上网安全的一些基础常识,学习了安全知识,几乎可以让你免费电脑中毒的烦扰。
|