在之前的博文中曾介绍过如何对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注入了。

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

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

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

  2. 燕十八 Mysql 笔记 68 课

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

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

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

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

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

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

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

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

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

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

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

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

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

  9. 【SQL开发实战技巧】系列(十八):数据仓库中时间类型操作(进阶)INTERVAL、EXTRACT以及如何确定一年是否为闰年及周的计算

    系列文章目录 [SQL开发实战技巧]系列(一):关于SQL不得不说的那些事 [SQL开发实战技巧]系列(二):简单单表查询 [SQL开发实战技巧]系列(三):SQL排序的那些事 [SQL开发实战技巧] ...

最新文章

  1. nginx+tomcat配置负载均衡集群
  2. php获取循环,PHP循环获取GET和POST值的代码
  3. al-khaser 调试器,虚拟机检测工具
  4. windows下磁盘IO性能数据评测
  5. 70 SD配置-发票凭证配置-定义回扣协议类型
  6. 数据库事务的四个隔离级别
  7. cve-2014-7911安卓提权漏洞分析
  8. amaze ui使用简介
  9. 5G协议下载地址及介绍
  10. 手机APP测试类型与方法
  11. matlab 水文断面,基于MATLAB的河道横断面的绘制
  12. 结合可变形注意力的视觉Transformer
  13. 智慧工厂三维可视化决策系统平台(数字孪生)-解决方案开发案例
  14. curl: (7) Failed to connect to 2600:1f1c:2d4:8900:17a1:2e94:9f90:f91e: 网络不可达
  15. 在东北老家坐长途车的遭遇
  16. 线性代数之向量间线性关系
  17. 51nod 1431 快乐排队
  18. OPC通讯开发——客户端开发工具WTopcclient说明手册部分翻译及个人补充
  19. C++OpenCV去除发票中红色的印章部分实战
  20. 用H5做直播网站源码,如何实现格式推流和播放

热门文章

  1. 对openflow 1.0协议的扩展
  2. 130825组队赛-Regionals 2012, North America - East Central NA
  3. java 异步查询转同步多种实现方式:循环等待,CountDownLatch,Spring EventListener,超时处理和空循环性能优化...
  4. JAVA 程序员需要用到 10 个测试框架和库
  5. JDK自带内存及线程分析工具
  6. 【EF】Entity Framework 6新特性:全局性地自定义Code First约定
  7. 【Java并发性和多线程】如何创建并运行java线程
  8. .NET领域驱动设计—初尝(原则、工具、过程、框架)
  9. 温州动车事故中受伤的“我”,还好吗?
  10. Maven 插件开发