0


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

区块链安全

文章目录


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
标签: 区块链 安全 学习

本文转载自: https://blog.csdn.net/weixin_51387754/article/details/134782244
版权归原作者 GuiltyFet 所有, 如有侵权,请联系我们删除。

“某60区块链安全之JOP实战二学习记录”的评论:

还没有评论