본문 바로가기

Write Up21

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.
bof - pwnable.kr pwnable.kr의 bof 문제이다. bof 문제는 전의 문제들과는 다르게 바이너리와 소스코드를 주는 형태였다(이게 정상이지 ㅎㅎ). 그렇다면 문제 코드를 살펴보도록 하겠다. #include #include #include void func(int key){ char overflowme[32]; printf("overflow me : "); gets(overflowme);// smash me! if(key == 0xcafebabe){ system("/bin/sh"); } else{ printf("Nah..\n"); } } int main(int argc, char* argv[]){ func(0xdeadbeef); return 0; } 문제 제목도 그렇고 형태도 그렇고 bof를 일으켜서 key 값을 변조.. 2023. 7. 3.
collision - pwnable.kr 위는 pwnable.kr의 collision 문제이다. 이번에도 바이너리를 안 주고 ssh에 접속해서 문제를 보라고 하는거 같다. ssh에 접속해서 문제 파일을 읽어보겠다. #include #include unsigned long hashcode = 0x21DD09EC; unsigned long check_password(const char* p){ int* ip = (int*)p; int i; int res=0; for(i=0; i 2023. 7. 3.