Py爬虫之 js逆向实战:某案例

目录

前言

一.如何定位:

二.进行破解加密

1.抓关键点

2.换个对象(旁站侧击)

3.直击痛点

4.努力换来成功

三.总结

四,重要声明


前言

        在渗透学习的过程中,我们在测试未收权访问中,包括我们进行fuzz,都是需要获取js文件中的接口,然后进行进一步利用的,当然说这么多的根本原因是,越来越发现网络安全是一个全栈的学习路线,需要学习各种各样的知识,来提高自己的挖掘和利用能力,于是有了今天的这篇文章.

一.如何定位:

直接看这段url:

把params单独拿出来进行分析:  

jsv: 2.5.1
appKey: 
t: 1555565888273
sign: 804fd2bd78b737702144e7d5f655de33
api: 
v: 1.0
type: jsonp
dataType: jsonp
callback: mtopjsonp1
data:{"smAreaId":330111,"csaInfo":"0_0_0_0_0_0_0_0_0_0_0","csa":"0_0_0_0_0_0_0_0_0_0_0","logical":"HD"}

        经过观察对比,发现数据中变化的参数是sign和t ,很明显t就是13位时间戳,而sign是经过加密形成的,既然确定了位置,那么就好办了,我们只要找到加密算法,并解决就可以了。

二.进行破解加密

        简单思路和进行代码审计一样的开始一样的流程,找到关键参数(函数),打断点,找出执行流程,当然最后一点不太一样,代码审计的话是通过构造palyload,然后通过搭建站点,或是进行palyload利用,但是js逆向不一样是通过用自己的代码实现它。

首先打开任何一个流量器的F12中的网络,然后刷新页面,出现下面的请求的就可以了。

1.抓关键点

        数据中变化的参数是sign和t,那么就在这些返回数据中查找sign这个参数。但是因为因为是这个参数应用的比较多经过查找,sign这个参数太多了,直接查找,不仅浪费很多时间,而且效果也不好,果断放弃. 

       和渗透的思路类似,主站不好打,找子域名打,子域名不好搞,搞旁站,总有可以利用和渗透的点 

2.换个对象(旁站侧击)

        我们可以寻找其他的参数,看一下上面的params的那些参数,和渗透中小程序和wab渗透中比较关键的点一样,AK果然在哪都是比较重要的。

 

        顺着AK找到了这个,通过查看发现相似度较高,当然不能完全确定,和渗透一样,有时候需要通过其他的接口获取的信息来,让我们更进一步的扩大危害和确定获取信息的准确性。

        看到这里我们确认sign就是u,而u是通过p函数将多个参数处理获得的,我们找到p函数来进行进一步判断:

 

                这里我们将p函数进行处理一下,如果不会处理的话,可以利用chatgpt进行处理,然后在Pycharm中测试一下p函数进行了什么操作,看到这一下就兴奋了,这不就是熟悉了MD5吗,果断处理,通过脚本进行验证一下

 

import hashlib

def md5_hash(string):
    md5 = hashlib.md5()
    md5.update(string.encode('utf-8'))
    return md5.hexdigest()


string = "hello world"
hash_value = md5_hash(string)
print(f"md5 hash of '{string}' is: {hash_value}")

        看结果是一样的,p函数其实就是多个参数进行的一段md5加密,直接用md5替换它就ok了,基本上到这里就整个过程就有清晰的思路了, sign就是几个参数组成的字符串进行md5加密。 

3.直击痛点

        直接找到参数的起始位置就好了,主要是四个参数,n.data,a,o.tokens,s,通过打断点看一下这些参数都是什么牛马,最后经过我的对比发现,n.data就是url中的params的data o.token两次请求都是一样,可以当固定参数,a是时间戳,s是固定参数,这些参数比较少也容易分析,就不展示了. 

4.努力换来成功

        经过长时间的测试,发现o.token这个参数终于变化了。另一方面因为cookie设置了时间所以也会过期,变化的参数分别是m_h5_tk_enc和m_h5_tk,其他参数修改并不影响请求。通过两条变化一起看,发现o.token参数其实就是_m_h5_tk这个参数的一部分。 

 继续不断调试,进行进一步查看

 通过执行流程发现这段是异步设置cookie参数,继续寻找

 

最终找到失败的请求,发现他们返回了set-cookie。

这样问题解决了呀,直接更新一下cookie就可以进行操作了.

三.总结

        整个发现流程就是通过找关键参数,然后进行整个调式流程,首先发现参数sign加密方式为通过四个参数的MD5加密而成,其中o.token参数其实就是_m_h5_tk这个参数的一部分,o.token直接是从cookie中读取的,过期时会存在set-cookie,更新一下就可以操作啦.

四,重要声明

        这里大家有需要的话可以看一下下面的这个,毕竟在爬虫逆向以及渗透中代理池对我们来说还是很重要的,当然,大家甄别一下,如果大家使用ip池过程中出现问题,以及下面的图片所属的数探联盟的产品出现任何问题,都于本人及本博客无关.

 

好的,我可以为您提供一个简单的Python爬虫Scrapy框架的实战案例。 在这个案例中,我们将使用Scrapy框架爬取豆瓣电影的电影名、导演、评分等信息,并将结果保存到一个JSON文件中。 首先,您需要安装Scrapy框架。可以通过以下命令在命令行中安装: ``` pip install scrapy ``` 安装完成后,我们可以开始编写爬虫。 1. 创建项目 使用以下命令创建一个新的Scrapy项目: ``` scrapy startproject douban_movies ``` 这将在当前目录下创建一个名为“douban_movies”的目录,其中包含了项目的基本文件结构。 2. 定义Spider 我们需要定义一个Spider来指定我们要爬取的网站,并提供如何抓取网页内容的信息。在这个案例中,我们将在douban.com的电影页面上抓取信息。 在项目的根目录下,创建一个名为“douban_spider.py”的文件,并将以下代码复制到文件中: ```python import scrapy class DoubanSpider(scrapy.Spider): name = 'douban' start_urls = ['https://movie.douban.com/top250'] def parse(self, response): for movie in response.css('div.item'): yield { 'title': movie.css('span.title::text').get(), 'rating': movie.css('span.rating_num::text').get(), 'director': movie.css('div.info span:nth-child(3)::text').get(), 'year': movie.css('div.info span:nth-child(4)::text').get() } next_page = response.css('span.next a::attr(href)').get() if next_page is not None: yield response.follow(next_page, self.parse) ``` 在这个Spider中,我们定义了一个名称为“douban”的Spider,并指定了我们要抓取的起始URL。在“parse”方法中,我们使用CSS选择器选择了页面中的电影信息,并使用yield语句将信息返回。 此外,我们还检查了页面中是否有下一页,如果有,则使用“response.follow”方法继续爬取下一页。 3. 运行Spider 在命令行中,进入项目的根目录,并使用以下命令运行Spider: ``` scrapy crawl douban -o movies.json ``` 这将运行名为“douban”的Spider,并将结果保存到一个名为“movies.json”的JSON文件中。 现在,您可以在项目目录中找到“movies.json”文件,查看Scrapy框架成功抓取到的电影信息。 这就是一个简单的Python爬虫Scrapy框架的实战案例。希望这能帮助您更好地理解Scrapy框架的使用方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

XError_xiaoyu

你的支持,使我更好的创作

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值