美文网首页web安全
mysql手工注入

mysql手工注入

作者: shadowflow | 来源:发表于2018-07-04 15:39 被阅读0次
    mysql数据库结构:
    mysql数据库结构.PNG
    SQL层的功能:
    1. 判断语法,语句,语义
    2. 数据库对象授权情况判断,授权失败不继续
    3. 解析(解析器):将sql语句解析成执行计划,运行执行计划,生成找数据的方式
    4. 优化(优化器):运行执行计划,基于算法,从执行计划中选择代价最小的交给“执行器”
    5. 执行(执行器):运行执行计划,最终生成如何去磁盘找数据的方式
    6. 将取出的数据,交由下层(存储引擎层)进行处理
    7. 最终将取出的数据抽象成管理员或用户能看懂的方式(表),展现在用户面前
    8. 查询缓存:缓存之前查询的数据
    MySql内置库:
    • mysql:
      保存有账户信息,权限信息,存储过程,event, 时区等信息
    • sys:
      包含了一系列的存储过程,自定义函数,以及视图来帮助我们快速的了解系统的元数据信息。(元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等)
    • performance_schema:
      用于收集数据库服务器性能参数
    • information_schema:
      提供了访问数据库元数据的方式。
      其中保存着关于MySql服务器所维护的所有其他数据的信息。如数据库名,数据库表名,数据库的表,表的数据类型与访问权限等
    核心原理:

    mysql内置的information_schema库,它功能强大,是我们进行mysql注入的基石


    通过information_schema我们可以窥透整个mysql的运行情况,也可以查看到数据库中所有的数据信息

    查询数据库核心语法:
    功能名称 查询语句
    查库 select schema_name from information_schema.schemata
    查表 select table_name from information_schema.tables where table_schema='库名'
    查列 select column_name from information_schema.columns where table_name='表名'
    查数据 select 列名 from 库名.表名

    注:'库名' , '表名' 可以换成十六进制
    例如:
    select column_name from information_schema.columns where table_name=0x75736572;(0x表示是十六进制,后面的数字是user转换成十六进制的结果)
    相当于
    select column_name from information_schema.columns where table_name='user';


    tips:
    • 所有类型的sql注入,都是基于查库,表,列语句
    • 如果数据太多,导致无法返回查询结果
    1. 查询的场景:
      可利用limit限定返回的数量及位置,依次查询:
      select column_name from information_schema.columns where table_name=0x75736572 limit 0,2;
    2. 回显数据的场景:
      concat函数 链接多个数据成为一条返回结果
    • 在一些场景,想要快速获取数据,需借助工具,如:BurpSuit

    相关文章

      网友评论

        本文标题:mysql手工注入

        本文链接:https://www.haomeiwen.com/subject/hqgeuftx.html