在之前的博文中曾介绍过如何对ASP网站进行手工注入,ASP网站大都是采用ACCESS或MSSQL数据库,因而所谓针对ASP的SQL注入其实也就是根据ACCESS或MSSQL数据库的特点来构造查询语句。除此之外,对于PHP网站则大都是采用MySQL数据库,这里要进行手工注入时所使用的查询语句与之前就不相同了,而且相对比较复杂。为了更好地理解,在进行针对PHP网站的注入之前,有必要先了解一些MySQL的基本特点和常用操作语句。

首先需要搭建一个MySQL的实验环境,这里推荐在Linux系统中安装MySQL服务。

挂载光盘并设置yum源之后,安装运行mysql服务。

# yum install mysql        安装mysql

# service mysqld start    运行mysql

MySQL的默认管理员账号是root,没有设置密码,所以可以执行“mysql –u root”命令,以root用户身份登录MySQL。不过建议最好先用mysqladmin命令工具为root用户设置一个密码,然后用密码登录MySQL。

登录MySQL之后,可以在带有提示符“mysql>”的交互式命令环境中进行操作。在该操作环境中,输入的每一条数据库管理命令必须以分号“;”表示结束,可以不区分大小写。

(1) 查看基本信息

执行“select version();”命令查看MySQL版本,可以看到当前版本为5.0.77。

mysql> select version();

+-----------+

| version() |

+-----------+

| 5.0.77 |

+-----------+

1 row in set (0.00 sec)

执行“select @@version_compile_os;”命令查看操作系统版本,可以看到当前系统为redhat linux。

mysql> select @@version_compile_os;

+----------------------+

| @@version_compile_os |

+----------------------+

| redhat-linux-gnu |

+----------------------+

1 row in set (0.00 sec)

执行“select user();”命令查看当前用户,可以看到当前用户为root。

mysql> select user();

+----------------+

| user() |

+----------------+

| root@localhost |

+----------------+

1 row in set (0.07 sec)

执行“select database();”命令查看当前打开的数据库,可以看到当前没有打开任何数据库(NULL)。

mysql> select database();

+------------+

| database() |

+------------+

| NULL |

+------------+

1 row in set (0.01 sec)

(2) 查看数据库列表

执行“show databases;”命令可以查看MySQL中共包含了哪些数据库,默认情况下MySQL中内置了3个数据库:information_schema、mysql、test。

mysql> show databases;

+--------------------+

| Database |

+--------------------+

| information_schema |

| mysql |

| test |

+--------------------+

3 rows in set (0.00 sec)

(3)切换数据库

执行“use information_schema;”命令,可以打开information_schema数据库。

mysql> use information_schema;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

information_schema是MySQL5以后的版本中默认自带的一个数据库,它里面存放了由用户在MySQL中创建的所有其它数据库的信息。因而在进行PHP注入时,主要也就是针对这个数据库进行操作。

(4)显示数据库中的表

打开数据库之后,执行“show tables;”命令可以显示数据库中所包含的表。在information_schema中共包含了17个表。

mysql> show tables;

+---------------------------------------+

| Tables_in_information_schema |

+---------------------------------------+

| CHARACTER_SETS |

| COLLATIONS |

| COLLATION_CHARACTER_SET_APPLICABILITY |

| COLUMNS |

| COLUMN_PRIVILEGES |

| KEY_COLUMN_USAGE |

| PROFILING |

| ROUTINES |

| SCHEMATA |

| SCHEMA_PRIVILEGES |

| STATISTICS |

| TABLES |

| TABLE_CONSTRAINTS |

| TABLE_PRIVILEGES |

| TRIGGERS |

| USER_PRIVILEGES |

| VIEWS |

+---------------------------------------+

17 rows in set (0.00 sec)

在这些表中比较重要的有:

schemata:用于存放其它所有数据库的名字。

tables:用于存放MySQL中所有数据库的表的名字。

columns:用于存放MySQL中所有数据库的所有表中的所有字段的名字。

(5)显示表中的内容

执行“select * from schemata;”命令可以显示schemata表中的所有内容:

从命令显示的结果中可以看到,当前系统中共包含了3个数据库,这与之前查看到的结果一致。

(6)利用information_schema数据库查看其他所有数据库的内容

在了解了上述基础知识之后,我们就可以通过information_schema数据库来查看到其他所有数据库中我们所关心的内容。

为了更好的演示,我们先执行“exit”命令退出MySQL环境,然后再重新登入。

登入之后,我们先不打开任何数据库。

假如我们想知道mysql数据库中都包含了哪些表,可以执行命令:

由于当前我们并没有打开任何数据库,因而“information_schema.tables”就表示information_shema数据库中的tables表,前面介绍过,这个表中存放了其他所有数据库的表的名字。

“table_name”是tables中用于存放表名的字段,“tables_schema”是tables中用于存放数据库名的字段。

再如我们想知道mysql数据库的user表中包含哪些字段,可以执行命令:

掌握了这些知识之后,接下来我们就可以进行手工PHP注入了

本文转自 yttitan 51CTO博客,原文链接:http://blog.51cto.com/yttitan/1570620

mysql手工注入imformation_网络安全系列之十八 MySQL基本操作(PHP注入基础)相关推荐

  1. 网络安全系列之十八 MySQL基本操作(PHP注入基础)

    在之前的博文中曾介绍过如何对ASP网站进行手工注入,ASP网站大都是采用ACCESS或MSSQL数据库,因而所谓针对ASP的SQL注入其实也就是根据ACCESS或MSSQL数据库的特点来构造查询语句. ...

  2. 布尔教育mysql入门视频教程_布尔教育燕十八mysql入门视频教程的资源(源码课件)推荐...

    <布尔教育燕十八mysql入门视频教程>是mysql基础入门课程,随着mysql不断发展,现在使用mysql+php做网站已成为主流web开发技术,如果你想学习动态网页设计,那么建议你选择 ...

  3. 燕十八 Mysql 笔记 68 课

    68 建表过程与字符类型的意义 目的:要学会建表 知识点:列类型 怎么建表? 以在 A4 纸上建表为例,表头写完就算表建好了,后面的是插入数据,建表的过程其实就是一个声明字段的过程 学号 姓名 家乡 ...

  4. Go入门系列(十八) 反射、包和测试工具

    本系列文章目录 展开/收起 Go入门系列(一) 初识Go语言 Go入门系列(二) 变量.指针.数据类型简介和作用域 Go入门系列(三) 基础类型--整型.浮点型.布尔类型和字符串 Go入门系列(四) ...

  5. 燕十八 mysql 复习_燕十八 Mysql 笔记 68 课

    68 建表过程与字符类型的意义 目的:要学会建表 知识点:列类型 怎么建表? 以在 A4 纸上建表为例,表头写完就算表建好了,后面的是插入数据,建表的过程其实就是一个声明字段的过程 学号 姓名 家乡 ...

  6. Reflex WMS入门系列二十八:空白标签打印

    Reflex WMS入门系列二十八:空白标签打印 贴在托盘上的标签,因托盘上的货物的移动,使用等缘故可能会导致标签丢失.在很多场景下又需要扫描托盘标签,所以Reflex WMS系统提供了打印空白标签的 ...

  7. 布尔教育mysql优化_布尔教育燕十八mysql优化视频课件源码分享

    目前数据库是大多数系统进行数据存储的基础组件,数据库的效率对系统的稳定和效率有着至关重要的影响:为了有更好的用户体验,数据库的优化显得异常重要.那么我们要从那些方面对我们的数据库进行优化呢?让我们在& ...

  8. 燕十八 mysql优化_布尔教育燕十八mysql优化视频资料分享

    目前数据库是大多数系统进行数据存储的基础组件,数据库的效率对系统的稳定和效率有着至关重要的影响:为了有更好的用户体验,数据库的优化显得异常重要.那么我们要从那些方面对我们的数据库进行优化呢?让我们在& ...

  9. 燕十八 mysql_布尔教育燕十八mysql优化视频课件源码分享

    目前数据库是大多数系统进行数据存储的基础组件,数据库的效率对系统的稳定和效率有着至关重要的影响:为了有更好的用户体验,数据库的优化显得异常重要.那么我们要从那些方面对我们的数据库进行优化呢?让我们在& ...

最新文章

  1. c语言ecit,Arthritis Rheumatol:新型JAK3/TEC抑制剂PF-06651600(ritlecitinib)对中重度类风湿性关节炎的疗效和安全性...
  2. 解决 | 此数据库文件跟当前sql server实例不兼容 sql server2008无法连接到(local)...
  3. 高效掌握新技能的「树型思维」
  4. 博客文章列表(二)——算法、数据结构、数据库、ABCD
  5. 利用MyBatis的动态SQL特性抽象统一SQL查询接口
  6. 电脑键盘练习_电脑新手最关心的:零基础如何快速掌握电脑打字的技巧?
  7. linux基础知识3
  8. 基于python的图像变换(翻转、平移、缩放、旋转、仿射和透视变换)
  9. R语言入门(2)——R包的安装
  10. Axure一些常用模板下载(免费模板)
  11. 电信运营商IT系统建设概况
  12. 企业微信openid转userid失败问题
  13. PostgreSQL数据库——Pigsty configure
  14. 如何在windows电脑网页上创建苹果ID?
  15. Python中的np.random.binomial()二项式分布函数详解
  16. python实现jacknife交叉验证
  17. idea如何全局搜索关键字_intellij idea 怎么全局搜索
  18. 云呐|固定资产条码管理系统的应用
  19. Java处理除数为零的情况
  20. 贵金属白银实时走势图——解读要领

热门文章

  1. 表格状态列_不用软件也能做好多个项目跟进管理?我用一个协同表格就搞定
  2. IDEA导入项目笔记
  3. java怎么让窗口居中显示图片_Java_Swing中让窗口居中显示的方法(三种方法)
  4. jupyter notebook python环境_jupyter Notebook环境搭建
  5. iphone储存空间系统怎么清理_iPhone储存空间里其他占了几十GB,怎样彻底删除它?...
  6. mysql windows 乱码问题_MySQL:windows中困扰着我们的中文乱码问题
  7. [ACM]HDU Problem 2000 + Java
  8. html5操作类名API——classlist
  9. 设计模式-15-建造者模式
  10. Python中添加中文注释报错SyntaxError: Non-UTF-8 code starting with '\xc1'