如何在军训期间成功破解充电桩
这篇文章详细的记录了我军训期间破解充电桩的历程~仅留作纪念~~~~~纪念我过去的高中生活。
零、背景
2017年9月,我来到了八达岭军训基地。这里人烟稀少,最关键的是,完全没有插头。虽然辅导员曾经警告过不准带手机,不过,想来正常的人都会带上吧。于是自然充电就成了个大问题。
军训基地里设置了至少16个充电桩,这些充电桩用法很简单:
用微信扫描二维码之后,按照网站上面的指示付款,然后按下按钮连上线,就可以开始充电了。(好神奇x)每次收取1块钱的费用,相应的会获得15分钟的充电时长。
于是我每天凌晨都会去偷偷充电,和守夜的同学一起唠嗑,度过漫漫长夜。
一、起因
终于,在军训的第五天,在一个彻夜无人的夜晚。我闲得无聊,开始尝试攻击网站。
收钱的主机域名是v6.w***b.com,很自然,我同时也关照了www.w***b.com。令人惊奇的是,这两个主机的位置并不同。作为web应用,自然是先想到找后台、万能密码、上传漏洞之类的,然而在半个小时的轮番轰炸之后,我放弃了这一条路。
相反,我开始扫描端口。
nmap -sT v6.w***b.com
nmap -sT www.w***b.com
可以看出,两个主机都开放了3306端口,那一般就有很大几率是MySQL了。
二、深入
有了MySQL,第一个便是想弱密码攻击,手机使用TeamViewer连接电脑,用Navicat连接。结果。。。。试了两下,root:root登录成功了。
心中窃喜,这下就算不能GetShell,也可以脱库了。快速的看了一下版本,心中一冷,MySQL 5.5.53是最新的MySQL,已经完全杜绝了select into outfile的写文件方式。想起自己之前也是多次卡在这里,不禁更加失落。
不过转念一想,想起在查找plugin_dir的时候看到了赫赫在目的phpStudy:
记得是一个套件,而且用的人挺多,自然要搜搜看有没有什么好的提权方案。一波搜索之后,发现这个套件自带phpMyAdmin,接着就去查phpMyAdmin的提权新套路。
功夫不负有心人,发现了可以利用MySQL的日志进行小马的写入。
那么问题就变成了如何寻找绝对路径。www站的phpStudy自带的phpinfo.php方便的爆出了绝对路径
进而瞬间写入小马,使用中国菜刀连接成功,发现连过去就是Administrator权限,十分开心。
但是在转了转目录之后,接着就发现www站的大部分功能已经被弃用,绝大部分的主要工作都在v6站上完成。然而,v6站删除了phpinfo.php,导致完全无法爆出绝对路径,自然也就无法写入小马GetShell。
陷入深思。。。
三、转机
根据刚才的目录为D:\**b2,猜测了C:\**b2,D:\**b,D:\**b3,D:\**b4…….均失败了,无限懊恼ing
关键点来了
想了一阵,记得在www站保留了v5 v4 v3版本的网站,猜测网站相应的目录结构十分相似。于是,尝试访问v6站中与www站对应的controller文件。幸运的是,程序开启了报错信息,详细的路径就爆出来了,结果是C:\wtb3…….就忘了试这个…更加懊恼
拿到了路径,自然就成功的写入了小马,拿到了相应的权限。
四、权限维持
Server使用win2012,只能用mimikatz提取ntlm hash,抱着试一试的心态放到cmd5上面跑,没想到还真跑出来了。
继续翻目录,结果翻到了公司里的一大串密码,包括支付宝、微信公众号什么的。。。当然都没有去登录。
五、分析系统结构
系统分为三部分:
- 前端:接受订单,收取金额,发送给中端处理。该部分由php写成
- 中端:接受前端的消息,并根据消息的指示,给终端下发任务。由c++写成
- 终端:接受任务,并提供相应的服务
通过查看源码+IDA分析得到他们之间通信的协议。前端与中端通过简单的http协议相连接,中端接着通过百度IoT服务向终端下发特定topic的MQTT消息,而Subscribe在百度IoT MQTT服务器下的相应终端就得到了信息。
六、免费充电
有了上面的分析,自然可以发现我们可能可以下手的方向有:
- 修改前端,使得不付钱就可以完成订单
- 修改中端,暴力下发许多任务
修改终端,直接拆箱子
第一个和第二个原理类似,而且操作难度比较高,显然没有第二个好。于是二话不说,我下载了HiveMQ,一个实现MQTT协议的客户端,并Subscribe到所有topic下面,轻松的拿到了发送的数据。接着用python的mqtt库就就可以模拟发包了。五分钟写完,尝试一下,Bingo!果然不用付款就可以充电了。然后我改写了一下脚本,写成循环,就可以一直免费了。
七、持续充电(失败)
然而,这种方法只能免去每次一元的费用, 并不能让人一直充电,每隔15分钟还是需要按一次按钮,很烦人。
于是我想出了各种骚操作:
- 拿硬纸片塞住按钮,使得按钮可以一直被按压。结果:虽然被按压,然而充电仍然停止了
- 修改发送数据,改为投两个币。结果:仍然无效
- 发送大量数据形成 flood,使得机器死机,无法控制是否充电。结果:无效
- (
军训结束了)
八、后记
在我软件破解的同事,也有人硬件破解,(直接撞锁)
破解后不久,由于线材损坏严重,导致短路,进而使得线材大量发热,其他线路的电流相应被分走。虽然我耗时整整三天,然而并没有什么卵用
大概军训结束了。绝大多数人都是在训练场上挥洒汗水,我则是在用生命去搞充电桩。虽没有身体上的辛劳,但是带给人的是身心上的疲惫,连续的熬夜、绞尽脑汁的思考,都让我心力交瘁。
不过,我因此认识了纠察队的一拨人、医务室的一路人、晚上执勤的一路人、在宿舍里面休息的一路病号,见到了各色各样的人……
觉得自己十分幸运。非常感谢他们的宽容与照顾~
想了想,自己只有在军训的时候,才看到过那澄澈明朗的夜空吧。