JS逆向实战22——某政府采购网简单cookie反爬
声明
本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!
目标网站
网站:aHR0cDovL3d3dy55bmdwLmNvbS8=
目标
类似于这种 进入前检查浏览器... 如何跳转
页面分析
我们发现这种网站有点类似于5s盾。但是和5s盾不一样的是,这个网站是依靠cookie进行的一个判断。
我们去看看cookie到底有什么猫腻
经过反复用代码测试。
得知这个PYCCS
是请求的关键。那其实很简单了。如何得到这个值就是我们的目标了
JS分析
我们请求页面。
页面返回了一段JS。和一个cookie
然后通过转换一些列操作。
得到第一个传参 P的值
var _$ = ['\x23\x63\x68\x61\x6c\x6c\x65\x6e\x67\x65', '\x23\x77\x61\x66\x5f\x61\x6e\x73\x77\x65\x72', '\x23\x43\x68\x61\x6c\x6c\x65\x6e\x67\x65\x46\x6f\x72\x6d']; $(_$[0])["\x73\x68\x6f\x77"](); $(function () { setTimeout(function () { var x06dd1a = {}; var x0fcad9; var x08c924 = 0x26; var x01c264 = navigator["\x75\x73\x65\x72\x41\x67\x65\x6e\x74"]["\x74\x6f\x4c\x6f\x77\x65\x72\x43\x61\x73\x65"](); x08c924 = x08c924 * 0x63; (x0fcad9 = x01c264["\x6d\x61\x74\x63\x68"](/msie ([\d.]+)/)) ? x06dd1a["\x69\x65"] = x0fcad9[0x1] : (x0fcad9 = x01c264["\x6d\x61\x74\x63\x68"](/firefox\/([\d.]+)/)) ? x06dd1a["\x66\x69\x72\x65\x66\x6f\x78"] = x0fcad9[0x1] : (x0fcad9 = x01c264["\x6d\x61\x74\x63\x68"](/chrome\/([\d.]+)/)) ? x06dd1a["\x63\x68\x72\x6f\x6d\x65"] = x0fcad9[0x1] : (x0fcad9 = x01c264["\x6d\x61\x74\x63\x68"](/opera.([\d.]+)/)) ? x06dd1a["\x6f\x70\x65\x72\x61"] = x0fcad9[0x1] : (x0fcad9 = x01c264["\x6d\x61\x74\x63\x68"](/version\/([\d.]+).*safari/)) ? x06dd1a["\x73\x61\x66\x61\x72\x69"] = x0fcad9[0x1] : 0x0; x08c924 = x08c924 + 0x2e; if (x06dd1a["\x69\x65"] || x06dd1a["\x66\x69\x72\x65\x66\x6f\x78"] || x06dd1a["\x63\x68\x72\x6f\x6d\x65"] || x06dd1a["\x6f\x70\x65\x72\x61"] || x06dd1a["\x73\x61\x66\x61\x72\x69"]) { x08c924 = (x08c924 * 0x3 + 0x7); if (x08c924 < 0x7b) x08c924 = x08c924 + 0x929; var x0b515d = $(_$[1]); if (x08c924 > 0x929) x08c924 = Math["\x66\x6c\x6f\x6f\x72"](x08c924 / 0x7b); x0b515d["\x76\x61\x6c"](x08c924); $(_$[2])["\x73\x75\x62\x6d\x69\x74"]() } }, 0x3e8) });
然后通过AST去解码
var _$ = ["#challenge", "#waf_answer", "#ChallengeForm"]; $(_$[0])["show"](); $(function () { setTimeout(function () { var x06dd1a = {}; var x0fcad9; var x08c924 = 38; var x01c264 = navigator["userAgent"]["toLowerCase"](); x08c924 = x08c924 * 99; (x0fcad9 = x01c264["match"](/msie ([\d.]+)/)) ? x06dd1a["ie"] = x0fcad9[1] : (x0fcad9 = x01c264["match"](/firefox\/([\d.]+)/)) ? x06dd1a["firefox"] = x0fcad9[1] : (x0fcad9 = x01c264["match"](/chrome\/([\d.]+)/)) ? x06dd1a["chrome"] = x0fcad9[1] : (x0fcad9 = x01c264["match"](/opera.([\d.]+)/)) ? x06dd1a["opera"] = x0fcad9[1] : (x0fcad9 = x01c264["match"](/version\/([\d.]+).*safari/)) ? x06dd1a["safari"] = x0fcad9[1] : 0; x08c924 = x08c924 + 46; if (x06dd1a["ie"] || x06dd1a["firefox"] || x06dd1a["chrome"] || x06dd1a["opera"] || x06dd1a["safari"]) { x08c924 = x08c924 * 3 + 7; if (x08c924 < 123) x08c924 = x08c924 + 2345; var x0b515d = $(_$[1]); if (x08c924 > 2345) x08c924 = Math["floor"](x08c924 / 123); x0b515d["val"](x08c924); $(_$[2])["submit"](); } }, 1000); });
然后我删掉有关JQuery的操作 形成如下代码
navigator = { "userAgent":'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36', } var _$ = ["#challenge", "#waf_answer", "#ChallengeForm"]; var x06dd1a = {}; var x0fcad9; var x08c924 = 38; var x01c264 = navigator["userAgent"]["toLowerCase"](); x08c924 = x08c924 * 99; (x0fcad9 = x01c264["match"](/msie ([\d.]+)/)) ? x06dd1a["ie"] = x0fcad9[1] : (x0fcad9 = x01c264["match"](/firefox\/([\d.]+)/)) ? x06dd1a["firefox"] = x0fcad9[1] : (x0fcad9 = x01c264["match"](/chrome\/([\d.]+)/)) ? x06dd1a["chrome"] = x0fcad9[1] : (x0fcad9 = x01c264["match"](/opera.([\d.]+)/)) ? x06dd1a["opera"] = x0fcad9[1] : (x0fcad9 = x01c264["match"](/version\/([\d.]+).*safari/)) ? x06dd1a["safari"] = x0fcad9[1] : 0; x08c924 = x08c924 + 46; if (x06dd1a["ie"] || x06dd1a["firefox"] || x06dd1a["chrome"] || x06dd1a["opera"] || x06dd1a["safari"]) { x08c924 = x08c924 * 3 + 7; if (x08c924 < 123) x08c924 = x08c924 + 2345; if (x08c924 > 2345) x08c924 = Math["floor"](x08c924 / 123); } console.log(x08c924 )
打印下这个x08c924
这个值 发现是92。
到这里 貌似进行不下去了。进行不下去的时候。我们重新回去看页面。
我们搜索set-cookie 看看哪里是设置cookie的地方
然后发现 诶嘿 还真有个请求里有设置 PYCCS
的值。我们点进请求再看看。
我们发现这是个post的302请求。并且有个data传参是45。
同样是数字,我们上文也拿到了一个值92。那这两个数字之间有没有什么关系呢?
我们反复请求这个页面。重复上面的操作几次。
对比所得到的的x08c924
本人所用的方法是通过正则提取几个不一样的值。然后再放入JS中。从而拿到cookie
但是我觉得这种方法太笨了。可能不是最优解。如果有大佬知道有什么更好的方法。希望告诉我下。
到这里 已经很清楚了。
其实这个网站还是挺简单的。但是从0到1的过程还是挺繁琐的。
结果
作者博客:https://www.cnblogs.com/zichliang
本文地址:https://www.cnblogs.com/zichliang/p/17667215.html
本文原创授权为:署名 - 非商业性使用 - 禁止演绎,协议普通文本 | 协议法律文本
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
· spring官宣接入deepseek,真的太香了~