blockchain - openzeppelin 源码阅读
就像做 pwn 要读 glibc 源码,做 blockchain 怎么能不分析 openzeppelin 呢
[1] ERC20
ERC20 是以太坊上最基本的代币规范
openzeppelin
ERC20 源码在这
以下是该合约的变量
123456mapping(address account => uint256) private _balances; // account 该 token 的余额// account 批准 spender 使用的余额,实际上花的还是 account 的 tokensmapping(address account => mapping(address spender => uint256)) private _allowances; uint256 private _totalSupply; // 该合约总共发行的 token 数string private _name; // 该 token 的 namestring private _symbol; // 简约版的...
blockchain - Uniswap V2
学习一下 Uniswap V2
[1] 前置知识
[1-1] AMM(Automated Market
Makers)
一种去中心化的交易协议,用于在区块链网络中实现无需订单簿的资产交换。传统交易所通常依赖于买家和卖家通过订单簿来匹配交易,而AMM通过智能合约和算法自动确定资产的价格,从而进行交易。
AMM的基本原理是通过池子(Liquidity
Pools)来提供流动性。流动性池通常由两种或更多种资产组成,并由流动性提供者(LP)存入这些资产。然后,AMM使用特定的算法(例如常见的x
* y...
blockchain - All Your Tokens are Belong to Us Demystifying Address Verification Vulnerabilities in Solidity Smart Contracts论文阅读笔记
单一漏洞 + 污点分析做到顶会,暑假就想复现了结果拖到现在
年份:2024
[1] Abstract
基于目前研究较少的address
verification漏洞,本文用污点分析实现了的“轻量级”专属扫描工具AVVerifier,检查了数百万的合约,找到了数百个有该漏洞的合约,并将其部署在链上成为实时检测工具,并成功检测到了一次数十万美元的攻击
[2] Intro & Background
[2-1] Ethreum Primer
大概讲了一下现在区块链非常火,自从以太坊和智能合约出现后,DApps的各种应用层出不穷,比如闪电贷等。指出为了防止漏报带来的经济损失,能保证soundness的静态符号执行常常被用到(mythril)
[2-2] Whitelist address
verification
Beosin. Two vulnerabilities in one function: The analysis of visor
finance exploit....
2024年终总结
...
Web - 网络安全概述
12.24网络安全期末,用这篇文章来梳理一下对相关知识的理解
导图
这篇文章主要从TCP/IP五层模型的层次来比较宽泛地讲一些常见的网络攻击。众所周知,TCP/IP五层模型将网络架构分为物理层、数据链路层、网络层、运输层和应用层。针对物理层的攻击我不是很懂,因此不在本篇文章的描述范围内,而应用层出现的app漏洞和防御技术比较广泛,会用几章分别叙述。
每一章大概分为"协议-攻击方式-防御措施"三部分。常见攻击可以分为"DoS,投毒,劫持",其中,劫持一般是劫持有状态的协议。
[1] 数据链路层(局域网)
[1-1] 协议
这部分讲述的协议不只是设计数据链路层的协议,而是涉及到局域网通信的协议。
由于物理媒介的不同,我们可以把网络分为有线网络和无线网络。无线网络涉及AP、信道等内容,不利于基础攻防技术的学习,因此本文主要基于有线网络进行讲述。根据IEEE
802.3 的规定,有线网络使用的数据传输策略是CSMA/CD(carrier sensation
multiple...
Web - DNS Poisoning
记录一下这学期最难的一次网络安全实验,恰逢期末,之后回来填坑
[1] 虚拟机 virtualbox 配置
如何便捷地
copy 虚拟机(直到写这篇 wp 才想起来可以 STFW,我最开始用的
vdi...还需要用
VBoxManage internalcommands sethduuid /path/to/your.vdi
重新解绑uuid)
由于此次打开的虚拟机较多,所以每个虚拟机内存只分配2GB即可
之后,把双向粘贴板和双向拖放打开,再把“显示 ->
屏幕”中扩展特性的“启用3D加速”打开(要不然会花屏)
之后再在“网络 ->
网卡1”栏目中,将连接方式改为“内部网络”,然后名称改为intnet0/1/2(这里根据自己需求来写,比如我配的权威DNS就是intnet1)
最后进入虚拟机中,在上方栏目的“设备”中点击安装增强功能,它会自动打开一个文件夹,在终端里运行autorun.sh即可自动安装,之后重启虚拟机就可以启用双向粘贴板和拖放了
[2] 虚拟机网络配置
IP...
comp - CTF_blockchain_summary
CTF 中的 blockchain 题目和常用工具的用法都放在这里面
[FF] 常用工具
[FF-1] forge
[FF-1-1] 动态调试
在安装好forge之后,使用forge init将项目环境初始化成 Foundry
的标准格式
12345project/├── src/ # Solidity 源代码文件├── test/ # 测试文件├── lib/ # 外部依赖(如 OpenZeppelin)└── foundry.toml # 项目配置文件
在 project/test 中创建文件 xxx.t.sol,在该文件中放入测试用例。
1234567891011121314151617181920// SPDX-License-Identifier: UNLICENSEDpragma solidity ^0.8.26;import {Test, console} from "forge-std/Test.sol";import...