23_某政府采购网简单cookie反爬

Date
Aug 30, 2023
Created
Mar 2, 2024 03:06 PM
Tags
JS逆向实战

声明

本文章中所有内容仅供学习交流,抓包内容、敏感网址、数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除!

目标网站

网站:aHR0cDovL3d3dy55bmdwLmNvbS8=

目标

notion image
类似于这种 进入前检查浏览器... 如何跳转

页面分析

我们发现这种网站有点类似于5s盾。但是和5s盾不一样的是,这个网站是依靠cookie进行的一个判断。 我们去看看cookie到底有什么猫腻 经过反复用代码测试。 得知这个
PYCCS
是请求的关键。那其实很简单了。如何得到这个值就是我们的目标了
notion image

JS分析

我们请求页面。
页面返回了一段JS。和一个cookie
notion image
notion image
然后通过转换一些列操作。
得到第一个传参 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的地方
notion image
然后发现 诶嘿 还真有个请求里有设置
PYCCS
的值。我们点进请求再看看。我们发现这是个post的302请求。并且有个data传参是45。
notion image
notion image
同样是数字,我们上文也拿到了一个值92。那这两个数字之间有没有什么关系呢? 我们反复请求这个页面。重复上面的操作几次。 对比所得到的的x08c924
本人所用的方法是通过正则提取几个不一样的值。然后再放入JS中。从而拿到cookie 但是我觉得这种方法太笨了。可能不是最优解。如果有大佬知道有什么更好的方法。希望告诉我下。
到这里 已经很清楚了。 其实这个网站还是挺简单的。但是从0到1的过程还是挺繁琐的。

结果

notion image