文字
即然Q-Zone是在客户端对用户输入数据进行过滤的,那么就给我们留下了可利用的机会。我们可以绕过客户端的限制,直接修改输入数据进行提交。但是Q-Zone对用户提交数据还进行了另外一个限制,就是不允许外站提交,在这里我们保存的HTML文件也无法正常提交数据。因此,我们必须另外想一个办法,修改提交数据。
1、截获提交数据
我们先运行一个叫作WSockExpert的软件,运行WSockExpert后点击工具栏上的“打开”按钮,显示当前的进程列表。如果是用QQ的面板打开Q-Zone的,那么在进程列表中选择“QQ.exe→**的家”;如果是用IE打开Q-Zone的,可以在IE进程中找到相应的进程,确定后点击“Open”按钮开始监视与网站服务器交换的数据。
返回到Q-Zone网页中,在“空间名称”处输入任意可提交的字符如“1234567890”,然后点击“提交”,回到WSockExpert中,点中间列表框中的第3行“send”附近的数据栏,可以看到提交的数据内容:
“Content-Length: 20
Cookie: pvid=1575119174; portalentryurl=http://vnet.qq.com/hn/; zzpaneluin=41346583; zzpanelkey=753923CF61AB165D613966B82F8E7F6B2D9E5A681CE7507E9A677086A89BC6DD; clientver=1305; skey=; uin=g0
spacename=1234567890”
“Cookie”是Cookie内容,包含了用户验证的东西;而“spacename=1234567890”就是我们提交的空间名称数据了;前面的“Content-Length: 20”是提交的这段数据的长度。在数据中,还可以看到“Referer:
http://q-zone.qq.com/cgi-bin/user/cgi_show_spacename”,这是我们要提交的服务端网页地址。
2、修改提交数据
将下面窗口中的提交数据内容全部复制后,保存为一个1.TXT文件,将代码中的“spacename=1234567890”改为:“spacename=<script>alert("test")</script>”,“Content-Length: 20”改为“Content-Length: 40”
现在我们只要将这些数据提交到服务器上,就可以绕过客户端对数据的过滤了,这就要用到另外一个叫作NC的工具了。
将上面保存的“1.txt”复制到与“nc.exe”同一个文件夹中,打开Windows系统中的命令提示符窗口,在命令行下进入NC.exe所在的文件夹,输入“nc -vv q-zone.qq.com 80<1.txt”,命令执行后,就会向远程服务器提交我们修改过的数据了。
提示:我们可以将“Test”换成任意中文,但是需要先转换为IE编码,例如“测试”的IE编码为“%B2%E2%CA%D4”,具体的转换过程这里就不用多说了。
3、检测代码执行结果
打开我们的Q-Zone,此时会自动弹出一个提示窗口。说明我们已经在远程的网页中成功的插入了“<script>alert("test")</script>”这条代码!同时在修改空间名称的页面中,可以看到已提交修改的原来被限制了的空间名称。