美文网首页网络与信息安全程序员
Python 编写自动兑换工具

Python 编写自动兑换工具

作者: 年华不散场 | 来源:发表于2018-04-02 20:40 被阅读64次

第一次写分享文章~

0X00 起因

偶尔见到一个网站,说是通过邀请好友可以兑换开发板;于是乎,邀请了30个好友只为兑换一个开发板。

开发板兑换

邀请之后~开心的想要去兑换,却发现本周库存:0块 每周一上午10点更新库存(伤心)

库存为0

很尴尬,难道我要等到下周一去疯抢吗。。

0X01 测试

先不管库存多少,先兑换一下试试。burpsuite 抓包跑起来 o( ̄▽ ̄)ブ

提交兑换

点击确认兑换之后~ 去查看一下BurpSuite截断的数据包。

Burp Suite POST请求包

请求头大同小异~主要就是cookie 。这里只放一下request-body 。把这个数据包发送到Repeater,重放一下,观察服务器返回值。

返回Repeater

看到返回包之后~发现通过重放可以直接兑换成功(我用了另一个小号兑换了另一个库存多的板子,因为没有截图所以这里就没有办法上图了。)于是想到通过重放该请求包,判断Response返回包的Content-Length长度。

0X02 实现

想来想去从来没写过网络编程~只好从Python入门开始。找了很多python的方法库,最后选了requests库。

使用pip安装requests库 pip install requests

安装requests 库

构造发送的请求包,感觉这么弄太费劲了,不知道有没有大神给点好的意见。构造起来也是比较方便,主要需要注意的是因为要调试请求包,所以需要添加一个代理设置,这样就可以使用burp suite 抓包查看一下自己构造的请求包。

请求包构造

接下来发送一下构造的请求包,使用burp suite查看一下。

发送构造的请求包

发送构造的请求包,查看服务器返回的响应包。

响应包

我们可以看到服务器的应答包和之前重放的应答包是一样的,也就是说通过不断发送此HTTP请求即可达到自动兑换的目的。使用if判断content-length 长度是否等于49,如果不是则退出循环,如果是则继续发送HTTP请求。

判断是否兑换成功

测试脚本是否执行正确,使用burp suite截断返回的响应包,修改其中的content数据,查看程序运行状态。

判断运行状态

可以看到如果修改应答包之后,程序成功执行。 然而为了让程序可以运行在VPS上,我们需要将requests 中的proxies 取消。结果出问题了,解释器提示没有找到content-length。可是在burp suite上我们看到的确是存在content-length。

报错信息

经过排查,后来发现是burp suite自动在响应包中加上content-lengt。这就需要我们自行判断content的长度。

修改判断方式

此时程序可以正常运行。

0X03 运行

继续完善了一下程序交互,加入了短信提示,设置了发送速率。程序到这里就OK啦,再截张图给大家。

最终程序

最后提前祝大家节日快乐~

年华不散场

相关文章

网友评论

本文标题:Python 编写自动兑换工具

本文链接:https://www.haomeiwen.com/subject/lmzxhftx.html