MYSQL注入 BYPASS-1.2默认表名解读

释放双眼,带上耳机,听听看~!

SQL注入(英语:SQL injection),也称SQL注入或SQL注码,是发生于应用程序与数据库层的安全漏洞。简而言之,是在输入的字符串之中注入SQL指令,在设计不良的程序当中忽略了字符检查,那么这些注入进去的恶意指令就会被数据库服务器误认为是正常的SQL指令而运行,因此遭到破坏或是入侵。

0x00 information_schema

这个表(视图)是在MySQL5以后的才有的,现在MySQL4应该是很少了,所以都围绕着MySQL5来讲解,information_schema是用于存储数据库元数据的表,它保存了数据库名,表名,列名等信息,让我们从爆破表名到了可以直接查询。

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_LOCK_WAITS                     |
| INNODB_SYS_TABLESTATS                 |
| INNODB_CMP                            |
| INNODB_METRICS                        |
| INNODB_CMP_RESET                      |
| INNODB_CMP_PER_INDEX                  |
| INNODB_CMPMEM_RESET                   |
| INNODB_FT_DELETED                     |
| INNODB_BUFFER_PAGE_LRU                |
| INNODB_SYS_FOREIGN                    |
| INNODB_SYS_COLUMNS                    |
| INNODB_SYS_INDEXES                    |
| INNODB_FT_DEFAULT_STOPWORD            |
| INNODB_SYS_FIELDS                     |
| INNODB_CMP_PER_INDEX_RESET            |
| INNODB_BUFFER_PAGE                    |
| INNODB_CMPMEM                         |
| INNODB_FT_INDEX_TABLE                 |
| INNODB_FT_BEING_DELETED               |
| INNODB_SYS_TABLESPACES                |
| INNODB_FT_INDEX_CACHE                 |
| INNODB_SYS_FOREIGN_COLS               |
| INNODB_SYS_TABLES                     |
| INNODB_BUFFER_POOL_STATS              |
| INNODB_FT_CONFIG                      |
+---------------------------------------+
59 rows in set (0.00 sec)

我们经常用到的几个表

  1. SCHEMATA表 : 提供了当前mysql实例中所有数据库的信息。
  2. TABLES 表 : 提供了关于数据库中的表的信息。
  3. COLUMNS 表 :提供了表中的列信息

SCHEMATA:

mysql> select * from information_schema.schemata;
+--------------+--------------------+----------------------------+------------------------+----------+
| CATALOG_NAME | SCHEMA_NAME        | DEFAULT_CHARACTER_SET_NAME | DEFAULT_COLLATION_NAME | SQL_PATH |
+--------------+--------------------+----------------------------+------------------------+----------+
| def          | information_schema | utf8                       | utf8_general_ci        | NULL     |
| def          | mysql              | latin1                     | latin1_swedish_ci      | NULL     |
| def          | mysqltest          | latin1                     | latin1_swedish_ci      | NULL     |
| def          | performance_schema | utf8                       | utf8_general_ci        | NULL     |
+--------------+--------------------+----------------------------+------------------------+----------+
4 rows in set (0.00 sec)

TABLES:

mysql> select table_name from information_schema.tables where table_schema=0x6D7973716C74657374;  //注意这里不用引号就要把数据库名转为16进制
+------------+
| table_name |
+------------+
| admin      |
+------------+
1 row in set (0.00 sec)

COLUMNS:

mysql> select column_name from information_schema.columns where table_name=0x61646D696E;  
+-------------+
| column_name |
+-------------+
| id          |
| username    |
| password    |
+-------------+
3 rows in set (0.00 sec)

我们前面说过information_schema储存的是所有数据库的信息,假如我的数据库 mysqltest1 mysqltest2 都存在admin表的话 它都会显示出来

mysql> select column_name from information_schema.columns where table_name=0x61646D696E;
+-------------+
| column_name |
+-------------+
| id          |
| username    |
| password    |
| id          |
| user        |
| pass        |
+-------------+
6 rows in set (0.00 sec)

所以要指定数据库

mysql> select column_name from information_schema.columns where table_name=0x61646D696E and table_schema=0x6D7973716C74657374;
+-------------+
| column_name |
+-------------+
| id          |
| username    |
| password    |
+-------------+
3 rows in set (0.00 sec)

0x01 MySQL

user 表保存的用户密码 和host等等信息

mysql> select user,password from user;
+------------------+-------------------------------------------+
| user             | password                                  |
+------------------+-------------------------------------------+
| root             | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| root             | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| root             | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| root             | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
| debian-sys-maint | *764E40048679D21BBB07CB8DDD18465359DAB4CA |
+------------------+-------------------------------------------+
5 rows in set (0.00 sec)

可能造成的伤害

数据表中的数据外泄,例如企业及个人机密数据,账户数据,密码等。

数据结构被黑客探知,得以做进一步攻击(例如SELECT * FROM sys.tables)。

数据库服务器被攻击,系统管理员账户被窜改(例如ALTER LOGIN sa WITH PASSWORD=’xxxxxx’)。

获取系统较高权限后,有可能得以在网页加入恶意链接、恶意代码以及Phishing等。

经由数据库服务器提供的操作系统支持,让黑客得以修改或控制操作系统(例如xp_cmdshell “net stop iisadmin”可停止服务器的IIS服务)。

黑客经由上传php简单的指令至对方之主机内,PHP之强大系统命令,可以让黑客进行全面控制系统(例如:php一句话木马)。

破坏硬盘数据,瘫痪全系统(例如xp_cmdshell “FORMAT C:”)。

获取系统最高权限后,可针对企业内部的任一管理系统做大规模破坏,甚至让其企业倒闭。

企业网站主页被窜改,门面尽失。

避免的方法

在设计应用程序时,完全使用参数化查询(Parameterized Query)来设计数据访问功能。

在组合SQL字符串时,先针对所传入的参数加入其他字符(将单引号字符前加上转义字符)。

如果使用PHP开发网页程序的话,需加入转义字符之功能(自动将所有的网页传入参数,将单引号字符前加上转义字符)。

使用php开发,可写入html特殊函数,可正确阻挡XSS攻击。

其他,使用其他更安全的方式连接SQL数据库。例如已修正过SQL注入问题的数据库连接组件,例如ASP.NET的SqlDataSource对象或是 LINQ to SQL。

使用SQL防注入系统。

增强WAF的防御力

0x02 文末

本文如有错误,请及时提醒,避免误导他人

@404 aleenzz公众号:aleenzz

人已赞赏
安全教程

MYSQL注入 BYPASS-1.1基本语句

2019-11-12 16:21:30

安全教程

MYSQL注入 BYPASS-1.3符号

2019-11-12 17:06:27

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索