潇潇编程综合网论坛登陆(DZ1.5)验证码校验分析
一、准备工具:IE6.0以上(操作系统自带,当然7.0或8.0都可,另外用别的浏览器都可以);
HttpWatch或其它截包工具都可;
二、获取验证码:
运行IE浏览器,在IE的工具栏找到HttpWatch 的图标运行并把HttpWatch的“Recode”至开始截取数据状态。接着进入http://www.wgbcw.com/,找到密码填写框,并用鼠标单击密码框,此时在HttpWatch看到如下五条URL数据:
而我们关键的URL就有两条:
1、http://www.wgbcw.com/misc.php?mod=seccode&;action=update&idhash=SkVwx&inajax=1&ajaxtarget=seccode_SkVwx
2、http://www.wgbcw.com/misc.php?mod=seccode&;update=40664&idhash=SkVwx
在第一条URL里注意看下“Headers”、“Query String”、“Content”里数据:
Headers:
(Request-Line) GET /misc.php?mod=seccode&action=update&idhash=SkVwx&inajax=1&ajaxtarget=seccode_SkVwx HTTP/1.1
Accept */*
Accept-Encoding gzip, deflate
Accept-Language zh-cn
Connection Keep-Alive
Cookie Axeo_2132_lastvisit=1322194608; Axeo_2132_sid=ke9EIZ; Axeo_2132_lastact=1322198217%09home.php%09misc; AJSTAT_ok_pages=1; AJSTAT_ok_times=1; cnzz_a1594557=0; sin1594557=; rtime=0; ltime=1322198587687; cnzz_eid=4837841-1322194280-; cck_lasttime=1322198588359; cck_count=0
Host www.wgbcw.com
Referer http://www.wgbcw.com/
User-Agent Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322)
x-requested-with XMLHttpRequest
Query String:
action update
ajaxtarget seccode_SkVwx
idhash SkVwx
inajax 1
mod seccode
Content:<?xml version="1.0" encoding="gbk"?>
<root><!]></root>
在第二条URL里注意看下“Headers”、“Query String”、“Content”里数据:
Headers:
(Request-Line) GET /misc.php?mod=seccode&update=40664&idhash=SkVwx HTTP/1.1
Accept */*
Accept-Encoding gzip, deflate
Accept-Language zh-cn
Connection Keep-Alive
Cookie Axeo_2132_lastvisit=1322194608; Axeo_2132_sid=ke9EIZ; Axeo_2132_lastact=1322201210%09misc.php%09seccode; AJSTAT_ok_pages=1; AJSTAT_ok_times=1; cnzz_a1594557=0; sin1594557=; rtime=0; ltime=1322198587687; cnzz_eid=4837841-1322194280-; cck_lasttime=1322198588359; cck_count=0
Host www.wgbcw.com
Referer http://www.wgbcw.com/
User-Agent Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322)
Query String:
idhash SkVwx
mod seccode
update 40664
Content:
从上面数据中不难看出第二条URL中的GET的数据“misc.php?mod=seccode&update=40664&idhash=SkVwx”正好是第一条URL中“misc.php?mod=seccode&action=update&idhash=SkVwx&inajax=1&ajaxtarget=seccode_SkVwx”GET的返回数据。
那么编写代码的关键只要我们GET“misc.php?mod=seccode&action=update&idhash=SkVwx&inajax=1&ajaxtarget=seccode_SkVwx”,返回后获取“misc.php?mod=seccode&update=40664&idhash=SkVwx”,然后再GET返回的数据就是验证码图片。思路有了就不难写代码了(这里我用得易语言编写测试的,大家有兴趣的话,可以自己写写)。
三、验证码校验:
验证码校验无非就两种情况验证码正确与否,下面我们来看下验证码正确的情况:
首先,在验证码框里输入当前验证码(必须正确),那么出现下面两条URL:
1、http://www.wgbcw.com/misc.php?mod=seccode&;action=check&inajax=1&&idhash=SkVwx&secverify=EXBV
2、http://www.wgbcw.com/static/image/common/check_right.gif
在第一条URL里注意看下“Headers”、“Query String”、“Content”里数据:
Headers:
(Request-Line) GET /misc.php?mod=seccode&action=check&inajax=1&&idhash=SkVwx&secverify=EXBV HTTP/1.1
Accept */*
Accept-Encoding gzip, deflate
Accept-Language zh-cn
Connection Keep-Alive
Cookie Axeo_2132_seccodeSkVwx=0b865EeE%2BfzxjC6Ic8LVnmyn9ThEGoOmRuRO%2FnbAeipWoOjZtpHbbrmx6VSQOkweiVwOcYLxaYMCTYU; Axeo_2132_lastvisit=1322194608; Axeo_2132_sid=ke9EIZ; Axeo_2132_lastact=1322210605%09misc.php%09seccode; AJSTAT_ok_times=1; cnzz_a1594557=0; sin1594557=; rtime=0; ltime=1322198587687; cnzz_eid=4837841-1322194280-; cck_lasttime=1322198588359; cck_count=0
Host www.wgbcw.com
Referer http://www.wgbcw.com/
User-Agent Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322)
x-requested-with XMLHttpRequest
Query String:
action check
idhash SkVwx
inajax 1
mod seccode
secverify EXBV
Content:
<?xml version="1.0" encoding="gbk"?>
<root><!succeed]]></root>
在第一条URL里注意看下“Headers”、“Query String”、“Content”里数据:
Headers:
(Request-Line) GET /static/image/common/check_right.gif HTTP/1.1
Accept */*
Accept-Encoding gzip, deflate
Accept-Language zh-cn
Connection Keep-Alive
Cookie Axeo_2132_seccodeSkVwx=0b865EeE%2BfzxjC6Ic8LVnmyn9ThEGoOmRuRO%2FnbAeipWoOjZtpHbbrmx6VSQOkweiVwOcYLxaYMCTYU; Axeo_2132_lastvisit=1322194608; Axeo_2132_sid=ke9EIZ; Axeo_2132_lastact=1322210622%09misc.php%09seccode; AJSTAT_ok_times=1; cnzz_a1594557=0; sin1594557=; rtime=0; ltime=1322198587687; cnzz_eid=4837841-1322194280-; cck_lasttime=1322198588359; cck_count=0
Host www.wgbcw.com
If-Modified-Since Tue, 05 Oct 2010 13:00:20 GMT
If-None-Match "64124a448d64cb1:30789"
Referer http://www.wgbcw.com/
User-Agent Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; .NET CLR 1.1.4322)
Query String:
(None) (The URL does not contain a query string)
Content:这里显示的是以“/static/image/common/check_right.gif”为链接的正确图标;
其次,在验证码框输入错误的验证码同样获取得两条数据:
1、http://www.wgbcw.com/misc.php?mod=seccode&;action=check&inajax=1&&idhash=SkVwx&secverify=EX8V
2、http://www.wgbcw.com/static/image/common/check_error.gif
这里所截取的数据基本和上面差不多,唯一不同的关键点就是在第一条URL中的Content里显示如下:
<?xml version="1.0" encoding="gbk"?>
<root><!invalid]]></root>
而在第二条URL中则返回错误的图标链接“/static/image/common/check_error.gif”。
从验证码校验分析来看验证码校验的关键URL是“http://www.wgbcw.com/misc.php?mod=seccode&;action=check&inajax=1&&idhash=SkVwx&secverify=”+ 验证码文本,而验证码是否正确就是看Content数据中的“succeed”和“invalid”,返回数据中是前者则验证码正确,相返,后者是错误的验证码。
总上面所述:我们现在可以用编程工具来写验证码校验的代码了,我在测试中用了“慧星HTTP应用模块”编写,但经测试验证码刷新后有时校验正确,有时校验错误(源码略,有兴趣的朋友可根据上面的分析自己写写看)。
所以就在找出错原因,经多次实验,当第一次打开网页时会出现下面一段关键Contentl数据如下:
<em class="y"><a title="关闭" class="flbc" href="javascript:;">关闭</a></em>
安全验证
</h3>
<span class="z"><script type="text/javascript">var ls_sechash = '';</script></span>
<input name="sechash" type="hidden" value="SkVwx" />
<div class="mtm mbn c"><em style="display:none">验证码</em><input name="seccodeverify" id="seccodeverify_SkVwx" type="text" autocomplete="off" style="width:100px" class="txt px vm" tabindex="904" />
<a href="javascript:;" class="xi2">换一个</a>
<span id="checkseccodeverify_SkVwx"><img src="static/image/common/none.gif" width="16" height="16" class="vm" /></span>
</div><div class="pbm bbda xg1 d"><span id="seccode_SkVwx"></span>
</div>
在上面这段和验证码相关的数据中sechash的值“SkVwx”基本上在某个时间断都有变化,可分析后都没有找到这个隐藏区域的值怎么来得,大家有空得话也可以分析下看看……
:lol。占个沙发 果然是厉害 岁月就像一条河,左岸是无法忘却的回忆,右岸是值得把握的青春年华,中间飞快流淌的是年轻隐隐的伤感。
顶,是一种光荣
static/image/common/sigline.gif
中国绘馆联盟 hui-guan.com
页:
[1]