标签:pass 管理 字节 用户 字符串 管理员 vcl 情况 查询
在现如今注入技术一直被视为安全技术人员的必学技术,无论是注入还是盲注还是宽字节注入等各种注入技术都是如今非常流行的。但是在这么多的注入手法当中,有一种注入是被忽视的甚至有很多人不知道这种注入技术。那就是——超长字符串截断注入。
注入的产生是由于过滤不严导致的,而利用则是由用户提交特殊的字符来进行利用的。而长字符串截断注入则是利用数据库的错误产生的也就是说我们在整个过程中可以不输入任何敏感字符,所以在正常情况下来讲过滤敏感字符是无法避免这种注入的。
现在就由我来还原这种漏洞的产生。
首先我们需要了解数据库的表结构,当我们创建一个表都需要用户设置表中所有列的数据类型和最大存储长度,例如这个表中的id列是int类型,name是varchar()类型最长存储长度是20个字符passwd是varchar()类型长度为50个字符。
<ignore_js_op>
现在在数据库中有一条正常数据。
<ignore_js_op>
按照正常来说这些指定长度都是能够满足用户需要的,而在查询指定内容时只需要查找符合的内容就好,但是假如我们插入超过规定字符长度的数据会怎么样呢?现在我们来看一下。
<ignore_js_op>
这里只是出现了一个 warning()的报警而数据却还是正常的插了进去。
<ignore_js_op>
这个时候我们再来看数据的长度,发现超过的长度被自动的截断了
<ignore_js_op>
此时就产生了长字符串截断漏洞
假设一个完全没有注入的语句为select * from login where user=‘admin‘ and passwd=‘*****‘;
此时我们只需要注册一个用户名为admin 的用户即可利用该漏洞,此时我们就使用我们注册的密码来登录管理员的账号。
<ignore_js_op>
在整个利用过程中我们没有输入任何的敏感字符,所以即便程序的过滤再严格我们也同样可以顺利地通过检测。
而对于这个漏洞的预防方法我相信在我介绍的过程当中各位已经有所察觉了,那就是过滤提交数据的空格字符,但是随着如今各类框架技术的完善这种漏洞已经比较少见了但是并非完全消失,而这种注入漏洞的危害也远高于普通的注入。
标签:pass 管理 字节 用户 字符串 管理员 vcl 情况 查询
原文地址:http://www.cnblogs.com/test404/p/6549813.html