MSSQL bcp用法

通过SQL语句导出数据

1
2
bcp "select * from info..info where date between '2010-02-01' and
'2010-02-04'" queryout "d:\info.out" -SST0P-PC\SQLEXPRESS -Usa -P123456 -c

直接导出数据库表的数据

1
bcp 库名.dbo.表名 out d:\表名.dat -T -n

其中-S后的ST0P-PC\SQLEXPRESS是我本地的服务器名称
-U后的是用户名
-p后的是密码

输入bcp/?查看帮助

用法: bcp {dbtable | query} {in | out | queryout | format} 数据文件
[-m 最大错误数] [-f 格式化文件] [-e 错误文件]
[-F 首行] [-L 末行] [-b 批大小]
[-n 本机类型] [-c 字符类型] [-w 宽字符类型]
[-N 将非文本保持为本机类型] [-V 文件格式版本] [-q 带引号的标识符]
[-C 代码页说明符] [-t 字段终止符] [-r 行终止符]
[-i 输入文件] [-o 输出文件] [-a 数据包大小]
[-S 服务器名称] [-U 用户名] [-P 密码]
[-T 可信连接] [-v 版本] [-R 允许使用区域设置]
[-k 保留空值] [-E 保留标识值]
[-h"加载提示"] [-x 生成 xml 格式化文件]

来源:互联网
mysqldump是备份mysql数据库的一种好工具。它相对于用phpmyadmin等备份工具更加快速,又避免受php.ini等的限制,在windows系统下还可以结合计划任务实现定时远程备份数据库。

操作用mysqldump备份数据库的用户需要的权限比较小,只需要select和lock table的权限就足够了。所以可以创建一个备份数据库的用户,专门用于备份数据库,这样可以避免数据库受到意外的破坏。

在备份数据库之前我们要做足准备功夫,首先创建了执行备份操作的数据库用户——backup,密码为:123456。其次,确定我们要备份哪个数据库,放在哪里。然后,确定数据库的备份文件要放到哪里。

假设我们的任务是要备份一个位于192.168.1.2服务器上,名称为backup_test的数据库,并把备份文件放到D:\bak\的文件夹中。又假设我们的操作系统为windows xp,于是我们可以用以下的方法执行备份操作:

我们可以使用windows自带的命令提示符(调用命令提示符的方法有多种,最常用的就是点击开始菜单,选择“运行”,输入cmd的命令就可以启动了),在命令提示符中输入以下命令:

mysqldump -ubackup -p123456 -h 192.168.1.2 backup_test > D:\bak\bakcup.sql

在这段命令中:

mysqldump 是myqldump的程序名了;

-u 是数据库的用户名,后面紧跟着用户名backup;

-p 是数据库的密码,后面同样紧跟着密码,注意是-p和密码之间不能有空格;

-h 是数据库的地址,如果没有此项表明是备份本地的数据库;

backup_test 要备份的数据库名称;

> 表明该数据库备份到后面的文件,紧跟当然是备份文件的地址了,注意要用绝对文件路径,文件的后缀也可以用.txt。

一旦执行该命令后,mysqldump立即执行备份操作。远程备份数据库要似乎网络的情况,一般远程备份需要一定的时间的。

如果把这个命令写成批处理文件,通过windows的计划任务可以实现定时备份数据。

在windows下用mysqldump备份数据库,因为没有gzip的压缩引擎,因此不能对备份数据库进行压缩,因此如果备份文件多了要经常清理过期的数据库备份文件。

PHP编程的一种失误

嘎嘎,在群里看到xi4oyu发的一个后台的登陆验证部分,当登陆不成功是通过javascript来转向的,但他没有控制后面的输出是否停止,这就引起,当用户浏览器禁用JAVASCRIPT的时候,登陆验证失效,可以直接登陆。

1
2
3
4
5
6
7
8
9
10
11
12
<?php
include("functions.inc.php");
 
if(!logged_in()) {
	echo<<<EOD
	<script language="JavaScript">
	alert("登陆失败!");
	location.href="index.php";
	</script>
EOD;
}
?>

其中logged_in()应该是检测是否登陆的函数,不管结果是正确的还是错误的,只要调过去后面的JAVASCRIPT转向,这个都等于虚设。
在ASP中,我们碰到上面的问题,其实只需要在输出错误信息后,直接一个Response.End就搞定了。但PHP中没有,我们就可以在上面加一个Exit;即可

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
include("functions.inc.php");
 
if(!logged_in()) {
	echo<<<EOD
	<script language="JavaScript">
	alert("登陆失败!");
	location.href="index.php";
	</script>
EOD;
Exit;
}
?>

  TinyURL是一个缩短网址的Web服务,可以把很长的网址变成简单的地址,通常创建TinyURL的方法是去其主页创建,有时候会有用户在客户端自动生成TinyURL的情况,这里介绍一个通过PHP调用TinyURL生成缩短地址的方法。

  TinyURL API的PHP函数如下

<?php
function TinyURL($u){
return file_get_contents('http://tinyurl.com/api-create.php?url='.$u);
}
?>

  调用的例子是

<?php
$url = 'http://www.williamlong.info/';
$tiny = TinyURL($url);
echo('The TinyURL of "'.$url.'" is "'.$tiny.'"');
die();
?>
转自:http://www.williamlong.info/archives/1797.html

金额大小写转化类

using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
 
namespace ConsoleApplication1
{
    /// 
    /// 类    名:  MoneyHelper
    /// 版 本 号:  V1.0
    /// 作    者:  张远强
    /// HomePage:  http://www.mzwu.com/
    /// 创建日期:  2009-05-12
    /// 功能描述:  金额大小写转化类
    /// 
    public sealed class MoneyHelper
    {
        /// 
        /// 转为小写金额
        /// 
        ///
大写金额
        /// 
        public static double ToLower(string money)
        {
            return ToLowerForInt(money) + ToLowerForDec(money);
        }
 
        /// 
        /// 转为小写金额(整数)
        /// 
        ///
大写金额
        /// 
        private static double ToLowerForInt(string money)
        {
            string[] units = new string[] { "亿", "万", "千", "百", "十", "元" };//金额单位数组
            int[] indexs = new int[] { 8, 4, 3, 2, 1, 0 };//金额单位对应位数,如亿位于第8位,百位于第2位,元位于第0位
            string[] items = new string[] { "零", "一", "二", "三", "四", "五", "六", "七", "八", "九" };//十个基本数字(大写)
            double[] results = new double[indexs[0] + indexs[1] + 2];//保存结果,其长度为最大的两个单位位数之和+1
 <a href="http://www.lixiaopeng.org/category-into-the-amount-of-sensitive/#more-994" class="more-link">Read the rest of this entry</a>

ASP缓存类含调用演示

< %
'by xilou,www.chinacms.org,20090115
'最后更新:20090115
'修改记录:无

CONST CACHEPREFIX = "CACHE_" '缓存前缀,不能为空

'说明:
' 1,缓存的格式为Application(CACHEPREFIX & key) = array("缓存key","缓存时间","缓存内容","缓存说明","到期时间")
' 2,缓存key不区分大小写

'添加缓存,不检查缓存是否存在,如果存在则相当于更新缓存
'varAry : 参数,格式为:array("缓存key","缓存时间","缓存内容","缓存说明")
' 缓存key :application()格式相同
' 缓存时间:单位秒,可以为负数,表示立即过期,可以为空,空或不是数字则默认为20分钟过期
' 缓存内容:缓存数据,不支持对对象的缓存
' 缓存说明:缓存描述说明
Function AddCache(varAry)
Dim c,ary(4)
If Not IsArray(varAry) Then
Response.Write "Error:AddCache(varAry)参数错误,参数不是数组"
Response.End()
End If
If UBound(varAry) <> 3 Then
Response.Write "Error:AddCache(varAry)参数错误,数组长度错误"
Response.End()
End If
If varAry(0) = "" Then
Response.Write "Error:AddCache(varAry)错误,key不能为空"
Response.End()
End If
If varAry(1) = "" or Not IsNumeric(varAry(1)) Then varAry(1) = 1200
Application.Lock()
Application(CACHEPREFIX & varAry(0)) = array(varAry(0),varAry(1),varAry(2),varAry(3),DateAdd("s",varAry(1),Now()))
Application.UnLock()
End Function
Read the rest of this entry

ASP 事件类 eventProvider

asp事件类,功能说明:
1,showInfo(e_title,c_url,e_num,e_des,e_time,opera,ip,reurl):显示错误信息
2,getIP():取得客户IP
3,checkPost():验证是否是站外提交
4,getReferer():来路记录
5,getCurURL():取得当前页面路径
6,isRefresh(s1,s2,maxtimes):防刷新 Read the rest of this entry

ASP 通用函数库

< %
    '******************************
    '类名:
    '名称:通用库
    '日期:2008/10/28
    '作者:by xilou
    '网址:http://www.chinacms.org
    '描述:通用库
    '版权:转载请注名出处,作者
    '******************************
    '最后修改:20090108
    '修改次数:2
    '修改说明:
    '20090108 增加下列函数:
    '    A2U(),U2A(),UrlEncode(),UrlDecode(),GBToUTF8(),Bytes2Str(),Str2Bytes()
    '20090108 增加下列函数:
    '    AryToVbsString(arr)
    '目前版本:
    '******************************/
 
    '输出
    Sub Echo(str)
        Response.Write str
    End Sub
 
    '断点
    Sub Halt()
        Response.End()
    End Sub
 
    '输出并换行
    Sub Br(str)
        Echo str & "<br />" & vbcrlf
    End Sub
 
    '简化Request.Form()
    'f : 表单名称
    Function P(f)
        P = Replace(Request.Form(f), Chr(0), "")
    End Function
 
    '接收表单并替换单引号
    Function Pr(f)
        Pr = Replace(Request.Form(f), Chr(0), "")
        Pr = Replace(Pr, "'", "''")
    End Function
 
    '简化Request.Querystring()
    'f : 表单名称
    Function G(f)
        G = Replace(Request.QueryString(f), Chr(0), "")
    End Function
 <a href="http://www.lixiaopeng.org/asp-general-library/#more-967" class="more-link">Read the rest of this entry</a>

-[ 作者信息 ]-----------------------------------------------------------------------

标题: "PHP Undergroud Security"
作者: Omnipresent
邮箱: omnipresent@email.it - omni@playhack.net
主页: http://omni.playhack.net - http://www.playhack.net
日期: 2007-04-12

---------------------------------------------------------------------------------

-[ 译者信息 ]-----------------------------------------------------------------------

译者:riusksk(泉哥)

邮箱:riusksk@qq.com

主页: http://riusksk.blogbus.com

日期:2008-11-15

---------------------------------------------------------------------------------

-[ 摘要 ]---------------------------------------------------------------------

0x00: 前言

0x01: 关注全局变量
# 修补

0x02: 文件包含

# 修补

0x03: 跨站脚本
0x04: SQL注入

_ 0x04a: 绕过登陆验证
_ 0x04b: 1 Query? No.. 2 one!(译注:不好翻译,还是保留原文吧!)

# 修补

0x05: 文件遍历

# 修补
0x05: 结论

---[ 0x00: 前言]

大家好!首先对我糟糕的英语表示抱歉,因为它不是我的母语.

在本教程中,我将会向大家介绍一些主要的php漏洞,以及如何发现、利用并修补它!

-----------------------------------------------------------------------------[/]

---[ 0x01: 关注全局变量]

在php中,你并不一定需要声明变量(这对程序员来说确实是件好事),当你必须使用它时它会“自动”创建的。你可能认为这是件不错的事,确实如此,但这只是偶而发生的事情。

众所周之,PHP经常要获取用户的输入值,并对其进行处理。假如我们在使用一个未声明过的变量时,就可能会引发web程序的安全问题。例如下面一段代码:

[...]
 
     if ($is_admin == 1) {
          //Yes, I'm the admin so call the Administration Pannel
          [...]
     } else {
          //No, I'm not the admin
          [...]
     }

上面的变量$is_admin ,我们在使用前并未声明过,那么我们是否可以绕过该变量(在bugged.php文件中)而访问未经授权的管理面板呢?答案是肯定,但我们该如何添加管理认证权限呢?其实很简单,比如:

http://remote_host/bugged.php?is_admin=1

---[ 修补 ]---
如何修补该漏洞呢?这很容易:在if语句前声明变量$is_admin 即可,代码如下:

$is_admin = 0;
 
[...]
 
     if ($is_admin == 1) {
          //Yes, I'm the admin so call the Administration Pannel(为真,则说明是管理员,因此被重定向管理界面)
          [...]
     } else {
          //No, I'm not the admin(为假,则不是管理员)
          [...]
     }

-----------------------------------------------------------------------------[/]

---[ 0x02: 文件包含]

-----[本地文件包含]

PHP是种杰出的语言,强大而简单;但是如果你不想在你的代码中出现安全问题,那么你就必须注意一下你的代码了。

在一些情况下,使用动态包含文件(部分路径名存在某个变量中)确实是件好事。让我们看一下下面的代码:

<!--p
 
     include "/users/".$include_path.".php";
     [...]
-->

变量$include_path 在使用前并未进行任何声明,因此攻击者可以在该变量中输入恶意数据,使其包含其它文件(比如/etc/passwd..)。

用户通过修改URL中的$include_path 变量值可以很容易浏览其它文件。例如:

http://remote_host/bugged.php?include_path=../../../../etc/passwd%00

包含后的结果如下:

<!--p
 
     include "/users/../../../../etc/passwd%00.php"
     [...]
-->

因此攻击者可以窃取到存在服务器上的所有密码。

- [ 注意 ] -

%00是一个NULL字符,用于“删除”PHP文件扩展名。如果省略掉NULL,将只会显示PHP文件的内容,因为包含文件的扩展名是PHP(include "/users/".$include_path.".PHP")

-------------------------------------------------------------------------------

-----[ 远程文件包含] Read the rest of this entry

第一个目的是谈论得最多的目的,它设想的情形是:一组程序员编写用于生成页面内容的PHP脚本,同时另一组设计人员设计HTML和图形以控制页面的最终外观。分离功能和布局的基本思想就是使得这两组人能够各自编写和使用独立的一组文件:程序员只需关心那些只包含PHP代码的文件,无需关心页面的外观;而页面设计人员可以用自己最熟悉的可视化编辑器设计页面布局,无需担心破坏任何嵌入到页面的PHP代码。

如果你曾经看过几个关于PHP模板的教程,那么你应该已经明白模板的工作机制。考虑一个简单的页面局部:页面的上方是页头,左边是导航条,其余部分是内容区域。

可以看出页面如何由这些模板构造而成:main模板控制着整个页面的布局;header模板和leftnav模板控制着页面的公共元素。花括号"{}"里面的标识符是内容占位符。使用模板最主要的好处在于界面设计者能够按照自己的意愿编辑这些文件,比如设置字体、修改颜色和图形,或者完全地改变页面的布局。界面设计者可以用任何普通HTML编辑器或者可视化工具编辑这些页面,因为这些文件都只包含HTML代码,没有任何PHP代码。

PHP代码全部保存到单独的文件中,这个文件也就是由页面URL实际调用的文件。Web服务器通过PHP引擎解析该文件,然后把结果返回给浏览器。一般地,PHP代码总是动态地生成页面内容,比如查询数据库或者执行某种计算等。下面是一个例子:

// 此处的PHP代码设置
$content使其包含合适的页面内容
 
$tpl->assign('CONTENT', $content); 
 
$tpl->parse('HEADER', 'header'); 
 
$tpl->parse('LEFTNAV', 'leftnav'); 
 
$tpl->parse('MAIN', 'main'); 
 
$tpl->FastPrint('MAIN'); 
 
?>

这里我们使用的是流行的FastTemplate模板类,但其基本思路对于其他许多模板类来说都一样。首先你实例化一个类,告诉它到哪里去寻找模板文件以及哪一个模板文件与页面的哪部分对应;接下来是生成页面内容,把结果赋予内容的标识符;然后,依次解析各个模板文件,模板类将执行必要的替换操作;最后把解析结果输出到浏览器。 Read the rest of this entry