Python爆破校园饮水机系统,喝水还要花钱?不存在的,免费饮水!
论述:此教程只做技术交流,切勿用于其它相关用途。
本人所读大学是那种环境措施等都比较好的,毕竟学费也很贵的,至于相关名称我就不说了。记得大一的时候我们还是在宿舍刷卡饮水,后面有人大量在某宝买卡后,厂家不得不采取相关措施。最后改成了用蓝牙连接,下载APP充值饮水的这么个流程。
虽然此教程有点属于Python黑客性质,但方法无非都是抓包,与Python知识的应用。
此Python黑客教程分为三个相关步骤
1、利用fd分析与实战
要实现欲达到的功能,必须要先了解它的APP吧?app主界面:
逻辑步骤:
- 打开app后用手机蓝牙功能与饮水机连接。
- 如果余额大于10则先转10块余额到预扣款里,如果小于10则全部扣除。(每个地方的都会有所差异,具体看实际情况)
- 饮水机上显示10元,也就是你的预扣款为10,饮水机自动出水。
- 饮水机上的金额随着用水量增加而自动减少
- 结束用水,饮水机上显示的金额就是所剩余额,将返还给APP内
然后我们接着利用fiddler抓取手机app向服务器的HTTP请求内容,抓包。
app启动时的HTTP数据请求如下所示:
想要知道这些请求都是做什么的,可以看网站的响应内容,或者请求的get请求的内容以及post请求的内容,由图中fiddler右下角的“Message=未发现版本”能够知道http请求应该是检查更新的请求。
很多利用“fiddler”都是改金额,用水让它的金额发生改变试试。
先按“点击开始用水”按钮
app截图:
fiddler的http请求
app内余额6<10,所以全部转到了预扣款里,饮水机上显示余额为6.00元,由上图可以知fiddler的http请求一共有4个,而且我们可以看出http请求没有与服务器发生有关金额的信息交互。红色标记“00A3AAAF”是这次交易的订单号,这个是关键点。
关键步骤,结束用水让APP退还所用余额。
app截图
fiddler抓取到的金额数据:
前面用红色标记起来的订单号在结账返还金额的时候用到了,别去修改它。bal的值很明显为退还金额值,可以把它改为预扣款金额6,接着就会成功退还预扣款!有多少次http请求返回的余额,就修改几次。
点击“确认结账”按钮刷新,余额就能变回6元。
2、Python&burp搭建代理服务器
fiddler虽然可以利用漏洞,但每次都要手动去修改,用Python写个自动化Exp脚本会方便很多。
设置好burpsuite后,运行Python代码实现代理服务。
3、Python实现自动化exp
将Python代码改成app的漏洞利用工具。
Python代码如图所示
订单号包含在URL中,非常方便。
header请求头的使用
有了凭证后,就非常容易实现欲达到的效果了
服务器返回的是json形式,那么用Python的eval,获取对应键值即可。
接着执行欺骗,“结账”请求:
结论
这个教程必须要对此APP有所了解,并且有Python基础的的才能够看得懂,这是唯一的遗憾了。
上一篇: 公学就是公立学校?NO!