antigone4224@home:~$

  • web3-url-colearning-day8

    今天就是听课,解答了我之前的一些疑问。。 1.manual mod的路由实现问题,老师给了个示范项目 // SPDX-License-Identifier: MIT pragma solidity ^0.8.0; import "../W3RC3.sol"; contract FlatDirectory is W3RC3 { bytes public defaultFile = ""; constructor(uint8 slotLimit) W3RC3(slotLimit) {} function resolveMode() external pure virtual returns (bytes32) { return "manual"; } fallback(bytes calldata pathinfo) external returns (bytes memory) { bytes memory content; if (pathinfo.length ==...

  • web3-url-colearning-day7

    Use eth-blob-uploader to upload files via blobs Use eth-blob-uploader to upload files via blobs 测试一下blob上传的命令行工具( npm i -g eth-blob-uploader ​ ``` eth-blob-uploader -r <rpc> -p <private-key> -f <file-path> -t <to-address> 上传文件(

  • web3-url-colearning-day6

    今天学习一下Ethfs 安装Ethfs-cli npm install -g ethfs-cli ethfs-cli upload -f <directory|file> -a <address> -p <private-key> -r [rpc] -t [upload-type] 创建Flat Directory 合约 ethfs-cli create -p privkey chainId = 3334 providerUrl = https://galileo.web3q.io:8545 FlatDirectory Address: 0x6F3F9E477a931d208c06efE7E6D3af251B000E94 得到 上传第一个文件夹 ethfs-cli upload -f myfolder -a 0x6F3F9E477a931d208c06efE7E6D3af251B000E94 -c 3334 -p dadd64540987deea8210cfadcf50aeeed4ec14950a1f05260f7f59084f3b0727 providerUrl = https://galileo.web3q.io:8545 chainId...

  • web3-url-colearning-day5

    在群组中发送地址,得到了1000测试ETH 可以拿来在ETH Storage上传文件 https://galileo.web3q.io/file.w3q/0x81fb5c383f192f7fa1f0788e1a06aed26ffac469/b_d42a32a060f284d3ffe3b4cf8cc08501.jpg 上传了我的qq头像( 成功的存在了galileo测试网上( 文件的地址一般是 web3://we3q.io: 花费两个测试ETH

  • web3-url-colearning-day4

    今天学习一下ethstorage。 EthStorage 是一个模块化和去中心化的存储 Layer 2,提供由数据可用性(DA)驱动的可编程键值存储。它为 Rollups 提供了长期的数据可用性解决方案,并为完全链上应用程序(如游戏、社交网络、人工智能等)开辟了新的可能性。 动机 EthStorage 背后的主要动机是提供基于以太坊的长期数据可用性。 EIP-4844 引入了数据斑块(data blobs),这增强了 Layer 2 扩展解决方案(如 Rollups)的吞吐量和效率。然而,这些数据斑块是临时可用的,意味着它们将在几周后被丢弃。这产生了一个显著的影响:L2 无法无条件地从 L1 推导出最新状态。如果某些数据无法再从 L1 检索,Rollup 可能无法同步链。 通过 EthStorage 作为长期数据可用性解决方案,L2 可以随时从它们的数据可用性层(以太坊 DA、Celestia、EigenDA 等 + EthStorage)中推导数据。 EthStorage 还为完全链上应用程序(如游戏、社交网络、人工智能等)开辟了新的可能性。 ethstorage文档 为ETHstorage提供存储,也算是某种存储挖矿(,可惜要550g的空余存储空间,不然挖矿还是挺香的 ethstorage的愿景是让以太坊网络的存储变得不再昂贵,到了一种可接受的程度,这样通过web3 url许多web2的网络服务也就可以部署在web3上了。

  • web3-url-colearning-day3

    今天稍微有点事情,可能就没法接着把hw做完了,打算完善一下对于resolve mod的理解,阅读ERC 6860文档,对比Auto Mod 和manual Mod的区别: the protocol will call the address with “Calldata” = keccak("resolveMode()")[0:4] = “0xDD473FAE” 在第一访问的开始,会尝试调用resolveMode()方法来确定resolvemod 如果仅指定地址 chainid,路径为空,Manual的calldata会是”/”,AutoMod的calldata会为空。。 ManualMod会直接将Path+Query作为Calldata发出,而AutoMod会多一个进行abi转化的功能(AutoMod 可以把参数放到路径中,以及可以通过returns指定返回结果的类型,在调用的时候会自动转化成符合正常合约调用的abi的calldata调用的)。 Manual Mod 返回数据默认为text/html,如果不是会根据MIME后缀名自动识别,而Auto Mod则是根据returns的指定返回application/json,如果没有returns应该是undefined,从这个角度来说,ManualMod更适合于访问资源,而auto mod更适合于作为数据处理的中继。 Manual Mod可以很精准的定位资源在合约中的位置,但很明显这种直接将相对位置作为call data的方式是需要特殊支持的,就好像写web框架需要单独的文件服务一样,它更符合我们对于web2资源访问的构思。

  • web3-url-colearning-day2

    hw1: Find the ownership of an your favor NFT 查询一下slides里展示的cyberbrokers吧 ERC721有ownerOf方法可以通过tokenid查询owner的地址 在etherscan上查询的合约地址可以调用ownerOf方法,然而cyberbrokers-meta这个地址却不能 再尝试了一下发现那个0x89的合约地址同样也无法执行renderBroker的方法 ens上查询了一下0x8b开头的一个合约地址能renderBroker 还是有点不太明白怎么回事暂时。 Find the balance of an account in an ERC-20 contract (USDC / USDT) ERC20 有个balanceOf方法可以查询余额 web3:// (addr of contract)/balanceOf/(acc addr)?returns=(uint256) Deploy a contract in auto model and say “hello world” 很明显是要我们关注ERC 6860关于 解析模式(resolve mode)的定义了 Resolve...

  • “web3-url-colearing-day1”

    预习了一下第一次的 slides,简单的介绍了一下web3://协议 ERC-4804提出了使用RFC 2396 URI来表示一个以太坊消息调用,给予了我们一种直接访问以太坊区块链的方式,也就是web3 url,从此不再需要经过http://或者ipfs的代理。 可以参考下面这张图(直接从slides里扒的链接,可能会没法加载= =) 下面的标识是对应URI的RFC标准,上面的标识是对应了对于区块链中具体寻址的对应。 可以看到web3:// 支持大多数http://的功能,就是对标以太坊生态中的http://,与ipfs://不同的是,web3://是直接对接到链上的,虽然看起来都是去中心化的一种应用层协议,但是ipfs://对接的是共享文件的peer节点,web3://对接的是以太坊或者EVM生态的区块链网络。 slides里提供了两种使用web3:// 协议的方式,一种是火狐浏览器插件,这种访问还是经过了gateway 经过http://代理来实现的访问(看起来只是将请求转换成了url请求发送给gateway),然后就是一个EVM Browser 这个在我仅仅只看Readme的情况下,需要一个https的链接指定rpc,,翻了下源码,还真是http call rpc,, async #rpcCall(rpcUrl, args) { if(this.#rpcCallCounters[rpcUrl] === undefined) { this.#rpcCallCounters[rpcUrl] = 0; } this.#rpcCallCounters[rpcUrl]++; let postData = { jsonrpc: "2.0", id: this.#rpcCallCounters[rpcUrl], method: "eth_call", params:[ args, "latest" ] } const response = await...

  • Pingctf 2023 dangleme

    环境搭建 用官方wp在本地发现打不通,只能试着去复现官方题目的环境,下载文件查看dockerfile后发现,他们使用了redpwnjail搭建题目环境, FAQ里有如何更改dockerfile辅助调试的方法,其实也就是撤销将环境迁移进jail的过程,然后再安装一些调试所需要的工具,python3环境,gdb,pwntools,pwndbg这些必要的工具 复现 整个复现的过程还是参考了这篇wp,官方wp并没有说的很清楚,导致我一开始的想法陷入了误区。 静态分析 首先肯定是要拖入ida看一看的 __int64 __fastcall main(int a1, char **a2, char **a3) { char *v3; // rax setvbuf(stdout, 0LL, 2, 0LL); setvbuf(stdin, 0LL, 2, 0LL); setvbuf(stderr, 0LL, 2, 0LL); v3 = get_random_name(); menu(v3); return 0LL; } 在进入菜单函数之前,首先执行了一个函数来获取一个随机的名字,函数内部是长这样的: char *sub_2309() { int v0; // eax char dest[48824]; //...