- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- web3
- security
- PWN
- 반딧
- V2
- wargame
- 해시
- Crypto
- lending
- 코인
- shellcode
- 이더리움
- Ethereum
- Linux
- 리눅스
- bitcoin
- compound
- defi
- 비트코인
- hacking
- 해킹
- solidity
- pwnable
- DreamHack
- Leak
- overthewire
- 블록체인
- BANDiT
- blockchain
- pow
목록solidity (4)
Nullorm
지금까지 몇개월정도 Web3 offensive 보안 공부를 하면서 취약한 컨트랙트를 보면 일단 call()함수가 사용되었나를 보고, 사용되었으면 reentrancy attack이 가능하겠다~ 정도를 생각해왔다.그리고, call{value: }() 함수 사용으로 인한 reentrancy attack의 countermeasure로 사용되는 함수가 send(), transfer() 인 것으로 생각하고 있었다.그런데 몇몇 자료들을 찾아다니다보니, 꼭 그런것도 아니겠구나 싶었다. 오히려 send(), trnasfer() 함수가 reentrancy attack을 유발할 수 있겠구나 싶었다.이 내용을 한번 자세히 정리해보고자 한다. 지난번 포스팅에서 송금 관련 함수들 (send, transfer, call)에 대해 ..
web3 생태계에서 다른 컨트랙트의 함수를 호출하는 과정에서 우리는 어떨 때는 직접 호출을 하는 경우도 있고, 저수준 호출을 하는 경우도 있다. A라는 컨트랙트에 있는 "func1(uint _number)" 함수를 호출한다고 가정해보자.그러면 우리는, 두 가지 호출 방식이 있을 것이다. 1. A.func1(123) - 직접호출 방식2. A.call{}(abi.encodeWithSignature("func1(uint)")) - 저수준 호출 방식 이 두 경우의 차이점, 그리고 호출 실패 시 어떻게 핸들링하는지를 알아보고자 한다.1. 직접호출 방식직접 호출 방식은 가장 기본적인 방법으로, 호출하려는 함수의 이름과 인수를 사용하여 함수를 호출한다. 이 방식은 Solidity 컴파일러에 의해 함수의 존재와 시그..
오늘은 web3에서 Solidity를 사용하는 사람이라면 한 번쯤은 짚고넘어가야할 필요가 있는 payable 키워드를 들고와보았다. 처음 solidity를 공부할 때 부터 대체 저 키워드가 무엇인지부터 시작해서 transfer, call, send로 대체 왜 나뉘는지, 대체 어떻게 쓰는건지도 어려웠던 것 같은 기억이 있는데, 나처럼 삽질하지 말고 이거 하나 보고 그냥 가볍게 넘어가보도록 하자. ^__^ 1. payable 키워드 다른 프로그래밍 언어와 달리, solidity는 가상화폐(코인)을 동력으로 하는 언어이다. 그렇다 보니, 다른 언어에서는 쓰이지 않는 송금 관련 함수 또는 키워드들이 존재하곤 한다. 즉, 가상화폐(코인)로 접근하기 위한 키워드가 사용된다는 것이다. 이더리움(ethereum) 생태..
Solidity를 하다보면, onlyOwner라는 이름의 modifier가 많이 쓰인다. 그냥 항상 송금/출금 등의 함수에서 당연히 붙이는거니까~ 하면서 쓰고있었는데, 정확한 문법에 대한 이해가 필요할 듯 해 정리해보려고 한다. modifier onlyOwner() { require(msg.sender == owner, "caller is not the owner"); _; } function withdraw() public onlyOwner { payable(owner).transfer(address(this).balance); } 줄마다 보면서 해석해봐야할 것 같다. 1. modifier 함수변경자의 의미 modifier는 "함수변경자, 제어자" 라는 이름으로도 불린다. 즉, 함수의 기능에 있어 특정..