Defcon China 1.0 胸卡破解笔记

网友投稿 2019-06-02 14:46

写在前面

不会IOT, 不会逆向,  也没去听破解胸卡的 workshop, 本菜鸡在 @hook 师傅指引下完成了这次”破解“,在此记录一下,供大家看个热闹。

正文

胸卡正面的样子是一棵树,有树根和树叶,背面有一个重置的按钮,按一下之后,胸卡上的所有灯会全亮,5秒之后,再熄灭,然后根据你当前的进度进行亮灯(有些 Village过了之后他们可以给你点亮)。树根的位置是红色的灯,树叶的位置是绿灯。

https://cdn.china-scratch.com/timg/190604/14460355I-0.jpg

先看一下我这边弄完之后的样子, 树根和树叶随机跑马灯走你

https://cdn.china-scratch.com/timg/190604/1446041U9-1.gif

关于这个胸牌的破解,不同人有不同的理解。比如 4hou.com 的小编破解之后的是不停的闪闪闪 (这个才是官方破解的效果,我不管,我觉得我那个比官方的好看)

https://cdn.china-scratch.com/timg/190604/144605K47-2.gif

破解过程

能看到有一个 microUSB 的串口(Serial), 找根microUSB <=> USB 的线(一般你的安卓手机)插上,然后连接串口

$ ls -al /dev/cu.usbserial-*$ screen -L /dev/cu.usbserial-DC0626IH 15900 –L

https://cdn.china-scratch.com/timg/190604/14460A442-3.jpg

https://cdn.china-scratch.com/timg/190604/14460A603-4.jpg

然后按 h , 可以看到几个菜单

> h
L: Toggle LED state [Normal, All On, All Off]M: Toggle motion sensing [Low, Medium, High, Off]A: Read accelerometerU: Display unique IDF: Display game flagsH: Display available commandsCtrl-C: System reset>

L 是切换LED灯,每按一下LED灯的样子就会在 全亮、全灭、当前你闯关进度 这三个之间切换。

刚开始,打开全亮开关还以为我已经达到了目的,拔了 USB 之后,发现这都是幻觉,串口下的操作,只是让你调试用的,拔了线之后,又重置回去了。

我们选退出来,分别按下 ctrl A K 三个键之后,从 screen 里面退出来。

这个时候 Hook 师傅给我说有源码,直接刷固件

http://www.grandideastudio.com/defcon-china-2019-badge/  (点阅读原文

https://cdn.china-scratch.com/timg/190604/1446061X7-5.jpg

把源码包下载下来,解压

https://cdn.china-scratch.com/timg/190604/14460A1D-6.jpg

.ino 工程, 需要 Arduino IDE,去 Arduino 官网下载一个 IDE 下来,打开 DEFCON_China_Badge_2019.ino

1.设置端口为 usbserial

点 工具->端口->找到对应的usbserial

https://cdn.china-scratch.com/timg/190604/14460K605-7.jpg

2. 开发板选择 Arduino Fio

https://cdn.china-scratch.com/timg/190604/14460K259-8.jpg

别问我为什么选这个,我一个一个试的,流下了没技术的眼泪

https://cdn.china-scratch.com/timg/190604/14460W3c-9.jpg

3. 导入 library

把压缩包里的 libraries 里的内容复制到 ~/Documents/Arduino/libraries 目录下

https://cdn.china-scratch.com/timg/190604/14460U460-10.jpg

 这里的路径是 Arduino 的项目目录下的 libraries 目录,取决于你的首选项中的配置

https://cdn.china-scratch.com/timg/190604/14460VN2-11.jpg

如果你不想这么加,你也可以点 项目-> 加载库 -> 添加 .zip 库,然后把这些包一个一个手动加进去

https://cdn.china-scratch.com/timg/190604/14460S453-12.jpg

4. 测试写入固件

我们注意到串口进去的时候,会打印 Welcome to the DEFCON China 1.0 Official Badge 这样的字符串,搜索一下,然后在前面加上一个自己的标记。加完保存,然后点「上传」按钮

https://cdn.china-scratch.com/timg/190604/1446092422-13.jpg

https://cdn.china-scratch.com/timg/190604/14460a156-14.jpg

写入成功,然后点右上角那个放大镜,打开串口监视器

https://cdn.china-scratch.com/timg/190604/1446102210-15.jpg

看到写成去了,接下来,我们就可以随便改里面的代码了

5. 开始改代码破解

也懒得分析里面的矩阵了,看到 setup 函数里面,注释掉了一段在 DEBUG 模式下才有的代码, setGameFlags

https://cdn.china-scratch.com/timg/190604/144610CI-16.jpg

跟过去看一下,原来只有在 Debug  下才能直接改  Flag 的内容

https://cdn.china-scratch.com/timg/190604/14461123Z-17.jpg

这时候问题来了,我们的目的是要 LED 灯像跑马灯一样跑,看这玩意儿干啥,直接去找 LED 相关的代码不就完了?

这是全亮的代码:

https://cdn.china-scratch.com/timg/190604/1446115a5-18.jpg

然后是游戏模式下的LED显示代码:

https://cdn.china-scratch.com/timg/190604/1446112I2-19.jpg

drawPixel 第一个参数是 x 坐标,第二个是 y ,第三个是显示的颜色

原来,branches 上的绿灯像跑马灯一样,是用了 random...

那我们直接粗暴一点,把 root 的LED灯也随机了得了

matrix->drawPixel(random(0,4), random(0, 4), random(16));

改代码改代码:

https://cdn.china-scratch.com/timg/190604/14461234U-20.jpg

现在我们只要进这个 if 就行了,当然你也可以直接把整个函数都改了,我们需要用到上面 debug 模式的 setGameFlags 函数

我们把 DEBUG 的宏定义注释

https://cdn.china-scratch.com/timg/190604/1446124a8-21.jpg

然后在 setup 里面,强行调用 setGameFlags(0xFF, 0xFF), 把 flag 修改了,好暴力。。。

https://cdn.china-scratch.com/timg/190604/144613GU-22.jpg

接下来就是熟悉的三连操作: 保存,上传,收工,一气呵成

https://cdn.china-scratch.com/timg/190604/1446041U9-1.gif

最后

这次因为有源码,所以我这种门外汉也能玩上一玩,用的方法太暴力,有些无脑。如果你有时间可以详细的分析一下源码。

当然了,就像我上面提到的,你也可以根据自己的想法,去随意改代码,然后打造属于你自己的 Defcon China 1.0 胸牌。

来一波ChaMd5安全招聘~

快手安全团队

http://www.chamd5.org/jobdetail.aspx?id=775 高级研发工程师

http://www.chamd5.org/jobdetail.aspx?id=776 移动安全工程师-攻防方向

http://www.chamd5.org/jobdetail.aspx?id=777 移动安全工程师-研发方向

上海安识网络科技有限公司

http://www.chamd5.org/jobdetail.aspx?id=774 渗透测试工程师

吉林省吉林祥云信息技术有限公司

http://www.chamd5.org/jobdetail.aspx?id=773 网络安全工程师

点融安全应急响应中心

http://www.chamd5.org/jobdetail.aspx?id=770 安全合规工程师 

http://www.chamd5.org/jobdetail.aspx?id=771 高级安全开发工程师

360Sky-GoTeam(智能网联汽车安全实验室) 

http://www.chamd5.org/jobdetail.aspx?id=768 嵌入式安全研究员

http://www.chamd5.org/jobdetail.aspx?id=769 渗透测试工程师

苏州极光无限信息技术有限公司

http://www.chamd5.org/jobdetail.aspx?id=762 WEB代码审计

http://www.chamd5.org/jobdetail.aspx?id=763 漏洞研究

http://www.chamd5.org/jobdetail.aspx?id=764 安全研发

http://www.chamd5.org/jobdetail.aspx?id=765 逆向安全

http://www.chamd5.org/jobdetail.aspx?id=766 移动安全

http://www.chamd5.org/jobdetail.aspx?id=767 渗透测试


招新小广告

ChaMd5 ctf组 长期招新

尤其是crypto+reverse+pwn+合约的大佬

欢迎联系admin@chamd5.org


--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com