【區塊鏈安全 | 第三十八篇】合約審計之獲取私有數據(二)

文章目錄

    • 前言
    • 漏洞代碼
    • 代碼審計
    • 攻擊步驟
    • 修復/開發建議
    • 審計思路

在這里插入圖片描述

前言

在【區塊鏈安全 | 第三十七篇】合約審計之獲取私有數據(一)中,介紹了私有數據、訪問私有數據實例、Solidity 中的數據存儲方式等知識,本文通過分析具體合約代碼進行案例分析。

漏洞代碼

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;contract Vault {// 公共變量,可以通過 getter 函數讀取// slot 0uint public count = 123;// 部署合約的地址會成為 owner// slot 1address public owner = msg.sender;// 示例布爾值和 uint16 類型變量// slot 1bool public isTrue = true;uint16 public u16 = 31;// 私有密碼變量,不能通過合約外部直接訪問// slot 2bytes32 private password;// 常量值,在部署時就固定,不可更改// 編譯時嵌入,不占 slotuint public constant someConst = 123;// 固定長度的 bytes32 數組,長度為 3// slot 3、slot 4、slot 5bytes32[3] public data;// 用戶結構體,包含用戶 ID 和密碼字段struct User {uint id;bytes32 password;}// 用戶動態數組,僅限內部訪問// slot 6User[] private users;// 映射:通過用戶 ID 查找對應的用戶結構體mapping(uint => User) private idToUser;// 構造函數,在部署時設置初始密碼constructor(bytes32 _password) {password = _password;}// 添加新用戶,自動分配 ID,并存儲在數組和映射中function addUser(bytes32 _password) public {User memory user = User({id: users.length,password: _password});users.push(user);idToUser[user.id] = user;}// 工具函數:用于計算數組中元素的 storage 位置function getArrayLocation(uint slot,uint index,uint elementSize) public pure returns (uint) {return uint(keccak256(abi.encodePacked(slot))) + (index * elementSize);}// 工具函數:用于計算映射中某個鍵的 storage 位置function getMapLocation(uint slot, uint key) public pure returns (uint) {return uint(keccak256(abi.encodePacked(key, slot)));}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/78803.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/78803.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/78803.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

《微服務與事件驅動架構》讀書分享

《微服務與事件驅動架構》讀書分享 Building Event-Driver Microservices 英文原版由 OReilly Media, Inc. 出版,2020 作者:[加] 亞當 ? 貝勒馬爾 譯者:溫正東 作者簡介: 這本書由亞當貝勒馬爾(Adam Bellemare…

小剛說C語言刷題——第22講 二維數組

昨天我們講了一維數組,今天我們來講二維數組。 1.定義 二維數組是指在數組名后跟兩個方括號的數組。 2.語法格式 數據類型 數組名[下標][下標] 例如:int a[5][9];//表示5行9列的數組 3.訪問二維數組元素 格式:數組名[行坐標][列坐標]…

Vue 大文件分片上傳組件實現解析

Vue 大文件分片上傳組件實現解析 一、功能概述 1.1本組件基于 Vue Element UI 實現,主要功能特點: 大文件分片上傳:支持 2MB 分片切割上傳實時進度顯示:可視化展示每個文件上傳進度智能格式校驗:支持文件類型、大小…

「邏輯推理」AtCoder AT_abc401_d D - Logical Filling

前言 這次的 D 題出得很好,不僅融合了數學邏輯推理的知識,還有很多細節值得反復思考。雖然通過人數遠高于 E,但是通過率甚至不到 60%,可見這些細節正是出題人的側重點。 題目大意 給定一個長度為 N N N 的字符串 S S S&#…

騰訊后臺開發 一面

一、手撕 合并升序鏈表 合并兩個排序的鏈表_牛客題霸_牛客網 順時針翻轉矩陣 順時針旋轉矩陣_牛客題霸_牛客網 二、八股 1、靜態變量和實例變量 public class House {public static String buildDate "2024-10-27"; // 靜態變量public String color; // 實…

Unity 動畫

Apply Root Motion 勾選的話就會使用動畫片段自帶的位移 Update Mode (動畫重新計算骨骼位置轉向縮放的數值): Normal : 隨Update走,每次Update都計算Animate Physics :與 fixed Update() 同步&#xff0…

NDT和ICP構建點云地圖 |【點云建圖、Ubuntu、ROS】

### 本博客記錄學習NDT,ICP構建點云地圖的實驗過程,參考的以下兩篇博客: 無人駕駛汽車系統入門(十三)——正態分布變換(NDT)配準與無人車定位_settransformationepsilon-CSDN博客 PCL中點云配…

基于HTML + jQuery + Bootstrap 4實現(Web)地鐵票價信息生成系統

地鐵票價信息表生成系統 1. 需求分析 1.1 背景 地鐵已經成為大多數人出行的首選,北京地鐵有多條運營線路, 截至 2019 年 12 月,北京市軌道交通路網運營線路達 23 條、總里程 699.3 公里、車站 405 座。2019 年,北京地鐵年乘客量達到 45.3 億人次,日均客流為 1241.1 萬人次…

EtherNet/IP 轉 Modbus 協議網關

一、產品概述 1.1 產品用途 SG-EIP-MOD-210 網關可以實現將 Modbus 接口設備連接到 EtherNet/IP 網 絡中。用戶不需要了解具體的 Modbus 和 EtherNet/IP 協議即可實現將 Modbus 設 備掛載到 EtherNet/IP 接口的 PLC 上,并和 Modbus 設備進行數…

PostgreSQL:邏輯復制與物理復制

🧑 博主簡介:CSDN博客專家,歷代文學網(PC端可以訪問:https://literature.sinhy.com/#/?__c1000,移動端可微信小程序搜索“歷代文學”)總架構師,15年工作經驗,精通Java編…

騰訊云COS與ZKmall 開源商城的存儲集成方案

ZKmall 開源商城與騰訊云對象存儲(COS)的集成,可通過云端資源托管、自動化數據同步、高性能存儲架構實現本地存儲負載降低與訪問效率提升。以下是基于搜索結果的集成路徑與核心優化點: 一、存儲架構升級:本地與云端協同…

HTML — 浮動

浮動 HTML浮動(Float)是一種CSS布局技術,通過float: left或float: right使元素脫離常規文檔流并向左/右對齊,常用于圖文混排或橫向排列內容。浮動元素會緊貼父容器或相鄰浮動元素的邊緣,但脫離文檔流后可能導致父容器高…

【軟件測試學習day1】軟件測試概念

前言 本篇學習,測試相關基礎概念、常見的開發模型測和測試模型,搞懂4個問題: 什么是需求什么是 bug什么是測試用例開發模型和測試模型 目錄 1. 什么是需求 1.1 為什么要有需求 1.2 測試人員眼里的需求 1.3 如何深入了解需求 2. 測試用例…

Flutter常用組件實踐

Flutter常用組件實踐 1、MaterialApp 和 Center(組件居中)2、Scaffold3、Container(容器)4、BoxDecoration(裝飾器)5、Column(縱向布局)及Icon(圖標)6、Column/Row(橫向/橫向布局)+CloseButton/BackButton/IconButton(簡單按鈕)7、Expanded和Flexible8、Stack和Po…

劉火良FreeRTOS內核實現與應用學習之7——任務延時列表

在《劉火良FreeRTOS內核實現與應用學習之6——多優先級》的基礎上:關鍵是添加了全局變量:xNextTaskUnblockTime ,與延時列表(xDelayedTaskList1、xDelayedTaskList2)來高效率的實現延時。 以前需要在掃描就緒列表中所…

圖像預處理-插值方法

一.插值方法 當我們對圖像進行縮放或旋轉等操作時,需要在新的像素位置上計算出對應的像素值。 而插值算法的作用就是根據已知的像素值來推測未知位置的像素值。 1.1 最近鄰插值 CV2.INTER_NEAREST 其為 warpAffine() 函數的參數 flags 的其一,表示最近…

智能配電保護:公共建筑安全的新 “防火墻”

安科瑞劉鴻鵬 摘要 隨著城市建筑體量的不斷增長和電氣設備的廣泛使用,現代建筑大樓的用電安全問題日益突出。傳統配電方式面臨監測盲區多、響應滯后、火災隱患難發現等問題。為提升建筑電氣系統的安全性和智能化水平,智慧用電系統應運而生。本文結合安…

如何解決DDoS攻擊問題 ?—專業解決方案深度分析

本文深入解析DDoS攻擊面臨的挑戰與解決策略,提供了一系列防御技術和實踐建議,幫助企業加強其網絡安全架構,有效防御DDoS攻擊。從攻擊的識別、防范措施到應急響應,為網絡安全工作者提供了詳細的操作指引。 DDoS攻擊概覽&#xff1a…

構建靈活的接口抽象層:支持多種后端數據存取的實戰指南

構建靈活的接口抽象層:支持多種后端數據存取的實戰指南 引言 在現代軟件開發中,數據存取成為業務邏輯的核心組成部分。然而,由于后端數據存儲方式的多樣性(如關系型數據庫、NoSQL數據庫和文件存儲),如何設計一套能夠適配多種后端數據存取的接口抽象層,成為技術團隊關注…

OpenCV 圖形API(23)圖像和通道合成

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 1.算法描述 在OpenCV的G-API模塊中,圖像和通道合成(composition)函數允許用戶對圖像進行復雜的操作,如合并…