第一次写分享文章~
0X00 起因
偶尔见到一个网站,说是通过邀请好友可以兑换开发板;于是乎,邀请了30个好友只为兑换一个开发板。
邀请之后~开心的想要去兑换,却发现本周库存:0块 每周一上午10点更新库存(伤心)
很尴尬,难道我要等到下周一去疯抢吗。。
0X01 测试
先不管库存多少,先兑换一下试试。burpsuite 抓包跑起来 o( ̄▽ ̄)ブ
点击确认兑换之后~ 去查看一下BurpSuite截断的数据包。
请求头大同小异~主要就是cookie 。这里只放一下request-body 。把这个数据包发送到Repeater,重放一下,观察服务器返回值。
看到返回包之后~发现通过重放可以直接兑换成功(我用了另一个小号兑换了另一个库存多的板子,因为没有截图所以这里就没有办法上图了。)于是想到通过重放该请求包,判断Response返回包的Content-Length长度。
0X02 实现
想来想去从来没写过网络编程~只好从Python入门开始。找了很多python的方法库,最后选了requests库。
使用pip安装requests库 pip install 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啦,再截张图给大家。
最后提前祝大家节日快乐~
年华不散场
网友评论