분류 전체보기
-
보호되어 있는 글입니다.
[Web] XSS-1보호되어 있는 글입니다.
2023.01.30 -
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract Telephone { address public owner; constructor() { owner = msg.sender; } function changeOwner(address _owner) public { if (tx.origin != msg.sender) { owner = _owner; } } } 우리의 mission은 해당 contract의 owner를 탈취하는 것이다. 코드를 보면 owner는 msg.sender로 해당 contract를 호출한 주소이다. changeOwner() 함수를 보면 tx.origin != msg.sender가 같지 않으면 owner가 우리가 입력한 _o..
[Ethernaut] Telephone// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract Telephone { address public owner; constructor() { owner = msg.sender; } function changeOwner(address _owner) public { if (tx.origin != msg.sender) { owner = _owner; } } } 우리의 mission은 해당 contract의 owner를 탈취하는 것이다. 코드를 보면 owner는 msg.sender로 해당 contract를 호출한 주소이다. changeOwner() 함수를 보면 tx.origin != msg.sender가 같지 않으면 owner가 우리가 입력한 _o..
2023.01.30 -
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract CoinFlip { uint256 public consecutiveWins; uint256 lastHash; uint256 FACTOR = 57896044618658097711785492504343953926634992332820282019728792003956564819968; constructor() { consecutiveWins = 0; } function flip(bool _guess) public returns (bool) { uint256 blockValue = uint256(blockhash(block.number - 1)); if (lastHash == blockValue)..
[Ethernaut] CoinFlip// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract CoinFlip { uint256 public consecutiveWins; uint256 lastHash; uint256 FACTOR = 57896044618658097711785492504343953926634992332820282019728792003956564819968; constructor() { consecutiveWins = 0; } function flip(bool _guess) public returns (bool) { uint256 blockValue = uint256(blockhash(block.number - 1)); if (lastHash == blockValue)..
2023.01.30 -
// SPDX-License-Identifier: MIT pragma solidity ^0.6.0; import 'openzeppelin-contracts-06/math/SafeMath.sol'; contract Fallout { using SafeMath for uint256; mapping (address => uint) allocations; address payable public owner; /* constructor */ function Fal1out() public payable { owner = msg.sender; allocations[owner] = msg.value; } modifier onlyOwner { require( msg.sender == owner, "caller is no..
[Ethernaut] Fallout// SPDX-License-Identifier: MIT pragma solidity ^0.6.0; import 'openzeppelin-contracts-06/math/SafeMath.sol'; contract Fallout { using SafeMath for uint256; mapping (address => uint) allocations; address payable public owner; /* constructor */ function Fal1out() public payable { owner = msg.sender; allocations[owner] = msg.value; } modifier onlyOwner { require( msg.sender == owner, "caller is no..
2023.01.29 -
// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract Fallback { mapping(address => uint) public contributions; address public owner; constructor() { owner = msg.sender; contributions[msg.sender] = 1000 * (1 ether); } modifier onlyOwner { require( msg.sender == owner, "caller is not the owner" ); _; } function contribute() public payable { require(msg.value < 0.001 ether); contributio..
[Ethernaut] Fallback// SPDX-License-Identifier: MIT pragma solidity ^0.8.0; contract Fallback { mapping(address => uint) public contributions; address public owner; constructor() { owner = msg.sender; contributions[msg.sender] = 1000 * (1 ether); } modifier onlyOwner { require( msg.sender == owner, "caller is not the owner" ); _; } function contribute() public payable { require(msg.value < 0.001 ether); contributio..
2023.01.29 -
Ethernaut는 blockchain 해킹의 wargame이다. 기본적인 Language는 Solidity를 사용하고 있으며 ethereum에 기반하여 진행하고 있다. blockchain 해킹은 code auditing도 해야 하지만 코드의 흐름이랑 VM과의 상호작용도 잘해야 한다고 생각한다. 처음부터 차근차근 진행해 보자!! MetaMask는 Ethereum과 blockchain사이 상호작용을 하는 데 사용되는 소프트웨어 암호 화폐 지갑이다. Goerili를 testnet으로 설정을 했다면 Get new instance를 통하여 instance를 만들어야 한다. 하지만 초기에 개발한 지갑에는 ether가 0으로 되어있을 것이다. https://goerlifaucet.com/ 위 주소를 클릭하고 나오는..
[Ethernaut] Hello EthernautEthernaut는 blockchain 해킹의 wargame이다. 기본적인 Language는 Solidity를 사용하고 있으며 ethereum에 기반하여 진행하고 있다. blockchain 해킹은 code auditing도 해야 하지만 코드의 흐름이랑 VM과의 상호작용도 잘해야 한다고 생각한다. 처음부터 차근차근 진행해 보자!! MetaMask는 Ethereum과 blockchain사이 상호작용을 하는 데 사용되는 소프트웨어 암호 화폐 지갑이다. Goerili를 testnet으로 설정을 했다면 Get new instance를 통하여 instance를 만들어야 한다. 하지만 초기에 개발한 지갑에는 ether가 0으로 되어있을 것이다. https://goerlifaucet.com/ 위 주소를 클릭하고 나오는..
2023.01.28 -
저번에 So easy easy~~~ 하게 Web 기본 지식에 대해 배웠징?? 이번에는 우리 같이 보안정책을 보고 갈까?? 첫 번째!! 하기전에.... Cookie는 browser에서 보관하지?? 그리고 Client가 Web 서비스에 접속할 때, browser는 해당 Web 서비스에서 사용하는 인증 정보를 HTTP에 포함시켜 전달해 그래서 이러한 Web의 특징 때문에 악의적인 페이지가 공격 페이지의 HTTP 요청을 보내고 응답 정보를 획득할 수 있는 취약점이 생겨 SOP(Same Origin Policy) 동일 출처 정책이라고 불리는 SOP를 사용하여 웹의 취약점을 막을 수 있는데 일단 SOP는 브라우저 보안 메커니즘이야 그래서 Origin이 뭔데?? https://www.example.com:43561 ..
SOP와 CSP저번에 So easy easy~~~ 하게 Web 기본 지식에 대해 배웠징?? 이번에는 우리 같이 보안정책을 보고 갈까?? 첫 번째!! 하기전에.... Cookie는 browser에서 보관하지?? 그리고 Client가 Web 서비스에 접속할 때, browser는 해당 Web 서비스에서 사용하는 인증 정보를 HTTP에 포함시켜 전달해 그래서 이러한 Web의 특징 때문에 악의적인 페이지가 공격 페이지의 HTTP 요청을 보내고 응답 정보를 획득할 수 있는 취약점이 생겨 SOP(Same Origin Policy) 동일 출처 정책이라고 불리는 SOP를 사용하여 웹의 취약점을 막을 수 있는데 일단 SOP는 브라우저 보안 메커니즘이야 그래서 Origin이 뭔데?? https://www.example.com:43561 ..
2022.05.20 -
User-agent에서 not admin이라고 나와있다. Web broswer의 Request에 대한 Response는 이렇게 나와있다. 페이지에 나와있듯이 user-agent를 admin으로 바꿔주면 될 것 같다. User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0 -> admin Request를 intercept하고 User-agent를 변경하니까 flag가 나왔다. Savoir, penser, rêver. Tout est là.
[Root-me] Web Server 4. HTML - User-agentUser-agent에서 not admin이라고 나와있다. Web broswer의 Request에 대한 Response는 이렇게 나와있다. 페이지에 나와있듯이 user-agent를 admin으로 바꿔주면 될 것 같다. User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0 -> admin Request를 intercept하고 User-agent를 변경하니까 flag가 나왔다. Savoir, penser, rêver. Tout est là.
2022.04.04