TA的每日心情 | 奋斗 2020-6-5 22:18 |
---|
签到天数: 22 天 [LV.4]偶尔看看III
|
我们在易语言+HttpWatch分析并编写Discuz! X1.51论坛管理器第二课中提到下面一段易语言代码:- referer + RequestLine2 + “&referer=” + referer + “forum.php&infloat=yes&handlekey=login&inajax=1&ajaxtarget=fwin_content_login”)
复制代码 现在我们先着重看下这段代码为何要这样编写,还是先看下HttpWatch中的数据:
1、第二条数据中的协议头Headers:
(Request-Line) GET /1.51/member.php?mod=logging&action=login&auth=55dem%2BRgn7mTn3h10XIfc9Q9xRiV8s8qwbRn2rdfIS0Uj4NxoqZr1k82ZrQ&referer=http%3A%2F%2Fwgbcwsoft.web-108.com%2F1.51%2Fforum.php&infloat=yes&handlekey=login&inajax=1&ajaxtarget=fwin_content_login HTTP/1.1
……
Host wgbcwsoft.web-108.com
Referer http://wgbcwsoft.web-108.com/1.51/forum.php
……
2、第二条数据的查询字串Query String:3、第一条数据的返回数据concent:……member.php?mod=logging&action=login&auth=55dem%2BRgn7mTn3h10XIfc9Q9xRiV8s8qwbRn2rdfIS0Uj4NxoqZr1k82ZrQ&referer=http%3A%2F%2Fwgbcwsoft.web-108.com%2F1.51%2Fforum.php…… 4、第二条GET数据的URL(这条数据我们在第二课中讲过出现验证码窗口的关键GET):http://wgbcwsoft.web-108.com/1.51/member.php?mod=logging&action=login&auth=55dem%2BRgn7mTn3h10XIfc9Q9xRiV8s8qwbRn2rdfIS0Uj4NxoqZr1k82ZrQ&referer=http%3A%2F%2Fwgbcwsoft.web-108.com%2F1.51%2Fforum.php&infloat=yes&handlekey=login&inajax=1&ajaxtarget=fwin_content_login 上面GET数据中的红色部分是第一条数据的返回,根据上面四点的数据我们可以把第4条数据内容修改成这样(红色部分):http://Host/1.51/member.php?mod=logging&action=login&auth=55dem%2BRgn7mTn3h10XIfc9Q9xRiV8s8qwbRn2rdfIS0Uj4NxoqZr1k82ZrQ&referer=referer&infloat=yes&handlekey=login&inajax=1&ajaxtarget=fwin_content_login 而RequestLine2是我们在易语言中定义的,为了更好理解,易语言代码做相应修改:- "http://"+Host+"/1.5/"+RequestLine2+"&referer="+referer+"&infloat=yes&handlekey=login&inajax=1&ajaxtarget=fwin_content_login"
复制代码 实际上上面这段URL全部是查询字串Query String里的内容。同理我们也要改下易语言中的代码如图所示:
写到这里,您是否明白这段易语言代码怎么编写了吧,如果还没明白,那就回复一下,要求不高吧,呵呵。
好了,现在我们要分析HttpWatch中的下面的数据,经看HttpWatch中的数据可知,第三条和第四条数据是图片的,可以忽略了。如图所示:
谈谈第五条数据:
http://wgbcwsoft.web-108.com/1.51/static/js/md5.js?SJ9
这条数据很明显,URL中带有"md5.js",应该是账号密码校验用的,为何这样说呢,看后面的第六、七、八条数据的图片,也不难看出,如果第五条数据成功提交后会出现"none"及"right"的图片,分别是"没有"和"正确"的意思,说明应该校验账号和密码用的,因我们在第一课中截取的数据时,账号和密码都是正确的,所以第五条数据在本课就不提了,以后的课程里再祥细说明。
先休息会儿,稍后接着讲第九条数据,呵呵这条数据是本课的重点内容了……
下面我们把第九条数据祥细内容复制出来:
1、第九条数据的链接URL:
http://wgbcwsoft.web-108.com/1.51/misc.php?mod=seccode&action=update&idhash=SD49e&inajax=1&ajaxtarget=seccode_SD49e
2、第九条数据的协议头Headers
3、第九条数据的查询字串Query String:
action update
ajaxtarget seccode_SD49e
idhash SD49e
inajax 1
mod seccode
4、第九条数据的返回数据concent:
<?xml version="1.0" encoding="gbk"?>
<root><![CDATA[输入下面动画图片中最大的字符<br /><img onclick="updateseccode('SD49e')" width="150" height="60" src="misc.php?mod=seccode&update=09245&idhash=SD49e" class="vm" alt="" />]]></root>
从前面所讲的知识不难发现,每一次的通信的关键点就是链接URL,所以我们参考第九条数据的前三条数据很容易发现,本次通信的方法为GET,而所查询的关键字串就是"seccode_SD49e"、"SD49e"和"seccode",那么这些字串是从哪里来的呢?
我们前面讲过分析所用到的字串,一定是前面的通信的返回数据,而根据前面所讲知识关键就在第二条或第五条通信的返回数据里,经分析最近的一条关键数据的返回内容是MD5的加密算法,一般都是和账号密码有关,另因返回数据中并没有前面所提到的关键字串,所以现在只有分析第二条数据的返回了。经查看关键字串包括在以下网页代码里:
<input name="sechash" type="hidden" value="SD49e" />
<div class="rfm"><table><tr><th>验证码: </th><td><input name="seccodeverify" id="seccodeverify_SD49e" type="text" autocomplete="off" style="width:100px" class="txt px vm" onblur="checksec('code', 'SD49e')" tabindex="1" />
<a href="javascript:;" onclick="updateseccode('SD49e');doane(event);" class="xi2">换一个</a>
<span id="checkseccodeverify_SD49e"><img src="static/image/common/none.gif" width="16" height="16" class="vm" /></span>
<br /><span id="seccode_SD49e"></span>
<script type="text/javascript" reload="1">updateseccode('SD49e');</script>
</td></tr></table></div>
参考第九条数据的链接URL及查询字串Query String,在查询字串里出现"seccode_SD49e"、"SD49e"和"seccode",另外两个字串经测试,值没变可认为是常量,那么我们只需编写代码把查询字串"seccode_SD49e"取出来,然后再分割成"SD49e"和"seccode"就行了,好了现在有了思路,那我们就可以编写代码了,写代码中……
在代码测试中发现上面第一个图片里的第二个红色的框内命令"HTTP读文件"之后应该是
“http://” + Host + “/1.51/” + RequestLine2
另外在写代码过程中发现字串"seccode_SD49e"里"_"后面的5个字符每次都在变化,所以我们在编写代码时只用取""seccode_"的位置再取整字串就行了,写代码时一定要注意这点。实现代码如下:- .版本 2
- .支持库 internet
- ' 第三课代码开始
- .如果 (到文本 (返回的数据) ≠ “”)
- seccode_位置 = 寻找文本 (到文本 (返回的数据), “seccode_”, , 假)
- seccode_后五个字符文本 = 取文本中间 (到文本 (返回的数据), seccode_位置, 取文本长度 (“seccode_”) + 5)
- 调试窗口.编辑框1.加入文本 (“seccode_文本=========” + seccode_后五个字符文本 + #换行符)
- ' http://wgbcwsoft.web-108.com/1.51/misc.php?mod=seccode&action=update&idhash=SD49e&inajax=1&ajaxtarget=seccode_SD49e
- seccode文本 = 取文本左边 (seccode_后五个字符文本, 7)
- 后五个字符文本 = 取文本右边 (seccode_后五个字符文本, 5)
- 调试窗口.编辑框1.加入文本 (“拆分seccode_后五个字符文本” + seccode文本 + “=========” + 后五个字符文本 + #换行符)
- 返回的数据 = HTTP读文件 (“http://” + Host + “/1.51/misc.php?mod=” + seccode文本 + “&action=update&idhash=” + 后五个字符文本 + “&inajax=1&ajaxtarget=” + seccode_后五个字符文本)
- 调试窗口.编辑框1.加入文本 (“第九条数据返回==============” + 到文本 (返回的数据) + #换行符)
- .否则
复制代码 经测试我这里第九条数据的返回数据为- <?xml version="1.0" encoding="gbk"?>
- <root><![CDATA[输入下面动画图片中最大的字符<br /><img onclick="updateseccode('Sj2j8')" width="150" height="60" src="misc.php?mod=seccode&update=64288&idhash=Sj2j8" class="vm" alt="" />]]></root>
复制代码 而前面所讲述的第九条数据返回对比后发现除了update和idhash的值不一样外其它都相同,说明个很简单的操作,就是当我们刷新不同的验证码时使两个值随着变化。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
x
|