某60区块链安全之JOP实战二学习记录

区块链安全

文章目录

  • 区块链安全
  • Jump Oriented Programming实战二
  • 实验目的
  • 掌握对EVM逆向能力
  • 实验环境
  • 实验工具
  • 实验原理
  • 实验内容
  • Jump Oriented Programming实战二 实验步骤


Jump Oriented Programming实战二

实验目的

学会使用python3的web3模块
学会分析以太坊智能合约中中Jump Oriented Programming(JOP)问题
深刻理解EVM字节码与delegatecall函数调用参数布局

掌握对EVM逆向能力

找到合约漏洞进行分析并形成利用

实验环境

Ubuntu18.04操作机

实验工具

python3

实验原理

涉及到 JOP 的是如下三个字节码:0x56 JUMP 0x57 JUMPI 0x5B JUMPDEST,在 EVM 中的无条件跳转 JUMP 和条件跳转 JUMPI 的目的地都必须是 JUMPDEST,这点和 ROP 可以任选返回地址不同。
通常需要用到 JOP 的合约在编写时都夹杂着内联汇编的后门,本实验通过jop控制程序控制流,实现特定目的。
分析合约执行流,巧妙构造函数参数,完成特定位置的jump。

实验内容

合约中内置了稍微复杂的JOP问题,找到合约漏洞并形成利用,触发合约的SendFlag(address addr)事件即可
使用python3的web3模块远程利用漏洞并获取flag
实验地址为nc ip 10016

Jump Oriented Programming实战二 实验步骤

获取合约地址和合约源代码
nc ip 10016连接到题目,输入1,获取部署合约的game account及token
在这里插入图片描述

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

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

使用geth attach连接到题目,获取合约字节码,题目附件中提供了合约字节码反汇编和反编译代码
在这里插入图片描述

分析合约源代码漏洞

0x60806040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806319ff1d211461009057806324b04905146101205780632f76c9c21461012a578063645b8b1b146101555780636bc344bc146101ac57806370a0823114610208578063f0d252681461025f5780632665f77d146102ac575b005b34801561009c57600080fd5b506100a56102c3565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156100e55780820151818401526020810190506100ca565b50505050905090810190601f1680156101125780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b610128610323565b005b34801561013657600080fd5b5061013f610406565b6040518082815260200191505060405180910390f35b34801561016157600080fd5b50610196600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/200474.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MyBatis 常见面试题

目录 1.MyBatis——概述1.1.什么是 ORM 框架?1.2.✨谈谈对 MyBatis 的理解。1.3.使用 MyBatis 相对于直接使用 SQL 有哪些优点?1.4.MyBatis 有什么优缺点?1.5.✨MyBatis 的分层结构是什么样的?1.6.✨MyBatis 的执行流程是什么样的…

机器学习实验一:线性回归

系列文章目录 机器学习实验一:线性回归机器学习实验二:决策树模型机器学习实验三:支持向量机模型机器学习实验四:贝叶斯分类器机器学习实验五:集成学习机器学习实验六:聚类 文章目录 系列文章目录一、实验…

12、pytest上下文友好的输出

官方实例 # content of test_assert2.py import pytestdef test_set_comparison():set1 set("1308")set2 set("8035")assert set1 set2def test_dict_comparison():dict_1 {name:陈畅,sex:男}dict_2 {name:赵宁,sex:女}assert dict_1 dict_2def tes…

今日心得:多总结多探索,多于他人沟通,思想观点碰撞

今日在工作中获得了一些新的体验和感悟,使我深刻认识到不断总结和探索的重要性。 通过反思和总结,我能够更好地理解自己的行为和决策,发现自己的优点和不足,从而更好地规划未来的行动。 在人生的旅途中,我们不断地遇到…

Flask项目Day1,Flask常见第三方拓展包

拉项目 git clone https://gitee.com/hahaguai007/python-flask-mysql.git git clone 项目地址运行后即可获取项目 2.创建数据库 在MySQL中创建一个数据库,名字自己定,然后修改RealProject\settings.py里的SQLALCHEMY_DATABASE_URI,格式为 …

第18章 C++11标准库(STL)

STL定义了强大的、基于模板的、可复用的组件,实现了许多通用的数据结构及处理这些数据结构的算法。其中包含三个关键组件——容器(container,流行的模板数据结构)、迭代器(iterator)和算法(algo…

动态规划求解 fibonacci 数列

动态规划: 动态规划的基本思想是:将原问题拆分为若干子问题,自底向上的求解。是自底向上的求解,即是先计算子问题的解,再得出原问题的解。 思路: 创建一个数组,大小为n1,用于存储斐波那契数列的值。数组的…

maven-profile

指定profile生效的几种方式 maven中profile的使用详解_maven profile_2021不再有雨的博客-CSDN博客 【Maven】【翻译】3、Profiles文件_maven的profiles文件是什么-CSDN博客 查看当前生效的profile mvn help:active-profiles 比如有些是用activeProfiles在pom中指定的&…

我在USC南加大学游戏:真实经历/录取作品集_RoSSo艺术留学

近日,美国Common App最新早申统计数据:早申人数与疫情前相比增加了41%!专注于国际艺术教育的RoSSo也发现,2022-2023申请季提交早申的学生中,各类热门院校以及艺术留学专业申请人数均是“涨”声一片! 图源官…

SpringBoot3-快速体验

1、pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.…

计算机寄存器是如何实现的

冯诺依曼体系 冯诺依曼体系为现代计算机的设计和发展奠定了基础&#xff0c;它的核心思想和原则在当今计算机体系结构中仍然被广泛采用和应用。所以只要谈论计算机的组成就离不开冯诺依曼体系 作为核心组成部分的CPU除了由运算器和控制器组成之外&#xff0c;还有一些寄存器…

阿里云环境下的配置DNS和SLB的几种实践示例

一、背景 对于大多中小型公司来说&#xff0c;生产环境大多是购买阿里云或者腾讯云等等&#xff0c;也就存在以下需求&#xff1a; 外网域名内网域名SLB容器化部署 特别是前两项&#xff0c;一定是跳不过的。容器化部署&#xff0c;现在非K8S莫属了。 既然是购买阿里云&…

Codeforces Round 913 (Div. 3)

等hack完补全&#xff0c;快进到全都被爆开 A. Rook B. YetnotherrokenKeoard 补题&#xff1a;C. Removal of Unattractive Pairs 总结 前两题18分钟快速拿下。C题开始钻牛角尖&#xff0c;钻了2个小时超时一次WA一次。 陷入了危险的无用思维旋涡&#xff01;导致这一次div…

从零构建属于自己的GPT系列2:模型训练1(预训练中文模型加载、中文语言模型训练、逐行代码解读)

&#x1f6a9;&#x1f6a9;&#x1f6a9;Hugging Face 实战系列 总目录 有任何问题欢迎在下面留言 本篇文章的代码运行界面均在PyCharm中进行 本篇文章配套的代码资源已经上传 从零构建属于自己的GPT系列1&#xff1a;数据预处理 从零构建属于自己的GPT系列2&#xff1a;模型训…

leetcode203. 移除链表元素

题目描述 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,6,3,4,5,6], val 6 输出&#xff1a;[1,2,3,4,5]示例 2&#xff1a; 输入…

NSS [NSSCTF 2022 Spring Recruit]babyphp

NSS [NSSCTF 2022 Spring Recruit]babyphp 考点&#xff1a;PHP特性 开局源码直接裸奔 <?php highlight_file(__FILE__); include_once(flag.php);if(isset($_POST[a])&&!preg_match(/[0-9]/,$_POST[a])&&intval($_POST[a])){if(isset($_POST[b1])&&…

Git篇如何在自己服务器搭建自己的git私有仓库

要在自己的服务器上搭建自己的Git私有仓库&#xff0c;可以按照以下步骤进行操作&#xff1a; 安装Git服务器软件&#xff1a;选择一款适合的Git服务器软件&#xff0c;如GitLab或GitHub&#xff0c;并按照官方文档进行安装和配置。创建数据库&#xff1a;如果使用GitLab&…

Doris 集成 ElasticSearch

Doris-On-ES将Doris的分布式查询规划能力和ES(Elasticsearch)的全文检索能力相结合,提供更完善的OLAP分析场景解决方案: (1)ES中的多index分布式Join查询 (2)Doris和ES中的表联合查询,更复杂的全文检索过滤 1 原理 (1)创建ES外表后,FE会请求建表指定的主机,获取所有…

MATLAB算法实战应用案例精讲-【图像处理】边缘检测(补充篇)(附MATLAB代码实现)

目录 前言 几个相关概念 知识储备 数字图像处理(Digital Image Processing)

Qt 软件调试——windbg初篇(一)

在上一篇《Qt 软件调试&#xff08;二&#xff09;使用dump捕获崩溃信息》中我们结尾处提示大家先准备好windbg&#xff0c;windbg是非常强大的调试工具&#xff0c;对于我们进行代码调试和分析异常有着非常重要的意义。 在Qt软件调试这个系列的首篇&#xff0c;我们介绍了《Qt…