전체 글31 Ethernaut - 1단계 (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. 11. 5. Ethernaut - 0단계 (Hello Ethernaut) 이더넛 워게임 0단계부터 블록체인 문제들을 풀 때 어떤 방식으로 풀어야 하는지 사용법을 익히게 도와주었다. 이더넛 워게임을 시작할 때 해당 문제를 풀 때는 보통 개발자 도구에 존재하는 콘솔을 통해 진행한다. 위는 새로운 인스턴스를 받으면 생기는 UI이며, 다음과 같은 명령어를 이용하며 여러 명령어들을 볼 수 있다. help() 그리고 이제 문제 설명을 보며 사용법을 익혀보도록 하겠다. 해당 문제에서 이 레벨의 info 메소드를 사용하려면 콘솔창에 contract.info() 또는 await contract.info() 명령어를 치면 알 수 있다는 설명이 나와있었다. 해당 명령어를 이용하니 "You will find what you need in info1()." 라는 문자가 나와서 다음 명령어를 검색하였.. 2023. 11. 5. Client Side Template Injection(CSTI) 취약점 (Web Hacking Study) 보호되어 있는 글 입니다. 2023. 9. 23. callme - Pwnable BDSec CTF 포너블 문제이다. 딱 봐도 0으로 초기화 된 v9 함수 주소를 bof로 덮어서 원하는 함수의 주소로 흐름을 옮기는 문제인거 같다. IDA 바이너리를 열어보니 callme 라는 함수가 있었고 해당 함수를 보니 플래그를 출력해주는 함수였다. 그러면 v9 함수 주소에 callme 함수 주소를 overwrite 하여 callme로 실행 흐름을 옮기면 플래그가 출력되는 문제인거 같다. 아래는 해당 공격 시나리오를 반영한 최종 익스플로잇 코드이다. from pwn import * #p = process("./callme") p = remote("139.144.184.150", 3333) e = ELF("./callme") callme = 0x0804875e payload = b'A'*0x40 pa.. 2023. 7. 21. 이전 1 2 3 4 5 6 7 8 다음