We are apologize for the inconvenience but you need to download
more modern browser in order to be able to browse our page

Download Safari
Download Safari
Download Chrome
Download Chrome
Download Firefox
Download Firefox
Download IE 10+
Download IE 10+

如何在军训期间成功破解充电桩

这篇文章详细的记录了我军训期间破解充电桩的历程~仅留作纪念~~~~~纪念我过去的高中生活。

零、背景

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上面跑,没想到还真跑出来了。

继续翻目录,结果翻到了公司里的一大串密码,包括支付宝、微信公众号什么的。。。当然都没有去登录。

五、分析系统结构

系统分为三部分:

  1. 前端:接受订单,收取金额,发送给中端处理。该部分由php写成
  2. 中端:接受前端的消息,并根据消息的指示,给终端下发任务。由c++写成
  3. 终端:接受任务,并提供相应的服务

通过查看源码+IDA分析得到他们之间通信的协议。前端与中端通过简单的http协议相连接,中端接着通过百度IoT服务向终端下发特定topic的MQTT消息,而Subscribe在百度IoT MQTT服务器下的相应终端就得到了信息。

六、免费充电

有了上面的分析,自然可以发现我们可能可以下手的方向有:

  • 修改前端,使得不付钱就可以完成订单
  • 修改中端,暴力下发许多任务
  • 修改终端,直接拆箱子

第一个和第二个原理类似,而且操作难度比较高,显然没有第二个好。于是二话不说,我下载了HiveMQ,一个实现MQTT协议的客户端,并Subscribe到所有topic下面,轻松的拿到了发送的数据。接着用python的mqtt库就就可以模拟发包了。五分钟写完,尝试一下,Bingo!果然不用付款就可以充电了。然后我改写了一下脚本,写成循环,就可以一直免费了。

七、持续充电(失败)

然而,这种方法只能免去每次一元的费用, 并不能让人一直充电,每隔15分钟还是需要按一次按钮,很烦人。

于是我想出了各种骚操作:

  1. 拿硬纸片塞住按钮,使得按钮可以一直被按压。结果:虽然被按压,然而充电仍然停止了
  2. 修改发送数据,改为投两个币。结果:仍然无效
  3. 发送大量数据形成 flood,使得机器死机,无法控制是否充电。结果:无效
  4. 军训结束了

八、后记

在我软件破解的同事,也有人硬件破解,(直接撞锁)

破解后不久,由于线材损坏严重,导致短路,进而使得线材大量发热,其他线路的电流相应被分走。虽然我耗时整整三天,然而并没有什么卵用

大概军训结束了。绝大多数人都是在训练场上挥洒汗水,我则是在用生命去搞充电桩。虽没有身体上的辛劳,但是带给人的是身心上的疲惫,连续的熬夜、绞尽脑汁的思考,都让我心力交瘁。

不过,我因此认识了纠察队的一拨人、医务室的一路人、晚上执勤的一路人、在宿舍里面休息的一路病号,见到了各色各样的人……

觉得自己十分幸运。非常感谢他们的宽容与照顾~

想了想,自己只有在军训的时候,才看到过那澄澈明朗的夜空吧。