实例网站:https://www.gm99.com/
目的:运用dom事件调试找到登录时的password的加密位置与方式
1、打开网站,输入相应的账号、密码、验证码。这里以账号:13511111111, 密码:123456 验证码:1111示例。F12抓包,如下图所示:
发现只有两个网络请求,一个是校验验证码的,另一个是重新请求图片验证码的,并没有登录的包,因此这里应该是先校验验证码,验证码输入正确才发送登录请求。因此后面的步骤都要输入正确的验证码。
2、输入正确的验证码,重新抓包,结果如下图所示:
找到正确的登录时的请求地址为:
https://passport.gm99.com/login/login3?callback=jQuery171001304440358984471_1609823153903&encrypt=1&uname=13111111111&
password=NYWRTnAL3qXi5CzFwp%252Buia7NjktabzsgXyctoV3mZ4Y0%252BH8cTUruvsIYg7i26ebon2y%252BSy7gMcpFU0V5leyiCFwnWBbBd0N9rgNLQDu1A9Xph6OoQXkh4rmXFOAFsSP5aTr7IW21sxRCzTDOwlgZ4a2HRcT8cna4x0uy723G5Io%253D&
remember=checked&
ckcode=yd8x&
_=1609827516361
发现该请求的请求方式是GET请求,password被加密放在查询字符串之中,接下来我们就要采用dom事件定位法来找到password的加密位置。
3、将开发这工具调到Elements选项卡,并且选中右侧的Event Listeners选项卡之中,并且审查元素登入
按钮
如下图所示:
发现登入
按钮有MSG_CLICK、MSG_EXPOSURE、click、error、load、scroll等事件,初步猜测登录对应的网络请求应该就在MSG_CLICK或者是click事件中。
4、点击click事件发现有上图几个click事件,依次remove(鼠标移动到该事件上会自动出现remove选项)相应的事件,点击网页上的登入按钮,发现只有在删除最后一个’a#login-btn.login-btn’的click事件,登录操作才会失效,因此确定登录的网络请求就在这个事件之中,因此打开这个事件的位置。如下图所示:
发现在4248行有个url就是校验验证码的url地址,猜测应该在这里做的应该就是发送校验验证码的url,于是在在4251行打个断点,单步执行,发现确实发送了校验验证码的请求,并在下面的函数中发现有password的存在。
并在password处打上断点。
如下图所示:
发现k.login()函数中传递了一个对象,包含了uname, password而且password还未加密,于是猜测这个函数就是发送登录请求的方法,因此找到k.login()的位置,打上断点如下图所示:
继续单步调试,发现了在183行处,密码被加密了,因此判断这个位置就是加密password的位置。你也可以在函数g.encode()函数内部继续打上断点,找到具体的加密位置,这里都不在赘述
总结:在本例中也可以使用搜索password关键词来进行定位。