zoukankan      html  css  js  c++  java
  • 二阶注入

    还有一篇蛮科普原理性的文章: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

  • 相关阅读:
    学习笔记TF034:实现Word2Vec
    学习笔记TF033:实现ResNet
    学习笔记TF032:实现Google Inception Net
    学习笔记TF031:实现VGGNet
    学习笔记TF030:实现AlexNet
    学习笔记TF029:实现进阶卷积网络
    学习笔记TF028:实现简单卷积网络
    学习笔记TF027:卷积神经网络
    学习笔记TF026:多层感知机
    学习笔记TF025:自编码器
  • 原文地址:https://www.cnblogs.com/xishaonian/p/6135924.html
Copyright © 2011-2022 走看看