首页 > 代码库 > 二阶注入
二阶注入
原文转载于:http://blog.sina.com.cn/s/blog_8ff08f3001019wif.html
还有一篇蛮科普原理性的文章:http://book.51cto.com/art/201006/207598.htm
PS:我的理解是,第一次注入数据库的时候使用了特殊符号没有起到SQL注入攻击的效果,但是在程序第二次调用的时候又会导致注入,这类注入叫做二阶注入!
米哥的理解是:插入的数据中中带有数据库内置识别符号,下一次更新数据时候导致数据库识别出错并执行。
好像米哥的理解更加的有技术性一些。俺对技术还是了解的不够透彻。
second-order sql injection
也算是一种特别有益的绕过过滤的一种方法
当用户输入的恶意数据首次传送给数据库时
将会进行安全的处理
但当应用程序调用时将会以一种危险的方式运行
举例:
搜索时如若我们搜索:bingdao‘
在没有进行安全处理的应用程序中将会报错
反之
数据库将会进行如下的操作:
SELECT author,title from books where name=‘bingdao‘‘‘;
成功的进行查询
这是由于应用程序安全的将‘转义为‘‘
达到安全的目的
但如若我们是在注册用户时这样运行那么将是这样:
INSERT into users(username,password,id,privs) values(‘bingdao‘ ‘‘ ,‘fuckyou‘, 1, 1);
成功的注册 并且用户名为bingdao‘
目前为止一切正常
假如我们再去修改密码
修改密码时会验证原密码
于是数据库就这样查询:
SELECT password from users where username=‘bingdao‘‘;
只有在传入数据到数据库时才会进行安全的转义(猜想的一种情景)
这样数据库就会报错
那么我们就利用这个漏洞吧
‘ or 1 in (select password from users where username=‘admin‘)--
这样当我们再次修改密码时就会将admin的密码返回出来!
但本技巧理论性较强
我也尚未实验过
大家随意看看
THE END
二阶注入
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。