zoukankan      html  css  js  c++  java
  • SQL注入之手工注入

    SQL注入从注入的手法或者工具上分类的话可以分为:  

      · 手工注入(手工来构造调试输入payload)

      · 工具注入(使用工具,如sqlmap)

    今天就给大家说一下手工注入:

      

    手工注入流程

    判断注入点

    注入的第一步是得判断该处是否是一个注入点。或者说判断此处是否有SQL注入漏洞。最简单的判断方法就是在正常的参数后加单引号 '。 id=1'

    以看到数据库报错了,最重要的就是能够看懂数据库的错误信息,从错误信息中我们可以知道是单引号的匹配出了问题,也就是说我们添加的单引号成功被数据库解析,那么我们就可以通过闭合这个id这个参数,然后插入自己构造的sql语句实施攻击。我们按照步骤来,一般可以使用联合表的方式来提取自己感兴趣的信息(union),但是使用union语句有个前提就是union 后面的语句必须与前面的语句字段数以及类型必须一直,否则数据库会报错

    如果页面显示了SQL的错误信息,进一步测试: id=1' or 1=1--+ 

    再测试: id=de' and 1=2--+  ,基本确定注入存在

    判断查询的字段数,使用order by number

    输入 order by 5

    order by 4 均会报错

    可以看到order by 3的时候页面显示正常

    确定回显位

    确定了查询数据的位数,然后开始确定网页的回显位。回显位就是确定查询出来的数据是在网页上面的哪个位置显示出来。使用Union联合查询来确定回显位。

    获取信息函数:

    user() 获取当前用户用户

     database() 获取当前数据库

    version() 获取数据库版本

    @@version_compile_os 获取操作系统版本

     举个例子(就不和大家一一解释啦):

    获取数据库里的数据

    获取所有的数据库名:

    获取所有的表名:

    获取所有的列名:

    我们就拿users这个表举个例子吧

    获取数据:

    单个数据取出

    全部数据取出

    总结:

    一个手工的sql注入接班就是这样,上面有什么错误,欢迎大家指出.

  • 相关阅读:
    bzoj3816 矩阵变换
    bzoj5029 贴小广告
    【BZOJ-1208】宠物收养所 Splay
    【BZOJ-2879】美食节 最小费用最大流 + 动态建图
    【BZOJ-1984】月下“毛景树” 树链剖分
    写在SDOI2016Round1前的To Do List
    BZOJ solve 100 纪念
    BZOJ-1143&&BZOJ-2718 祭祀river&&毕业旅行 最长反链(Floyed传递闭包+二分图匹配)
    【SDOI2009】解题汇总
    BZOJ-1879 Bill的挑战 状态压缩DP
  • 原文地址:https://www.cnblogs.com/qiantan/p/10669419.html
Copyright © 2011-2022 走看看