近期闲来无事,正好拿这个滑块验证码练练手,顺便打发打发时间
当我们进行网站查询时,会触发下面的验证码
Snipaste_2023-11-19_21-18-57.jpg
我们先进行F12抓包,看一下他的请求参数
Snipaste_2023-11-19_21-19-32.jpg
Snipaste_2023-11-19_21-20-26.jpg
通过抓包发现,只有pointJson是一个未知的加密参数,我们对该参数进行base64解密,发现解码失败,这时我们可以确定这是一个加密参数。
Snipaste_2023-11-19_21-20-58.jpg
全局搜索关键字,找到两处结果,进去看一看,打上断点
Snipaste_2023-11-19_21-21-22.jpg
再次点击提交,嘿!您猜怎么着,断住了!
Snipaste_2023-11-19_21-21-35.jpg
这个地方是一个三元运算符,前面的secretKey我们确定这是已知的,所有直接看后面的内容就行,后面两个东西长得一样啊,那我们直接看前面的
直接把鼠标放上去,看看里面是个嘛
Snipaste_2023-11-19_21-22-06.jpg
进去一看,是个很简短的加密。
Snipaste_2023-11-19_21-22-32.jpg
我们先打印一下看看这个y算出来是什么东西,顺便把里面的也打印一下
Snipaste_2023-11-19_21-23-39.jpg
Snipaste_2023-11-19_21-24-05.jpg
x后面这个变量能在上面看到,是个计算后的值,说的是,获取移动坐标,然后去掉px,下面的t是去掉px之后,乘除一下。
Snipaste_2023-11-19_21-24-30.jpg
Snipaste_2023-11-19_21-24-43.jpg
Snipaste_2023-11-19_21-24-49.jpg
好了,现在我们知道y是怎么算的,也知道里面的参数是什么意思,咱直接给他抠出来看看怎么个事。
我这里直接把w()替换成crypot-js了,这里明眼人都知道,猜都不用猜,这地球还有别的加密函数长这样吗{:1_918:}
Snipaste_2023-11-19_21-25-14.jpg
把刚才的参数放进去,打印一下看看对不对
Snipaste_2023-11-19_21-30-54.jpg
嘿,算对了,是不是一毛一样
你以为到这里就完了吗,就光分析这个那也忒简单了。
连传的参数都分析出来了,这不模拟一下,不就浪费了吗
我们都知道滑块验证码需要把图片移动到对应的缺口上,通过刚才的分析,需要提交的参数只有x轴的坐标。
Snipaste_2023-11-19_21-40-46.jpg
F12看一下验证码图片,发现原图和接口传来的尺寸不一样,我们需要先对获取图片的接口进行base64解码,然后修改尺寸
Snipaste_2023-11-19_22-12-24.jpg
Snipaste_2023-11-19_22-12-30.jpg
然后我们使用opencv中的模板匹配来,确定缺口的位置
Snipaste_2023-11-19_21-47-07.jpg
然后运行一次看看
Snipaste_2023-11-19_21-48-13.jpg
嘿,匹配上了!
最后整合一下代码,查询一下阿里的域名
Snipaste_2023-11-20_15-47-26.jpg
Snipaste_2023-11-20_15-48-10.jpg
嗯,只能说一毛一样。