sherlock-Yieldoor 审计报告
Yieldoor整数溢出 (高)代码如下:
uint256 index = (observationCardinality + currentIndex - i) % observationCardinality;
这里的observationCardinality和currentIndex在合约中都是uint16的类型,也就是说2^16-1
0-65535,当他们俩个相加的话就会出现整数溢出,导致依赖计算的函数都会无法进行
溢出就会导致整个合约的核心功能无法使用
杠杆base计算错误 (高)代码如下:
base = owedAmount / vp.maxTimesLeverage;
使用了借款金额,来计算base,可能会导致超过初始抵押品的,导致用户被清算。
计算 base 时 未考虑初始抵押品 initCollateralValue,导致 base 可能超出合理范围。这导致用户在 实际抵押品仍然充足的情况下被提前清算。例子如下:假设:
用户存入 1000 USDT 作为抵押
借入 1000 USDT,总仓位变成 2000 USDT
vp.maxTimesLeverage ...
codeHawks-2024-12-Aldo SssTablecoinsss 审计报告
Aldo SssTablecoinsss 审计报告这次抽空在codeHarw上面,做了一次首飞。是关于defi 的。结果使用p语言写的,导致很多人可能就没有去参加,我也提交了3个,虽然只有一个被判为中等,但是这是我第一次被选择成最终报告
这是我正确的报告
语言机的时间设置的太大(中等)(me)(被选为作为报告)M-01. The TIMEOUT is set as a fixed constant of 72 hours, which makes it inflexible in adapting to the market price.SummaryIn this contract, the TIMEOUT is set as a fixed constant (72 hours, or 259200 seconds). This means that if the oracle price data is not updated within 72 hours, the data will be considered outdated, and the contract will ...
sherlock-2024-11-Oku'sNew Order Types 审计报告
一Summary在执行 _getExchangeRate函数的时候,没有检查,tokenIn和tokenOut是不是同种的代币,导致一些无意义的汇率计算出来
Root Cause2024-11-oku-HeYuan-33/oku-custom-order-types/contracts/automatedTrigger/AutomationMaster.sol
Lines 77 to 86 in ee3f781
function _getExchangeRate( IERC20 tokenIn, IERC20 tokenOut ) internal view returns (uint256 exchangeRate) { // Retrieve USD prices from oracles, scaled to 1e8 uint256 priceIn = oracles[tokenIn].currentValue(); uint256 priceOut = oracles[tokenOut]. ...
CTF-ApproveMain
CTF-ApproveMain题目的源代码:
pragma solidity ^0.8.0;// ERC20contract Cert{ mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; address public admin; struct AddressSlot { address value; } // 预挖给msg.sender 100个代币 constructor () { _mint(msg.sender, 100*10**18); } modifier safeCheek(address spender, uint256 amount) { if (uin ...
CTF-EverythingArt
CTF-EverythingArt题目源代码:
pragma solidity ^0.8.0;// Using @openzeppelin/contracts@3.2.0// pragma solidity ^0.8.0;import "@openzeppelin/contracts/utils/math/SafeMath.sol";import "@openzeppelin/contracts/token/ERC721/ERC721.sol";contract EverytingIsArt is ERC721 { using SafeMath for *; uint256 public totalMinted; bool public hope = true; bool public hope2 = true; // Deploy by CTFer EOA account constructor() public ERC721("All Arts", "AA" ...
关于solidity漏洞的基础知识
关于solidity漏洞的基础知识精度的计算这个错误常常出现于计算过程当中,使用了先除后乘,就会导致精度的计算错误,比如
interest = principal / 3_333 * 10_000;
如果本金小于3_333,那么就会计算的利息为零如果按一下的例子计算
interest = principal * 10_000 / 3_333;
那么就不会出现这种的错误,因为使先扩大的精度,再除的话,就能避免精度的损失个人也是通过近几次的审计报告发现,大家都是很注意计算的地方
函数变量不用同一个变量声明这是我再审计报告中,第一次了解到这个问题,但是学过Java的都知道,成员变量和方法的变量冲突的话就会使用this来区分,而我们solidity没有这种说法,所以只能用不同的命名来表示,比如
address owner;function change owner(address owner) internal{ require(owner == msg.sender,"NOT CHANGE"); owner = owner;}
在这个函数 ...
codeHawks-2024-11-twentyone 审计报告
twentyone 审计报告我自己这次犯了一个重大错误。就是没有真正的理解题目意思。导致全是找的破环游戏规则(可以任意查看手牌的错误。其实是游戏这么设定是合理的)然后这次就不放我的报告的了。因为都是public惹得祸。让我以为这次的首飞就是只有权限的问题,那就看看正确的漏洞出处
计算玩家和庄家的手牌不一致 (高)其实这个问题应该是最简单的。因为从下面代码就能显而易见
//playerHand if (cardValue == 0 || cardValue >= 10) { playerTotal += 10; } else { playerTotal += cardValue; }//dealerHand if (cardValue >= 10) { dealerTotal += 10; } else { ...
CTF-Storage
CTF-Storeage题目代码又俩个:
pragma solidity ^0.8.0;import "./StorageSlot.sol";contract Storage1 { uint256 public constant VERSION = 1; address public aaaaa; address public admin; bytes32 public constant OPERATOR_ROLE = keccak256("OPERATOR_ROLE"); mapping(address => uint256) public gasDeposits; event SendFlag(); event SetLogicContract(bytes32 key, address oldAddress, address newAddress); event DepositedGas(address account, uint256 amount); event Wit ...
CTF-LostAssert
CTF-LostAssert这道题我感觉属于签到题了。就是分清包装代币,s代币,原生代币的关系
题目源码:
//SPDX-License-Identifier:MITpragma solidity ^0.8.26;import "@openzeppelin/contracts/token/ERC20/ERC20.sol";import "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";import {IERC20Permit, ERC20Permit} from "@openzeppelin/contracts/token/ERC20/extensions/draft-ERC20Permit.sol";// 普通的ERC20代币contract MockWETH is ERC20("Wrapped ETH", "WETH") { event Deposit(address indexed ...
Java课程设计_数据库代码
title: Java课程设计代码date: 2024-12-02 03:03:51tags: java数据库设计代码//创建数据库create database Student;use student;//创建学生信息表create table student( stuid1 char(20) unique comment '学号', name char(20) comment '姓名', telenumber int comment '电话号码', qqmail char(20) comment '邮箱', classnumber char (20) comment '班级')comment'学生信息表';//插入学生信息insert into student (stuid1,name,telenumber,qqmail,classnumber ) values ('2023131051' ,' ...