zoukankan      html  css  js  c++  java
  • MySQL注入与informantion_schema库


    MySQL V5.0安装完成会默认会生成一个库(informantion_schema),里面有几十个表,保存着关于当前数据库系统所维护的其他数据库的信息,如数据库名、表、列、数据类型与访问权限等。

    只可读

    informantion_schema库包含多个只读表。它们实际上是视图,而不是基表,因此没有与它们关联的文件,并且您无法在它们上设置触发器。此外,没有该名称的数据库目录。

    只可读意味着,可以对里面的表执行use、select读取表的内容,但不能执行insert、update、delete操作。

    自动开启

    V5.6之前需要手动开启,从V5.6后默认开启;

    和MySQL注入有关的3个表

    以下基于MySQL 5.7.26版本进行研究;

    里面虽然有很多表,但是作MySQL注入的话,先了解这3个表:

    • schemate
    • tables
    • columns

    手动注入的使用案例

    表介绍

    表名:SCHEMATA

    • 作用:存储数据库名
    • 列名
      • SCHEMA_NAME
    • 查全部库名DEMO : select schema_name from information_schema.schemata;

    表名:TABLES

    • 作用:存储表名
    • 列名:
      • TABLE_SCHEMA :表所属的数据库名称
      • TABLE_NAME: 表的名称
    • 查全部表名DEMO : select distinct table_name from information_schema.tables;

    表名:COLUMNS

    • 作用:存储所有字段
    • 列名
      • TABLE_SCHEMA : 表所属的数据库名称
      • TABLE_NAME :所属表的名字
      • COLUMN_NAME : 字段名称
    • 查全部字段名DEMO : select distinct column_name from information_schema.columns;

    查询一个表中全部字段的过程

    模拟注入的流程

    # 获取当前在使用的库名
    select database(); 
    

    # 获取当前在使用的表名
    select table_name from information_schema.tables where table_schema=(
        select database()
    ); 
    

    # 获取当前使用表的全部字段名
    select column_name from information_schema.columns where table_name=(
        select table_name from information_schema.tables where table_schema=(select database())
    ); 
    


    这篇文章对你有帮助吗?作为一名程序工程师,在评论区留下你的困惑或你的见解,大家一起来交流吧!
    微信公众号: Mysticbinary
    Github:https://github.com/Mysticbinary
    本文版权归作者所有,欢迎转载,但未经作者同意请保留此段声明,请在文章页面明显位置给出原文链接
    声明:本文章仅限于讨论网络安全技术,请勿用作任何非法用途,否则后果自负,本人和博客园不承担任何责任!
  • 相关阅读:
    Clean Code(三):注释
    Clean Code(二):函数
    mysql中查询某字段所在的表方法
    对于POI的XSSFCell 类型问题
    Clean Code 笔记 (一):命名
    java 注解
    搭建Eureka服务时报Cannot execute request on any known server 错误
    Jquery获取子父类方法
    Oracle 查询id相同多个数据取一条
    Ajax的使用及后台如何传参
  • 原文地址:https://www.cnblogs.com/mysticbinary/p/14402341.html
Copyright © 2011-2022 走看看