本篇内容简介:
表单式入口的破解过程演示以及相关问题。
***********************************
我们通常用AD破解那些有弹出式密码输入框的网站,这个相对容易一些。但是有不少网站没有弹出式密码输入框,它的登录窗口是HTML加密网页(form表单式)。对付这样的网站有时非常麻烦,因为固定框入口实在花样太多,其登录窗口、错误提示方法和信息,经常各不相同。所以很难编写一个通用的教程。我只能以具体的网站做为例子,来演示破解的方法和过程。下面我就用一个网站作为例子来说明一下固定框的破解方法。
★观察入口地址
下图是一个网站的首页,页面中间的[Members]字样就是会员区入口。
★观察登录页面
在首页点击会员区入口后,并没有弹出任何窗口,而是进入另外一个页面。这里就是登录页面,是个典型的双输入框表单式入口。在页面中有两个输入框,分别用来填入用户名和密码。
★查看登录网页源文件
从浏览器的[查看]菜单中选择[源文件],就可以打开一个记事本文件。不管网页的源文件多么复杂,里面最重要的就是下面这段从form开始到/form结束的内容,它就是这个表单的完整信息。action后面的地址,告诉你这个表单数据将要提交到何处去验证,这里它省略了部分地址,因为前面已经定义过网站名称,完整的action地址应该是http://www.femalecelebrities.com/members。现在你应该理解为什么这种入口叫做form,就是因为它是用一个form表单将提交的数据发送到action指定的地方去验证。
不要被表单里面那些字符迷惑住,它们大多是定义这个表单在网页中的位置、大小、颜色什么的。我们唯一需要仔细查看的只是那些input后面的东西,这些就是表单提交的数据,也就是post data。分析这些东西,就可以判断出正确的post data。从这个表单中我们可以看出,它提交的数据有三个,uname、pw、submit。
搞清楚input后面的那些东西的含义,对你正确的判断选择post data很有帮助。type就是这个提交项目的类型,类型后面的数值有多种定义格式。数值text代表提交的类型是文本框数据,数值password代表提交的类型是密码,数值submit代表提交的项目类型是一个发送按钮,还有一种常见的数值是hidden代表提交的项目类型是隐藏数据(在登录页面的表单中看不到隐藏的提交内容),这些数值都是由网站定义的固定数值。name是提交项目的名称,名称后面的值大多也由网站定义,同样是固定数值。value是提交项目发送的数值,如果value后面是空白的,说明这个数值是需要你在表单里面输入的,如果value后面有数值,说明这个数值已经由网站定义好了,是固定的数值,不需要你输入。
★观察错误提示页面
我们随便输入用户名和密码,点击下面的Login按钮,就会进入下图所示的错误提示页面(除非你运气太好直接进入会员区了)。一般情况下,输入无效的密码会进入另外一个页面,通常是表单提交的地址。这个网站比较特殊,它的错误提示页面地址和入口地址相同,我们从源文件里面也可以看出,它的提交地址和入口地址就是相同的。如果错误提示页面的地址和入口地址不同,应该临时保存下来,后面可能要用到。
我们需要在这个页面里判断keyword,也就是类似sorry、error、failed、incorrect、invalid id之类的字样,这些就是我们要找的keyword,AD就是凭着这些keyword来判断密码是否通过验证。
这个页面内容很简单,只是多了一行错误提示Invalid Username/Password。不过大部分网站错误提示页面的内容都比较复杂,里面有五花八门的信息。在这里我们选择Invalid、Username、Password作为keyword。

★让AD自动获得post data数据
复制入口地址到AD的地址栏。点击右上方HTML大按钮中的小眼镜按钮,在弹出的菜单里选择最后一项Find FORM datas for the current server。这样AD会自动连接目标服务器获取POST data数据。也可以进入Settings主页卡的HTML Settings分页卡,点击最下方的Click here to try autodetect POST data蓝色链接,同样可以开始获取目标服务器数据。

如果一切顺利,可能会接连弹出如下两个对话框,一般情况下均选择“是”。


★完成正确设置
如果测试顺利,会自动转到Settings主页卡的HTML Settings分页卡,AD地址栏里面的地址也会自动转换,应该和那个出错页面地址相同。注意下面POST data框里面的东西,看看和我们从源文件里面分析的是否相同。如果不同,我们可能要手工设置post data。这次我们自动获取的数据和表单中的一样。Uname=<U>的意思就是使用字典中的用户名列表做为该项提交数据,pw=<P>的意思就是使用字典中的密码列表做为该项提交数据,submit=login是固定数值,意义不大,仅仅代表那个提交按钮而已。
可以在上面的浅绿色下拉框里寻找现成的符合要求的keyword,如果没有,那就自己照猫画虎的添加进去。点击后面的Affect keywords to the server used,意思是以后就用这个keyword破解这个站点,下次破它就不用再重新设置keyword了。
如果AD自动探测转换的地址和我们前面得到的出错页面地址不同,那可能是这个网站设置了自动跳转功能。我们需要仔细看看登录页面源件里面的action,判断到底应该使用哪一个地址做为AD的目标。

★关于字典、代理
字典就没有什么特殊的了,和破解弹出式入口一样,选择合适的字典即可。
代理不需要很多,但是最好针对目标分析过。需要注意的是,AD针对表单式入口分析代理的功能无法检测代理是否为fake代理,所以最好采用其它工具分析。或者先进行常规分析,删除所有不合格代理,再针对表单式入口进行分析。
使用单个代理好还是多个代理好,需要在实践中摸索。如果使用单个代理,在代理页卡中左边的那些设置可能需要根据情况更改一下。
左边的代理设置里面有一项Change proxy on specific HTML Keyword当发现特殊关键字时更换代理。这个选项是专门针对表单式入口的一项特殊代理设置。有些表单式入口的网站也有IP监测系统,一旦发现相同IP非法登录次数过多,同样会封掉IP。通常它会进入另外一个错误提示页面,告诉你IP因为非法登录被封掉了。如果你发现有这个错误提示页面,就可以勾选这个代理选项,在下面会出现一个输入框,可以在错误提示页面中选择keyword填入框中。这样,一旦AD侦测到你设置的关键字,就会判断出正在使用的代理已经被封,AD会自动更换其它代理继续验证。
★开始破解
到这里,相关的设置就基本上完成了。
好了,现在可以点击AD右上方的HTML大按钮开始破解(不要忘了更改bots线程数)。在Progression页卡里会显示进展情况,看看,是不是显示了很多404-bad word found <invalid>。如果提交验证的密码无效会进入错误提示页面,AD在页面中找到keyword就会认为密码没有通过验证。如果密码有效会进入会员区页面,AD在会员区页面中自然找不到keyword,它就会认为这个密码通过验证,而作为可用密码显示在结果中。

[附加说明]
▲keyword选择是否正确,是能否顺利破解的关键。选择keyword的原则就是让AD能够正确识别,很遗憾,AD对非英文的keyword识别能力很差。还有一点,要保证你用来做keyword的这个单词绝对不会出现在登录成功后进入的会员页面(自己猜猜会员页面会不会有我们选用的单词)。比如member这个单词就不能用作keyword,因为会员页面很可能也有这个单词,这样,即使密码有效,AD也会因为在会员区页面中找到member这个单词而误认为密码是无效的。
▲keyword并不局限于单词。它可以是单词、词组、短句,甚至可以是链接。只要是AD能够正确识别的网页元素,都可以做keyword。
▲使用此项功能AD的线程不能设置太多,应该在10-20之间吧。在破解过程中AD经常会停顿下来,如果速度变得很慢,可以点击Stop大按钮停止验证,然后再次点击HTML大按钮重新开始验证。
▲AD自动探测目标服务器数据的过程经常会出错,我也不太清楚原因,可能是代理的问题。进行这项工作需要较好的代理,不一定要很多代理,因此在你的代理列表中选择一些速度快、匿名性好的代理。最好针对目标服务器进行代理分析,这样就会得到对这个服务器有效的代理。如果AD不能自动获取目标服务器数据,在更换不同的代理后仍然不行,那就只有手动输入各种参数,但是你必须熟悉form表单的工作原理,能够正确设置提交地址和post data。
▲破解此类网站返回假密码的情况较多。除了检查一下是否代理有问题,还要检查选用的keyword是否恰当(可以更换keyword再次尝试),再就是仔细观察这个网站是否有不止一个的错误提示页面。如果还有另外的错误提示页面,可以在其中也选择合适的keyword,和当前的keyword一起使用。我个人认为,问题大多出在代理上。因此要仔细斟酌代理的设置。
▲不少网站的表单式入口都设置了附加码验证,AD目前还无法对付有附加码的表单式入口。
▲对于只有一个输入框的表单式入口,例如AC联盟的入口,还有AB的第一道ID验证,它们的破解方法与双输入框没有太大的区别。只不过你要事先针对目标做好你的字典,当然是single list单字典。
▲下面我罗列几种比较特殊的网站,你会在破解过程中发现更多的花样。
有个别网站比较特殊,如果反复尝试超过四次,它会出现另外一个提示页面(页面地址同前),让你等待10分钟再试。而AD是不会等待的,如果在这个页面里没有找到keyword,那么AD就会认为所尝试的密码都通过验证,即使找到keyword,AD也会在这个页面没完没了的循环下去。显然,这种网站用AD是很难破解的。
有个别网站在输入无效的密码之后,并不是进入某个错误提示页面,而是弹出一个javascript提示框,这种情况AD通常无法正确识别。也许有办法对付这种网站,好像听人说过,但是肯定比较麻烦。
还有一些网站,它的入口和错误提示都不是单独的完整页面,而是包含在一个大页面中的frame,这种情况可以分析网页源代码,看看是否可以找到真正的登录和提交地址。
再有,一些网站的登录页面有两个以上的输入框。比如还有另外一种付费方式的登录框,或者还有一个邮件地址输入框,等等。超过两个输入框AD就无法自动获取post data数据,只能自己分析表单内容,从中判断出正确的提交地址,并且找出哪些是我们需要的提交数据,手工设置server地址和post data。