【js逆向】信息公示平台搜索滑块逆向
目标:实现搜索后,滑块验证,得到结果。
网站:aHR0cHM6Ly94eGdzLmNoaW5hbnBvLm1jYS5nb3YuY24vZ3N4dC9uZXdMaXN0
1. 输入搜索关键字,触发滑块验证
a和b后面要用到的参数,c中的cutImage和oriImage是背景和缺口图的base64编码数据
2. slide_captcha_check滑块的校验,请求参数中有a b c三个,验证成功后,请求 /gridQuery.html获得搜索后的数据。所以只需要分析这三个参数的由来就行。
hook JSON代码
(function () {var stringify = JSON.stringify;JSON.stringify = function (params) {console.log("Hook JSON.stringify ——> ", params);debugger;return stringify(params);}
})();(function () {var parse = JSON.parse;JSON.parse = function (params) {console.log("Hook JSON.parse ——> ", params);debugger;return parse(params);}
})();
3. 在这里加上断点然后重新刷新页面输入关键词过滑块,继续往上分析栈,在checkLocation中发现了熟悉的字段,可以清空其他断点,只定这三个。
这三个就是我们要求的载荷的参数,
this.valuea 和 this.valueb 是验证码的响应数据其中一部分
如下所示一一对应
下面是看这个函数
this.encodedata(this.valuea)
输出:
下面是求这个,this.moveX是滑块移动的距离
a = this.$getRsaCode(parseInt(this.moveX) + "")
写个函数来识别一下
然后是求c
a = this.$getRsaCode(parseInt(this.moveX) + "")
求param_c的代码如下:
def rsa_encrypt(t):# 公钥字符串 PEM格式public_key_str = """-----BEGIN PUBLIC KEY-----MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCCsYUGHMhjSzdMqn9JzPfKs9JbxXTPtHofTv7reV0HrEz4brnE6ZJpNn5s934KO3L4QDF7ELHysIiounhhpF1bewW9jKdcpZA5M1CkGHKcwpLA2liaqOlt/0Mf3ui9jxR9AHxUMFVGfJ6Q4+cEmDBUAEOXlxqk4ZjGpubwGNk9XQIDAQAB-----END PUBLIC KEY-----"""public_key = RSA.import_key(public_key_str)cipher = PKCS1_v1_5.new(public_key)message = str(t).encode('utf-8')encrypted_bytes = cipher.encrypt(message)encrypted_str = base64.b64encode(encrypted_bytes).decode('utf-8')return encrypted_strparam_c = rsa_encrypt(str(move_x['target'][0]))
下面这个不知道是什么原因
自动化出的结果,这个比较简单,主要上面那个如果有大佬知道怎么解决,可以在评论区发表一下,谢谢
点个关注吧!