fsockopen真好用,PHP的高级别网络函数!

今天用Burp工具分析了一个网站的大致功能后打算写程序把该网站我感兴趣的内容全抓下来。 一开始用java写了一小段,但哥对Java不熟悉哇,而且哥觉得Java的那么多流的类,如果仅仅操作文本文件,就显得封装的太厚了。又想,用C/C++写。虽然用C/C++写的最多代码,但事实上C/C++的字符串操作一想起来就嫌烦,而且正则式也烂得可以,数组不支持用字符串索引也真够麻烦,虽然可用C++的std::map容器。最后决定用PHP写…PHP真是太好用了~~~犹赞超强大的正则式,同perl的正则式有得一拼啊。如果换用标准C字符串函数和GNU的一个超难用的C正则式库,那要写死人啊~~~ 最开始的思维定势就是要先开一个socket(N多参数要填入), 省略bind(操作系统自已选一个本地端口绑定),第二步 connect 到主机,第三步往 socket 里写东西… 虽然只几个简单函数,但要填的几个参数也真够难记的。嘿,偶像发现事实上PHP提供了high-level的socket函数 fsockopen()。哇,太方便了。 fsockopen() returns a file pointer which may be used together with the other file functions (such as fgets(), fgetss(), fwrite(), fclose(), and feof()) fsocketopen返回一个文件指针,然后就可以用常用的文件函数操作它啦!!!和操作文本一件一样~~~ 比 Java 的 java.io.socket 类还要方便~~虽然java也抽象的不错,但我就是嫌流对象封装太厚了。人生苦短,何必自找麻烦呢。 用完以后用 fclose 把它fsockopen返回的文件指针关掉! 看个例程: <?php $fp = fsockopen(“udp://127.0.0.1”, 13, $errno, $errstr); if (!$fp) { echo “ERROR: $errno – $errstr \n”; } else { fwrite($fp, “\n”); echo fread($fp, 26); fclose($fp); } ?> 上面的例程从本机的UDP时间服务器里读取当时的时间和日期。如果你本机开了标准的时间服务的话~~~ ...

November 1, 2010 · 1 min · kamus

tcpdump基础教程

英文原文出自: A tcpdump Tutorial and Primer 翻译: ykyi.net Tcpdump是信息安全专业人士最重要的一个网络分析工具。对这个工具有一个深入的理解对于每一个喜欢透彻理解tcp/ip协议栈的人来话都是必须的。但很多人选择一个更高级别的工级,比如Ethereal Wireshark,但是我认为这是一个错误! 不应该机械的反复记忆概念而应该做到真正的理解,因为对tcp/ip协议簇保持清醒的认知非常的重要。如果对该协议簇能够完全精通,那你调试网络的能力则能比同行们高出几个档次。但是,要学精神tcp/ip协议簇,只有不够的实践剖析它们才能做到。 当你使用某种工具来显示网络中的原始流量信息时,人类,而不是机器,就要承担起分析这些流量的重任了。用这种方法就可以不断地加深对tcp/ip的理解。并且,用这种学习方法的时候,我在任何可能的情况下都强烈主张使用tcpdump而不是其它工具。 选项 下面将列出一些用例子的选项,这样可以在你使用这个工具时对你有很大的帮助。这些选项很容易淡忘或与其它类型的滤镜(Filter,笔者认为这里的滤镜实际上指的是其它网络工具)混淆。比如, ethereal。所以,希望这篇文章可以作为一个参考文档,我就是这样使用它的。 首先,我要先介绍几个我认为很方便的tcpdump的选项。第一个是 -n, 这样的话域名就不会被解析了,而是用数字IP的形式显示地址(译者注: 同netstat的-n是一样的喔)。第二个是 -X, 这样就会同时把包的内容以ASCII码和十六制的形式显示。最后一个是 -S, 它个选项会显示绝对序号而不是相对序号。因为当包被隐藏起来的话,你也不会看到奇怪的序号。请谨记,tcpdump较之其它工具的优势之一就是可以与包(packets)手工交互。 值得注意的是,tcpdump默认只会从packet中取出前96个字节。如果你想要多一些的话,那就需要需要把 -s xxxx 加上。这里的xxxx是你确切想要抓取的总字节数。如果我使用这个选项的话,我通常会把这个数字设定为1514而得到所有的数据。下面是一个简短的列表列出我经常使用的选项。 -i any: 监听所有的介面。这样你就知道是不是有流量产生。 -n: 不要解决主机名,以IP数字形式显示主机。 -nn: 不要解析主机名或端口名字。 -A: 以ASCII字符显示包的数据。 -X: 同时以十六进制和ASCII字符显示包的数据。 -XX: 同-X,但也会显示 Ethernet头部。 -v, -vv, -vvv: 详细,更详细,再详细些! 冗余输出得到的包信息。 -c: 抓取 x 个包后就停下。 -S: 打印绝对序号。 -e: 同时得到Ethernet头部。 -q: 显示少一点协议信息。 -E: 用提供的密钥解密 IPSEC 流量。 -s: 设置显示前多少个字节的包内容(snaplength)。 tcpdump 4.0的snaplength的长度从68字节改成了96字节,这样你就可以看到多些内容了。但仍然看不到所有的内容,指定 -s 1514 得到包的所有内容。 http://ykyi.net 一些基本的应用 根据我要查看的不同流量,我使用不同的选项组合,如下: 1.Basic communication // see the basics without many options tcpdump -nS ...

October 31, 2010 · 4 min · kamus

Burp套件教程(Burp Suite)

原文来自http://portswigger.net/burp/ ykyi.net 翻译 使用Burp套件(Burp Suite) 当启动Burp Suite以后,Burp的代理服务器就在本地的loopback介面上的8080端口上开始运行啦!通过设定浏览器使用这个Burp代理服务器,所有的WEB流量就可以被截获,窥视,修改。默认设置下,对非媒体资源(non-media)的请求将被截获而且显示出来(默认的设置可以在Burp Proxy的OPTION选项里修改)。所有的穿过Burp代理服务器的WEB流量将被自动分析并添加到站点地图里,这样就可以知道访问过的网站的内容和功能了。对于Burp的收费Professional版,默认情况下,所有的请求还会自动被Burp Scanner分析从而确定易受攻击的部分。 在你就要刻苦大干一场之前,你需要完美地定义出你的工作的Target Scope(Burp的术语名词,不译出)。最简单的办法就是先浏览目标网站,然后定位相关主机和目录,再使用context菜单项把URL们添加到Target Scope里。中央范围配置(Central Scope Configuration)可以用来配置各个Burp工具。 当你浏览目录WEB网站或程序的时候,你就能对截获的请求和响应进行手工编辑,或者你也可以完全关闭拦截功能。在拦截功能被关闭的情况下,每一条请求和响应仍然被记在历史记录里,所有的WEB内容也会被添加到站点地图里。 除了可以用代理修改拦截下面的讯息,你也可以把迅息发送到其它Burp工具。这样就可以完成各种各样的不同的功能,比如: 》你可以通过把请求发给Repeater来手动调节对WEB程序的测试,也可以不断地重发每个请求。 》对于Professional版,可以把请求发给Scanner,就可以完成主动和被动漏洞扫描。 》你可以把请求发给Intruder,就可以发起一个用户自定义的自动测试来确定一些常见的漏洞。 》如果你发现响应中有会话令牌或者其它本应该是不可预测的ID号,你就可以把这个响应发给Sequencer来测试这个令牌的随机性。 》可以把请求或响应中被模糊化处理的数据发给Decoder来尝试自动解析出明文。 》对于Professional版,你可以使用各种Engagement工具来提高你的工作效率。 对于代理的历史记录,站点地图中的主机·目录·文件 以及Burp工具的任何显示请求和响应的地方 你都可以执行以上任何操作。 中央日志功能(central logging function)记录下来每个Burp工具的所有的响应和请求。每个Burp工具都可以在单独的窗口中运行也可以在TAB WINDOW下运行。每个工具和整个套件的配置可以被保存下来重复使用。对于Professional版,你还可以保存每个工具的状态,这样你就可以随心所欲的重新载入之前保存的状态。 copyright ykyi.net

October 28, 2010 · 1 min · kamus