假设不会js语法来进行js破解
本文感谢挖掘机小王子提供的帮助
挖掘机小王子的github:https://github.com/EnjoyScraping
网站的登录接口
我们可以准备一组常用的账号密码,并记下对应的MD5、base64等密文,以后抓包会直观看出采用什么加密方式
登录手机号 | 密码 |
---|---|
66666666666 | 666666 |
输入
Formdata有两个加密参数f分别是formhash、pwd_password
全局搜索formhash有如3个下js包含formhash单词
- Common.js
根据js规则n("#字符串").val() 【ps:val() 方法返回或设置被选元素的值】,我们知道这个formhash可能被插入到html或者从html中提取,可以在此处打上断点 - showdialog.js
根据名称猜测这是获得新的formhash值,我自己也看不懂,继续
- login_and_reg.js
这里有11个匹配先看最像的
265行首先函数的名字叫‘用户登录user_login’
283行cheackform译为‘’检查form表单‘’,百度JS语法中Document 对象使我们可以从脚本中对 HTML 页面中的所有元素进行访问。没跑了就是它
278行不难猜出是对输入的数据合法性校验
那我们对287-295行参数进行分析
分析formhash:i
i = $("#formhash" + l).val()
基础语法知识:
https://www.jianshu.com/p/99669d012404
https://www.w3school.com.cn/jquery/attributes_val.asp
JS中$
JS应用库JQUERY的作者将之做为一个自定义函数名了,这个函数是获取指定网页元素的函数,$ 相当于一个匿名函数,函数名
2.相当于定义一个\ $ 函数,返回的是通过id去获取对应的html元素
val() 方法返回或设置被选元素的值。
结论i =(html表单formhash标签的值 + l)其中l在266行定义为空字符串
验证方法:自己去html搜出来然后运行下
分析txt_account:t
从抓包工具返回formdata看,他就是‘’用户登录手机号‘’,以学习为主这里也进行推理
var t = (t = $("#txt_account" + l).val()) || $("#txt_account1" + l).val()
从html获得(txt_account的值+空字符串) ||html获得(txt_account1的值+空字符串) //就是两种登录方式的用户名输入栏呗
html中txt_account搜索结果
html中txt_account1不存在
推断是另一个登录接口,有可能是微信扫码
根据语法规则判断出他就是‘’用户登录手机号‘’
分析pwd_password: e
从抓包工具返回formdata看定义的名称看,他就是‘’用户登录密码‘’,以学习为主这里也进行推理
e = $("#pwd_password" + l).val()
, e = hex_md5(e)
从html获得(pwd_password的值+空字符串),再使用md5()函数进行运算
我们知道MD5是一种常用加密方式,但是在有些项目中,有些网站可能修改了MD5的加密源码,这里需要测试,以密码输入’666666’为例,生成了32位的密文
测试的结果一致,可以直接使用MD5参数
拓展:假设MD5函数不是源码,应该怎么把生成函数从众多文件剔出来
分析login_type: 3
没啥分析的,固定参数为3
分析 ckb_cookie: 1 == s ? 1 : 0
看名称是和cookie有关的,因为使用的bool值表示,斗胆猜测是cookie是否存在或者是否设置cookie的开关
s = $(":checkbox[name='autologin']").is(":checked")
从html获得name='autologin'的选中框是否被选中,对应是否自动登录,那这就懂了,根据测试当打钩时其值1会生成登录后的cookie,
那其实ckb_cookie: 1 == s ? 1 : 0可以这么看,1==s 真就为1,假为0,这里的问号相当于映射
分析 hdn_refer: a
refer这个单词很常见,在HTTP 请求的头信息里面,Referer 是一个常见字段,提供访问来源的信息
refer的介绍
而且在抓包工具中formdata中这是明文’'https://www.epwk.com/‘’
这里我们假装不知道,来分析下
a = $("#hdn_refer_mobile" + l).val()
html中找到hdn_refer_mobile属性
分析 txt_code: t || “”
var t = $("#mobile_code" + l).val()
根据英文mobile_code是手机验证码,老规矩html里搜mobile_code,为了方便切换到手机登录
分析 pre: d || “”
d = $("#code_pre" + l).val()
html里找
找到是找到了,但是很好奇这个是什么,于是删除hidden属性看一下
原来是一个输入框
分析 inajax: 1
默认数字,没啥分析的
万能方法:调试
以上分析思路也可以使用打断点调试的方法