Week 13: 블록체인 보안 실습 가이드

대전대학교 대학원 | 교수: 연삼흠 | 학생용
보안 시뮬레이터 바로가기

실습 진행률

0 / 15 완료

Part 1: 취약 코드 분석

아래 코드들을 분석하고 각 취약점을 식별하세요.

실습 1-1: Reentrancy 취약점 분석

// 분석 대상 코드 contract VulnerableBank { mapping(address => uint256) public balances; function deposit() public payable { balances[msg.sender] += msg.value; } function withdraw(uint256 _amount) public { require(balances[msg.sender] >= _amount, "Insufficient balance"); (bool sent, ) = msg.sender.call{value: _amount}(""); require(sent, "Failed to send"); balances[msg.sender] -= _amount; } function getBalance() public view returns (uint256) { return address(this).balance; } }

실습 1-2: Integer Overflow 분석

// 분석 대상 코드 (Solidity ^0.7.0) pragma solidity ^0.7.0; contract VulnerableToken { mapping(address => uint256) public balanceOf; uint256 public totalSupply; function transfer(address _to, uint256 _value) public { require(balanceOf[msg.sender] - _value >= 0); // 항상 true! balanceOf[msg.sender] -= _value; balanceOf[_to] += _value; } function batchTransfer(address[] memory _receivers, uint256 _value) public { uint256 amount = _receivers.length * _value; // 오버플로우 가능 require(balanceOf[msg.sender] >= amount); balanceOf[msg.sender] -= amount; for (uint i = 0; i < _receivers.length; i++) { balanceOf[_receivers[i]] += _value; } } }

Part 2: 보안 감사 체크리스트 (WIA-SEC-006)

아래 체크리스트를 활용하여 제공된 스마트 계약에 대한 보안 감사를 수행하세요.

A. 접근 제어 (Access Control)

B. 재진입 방지

C. 산술 연산 안전성

감사 항목상태심각도비고
재진입 방지_____Critical
접근 제어_____High
정수 오버플로우_____High
Front-running_____Medium
DoS 취약점_____Medium
타임스탬프 의존성_____Low

Part 3: CTF 챌린지

시뮬레이터에서 챌린지 시작
실제 메인넷에서 공격을 시도하지 마세요. 모든 실습은 시뮬레이터 또는 테스트넷에서만 진행합니다.

Challenge 1: EtherVault 초급

재진입 공격으로 Vault의 모든 ETH를 탈취하세요.

목표: 공격자 계약으로 Vault 잔액을 0으로 만들기

플래그 형식: FLAG{reentrancy_*****}

Challenge 2: TokenSale 초급

토큰 가격을 조작하여 무한 토큰을 획득하세요.

목표: 접근 제어 취약점을 이용해 토큰 가격을 0으로 변경

플래그 형식: FLAG{access_control_*****}

Challenge 3: OverflowVault 중급

정수 오버플로우를 이용해 토큰 잔액을 조작하세요.

플래그 형식: FLAG{overflow_*****}

Challenge 4-5: DeFi Protocol 중급 고급

복합 취약점을 찾아 프로토콜의 자금을 탈취하세요.

플래그 형식: FLAG{defi_*****}

제출물 안내

항목형식마감
취약점 분석 보고서PDF다음 주 수업 전
공격 코드 (Solidity).sol 파일다음 주 수업 전
수정된 안전한 코드.sol 파일다음 주 수업 전
CTF 플래그 스크린샷PNG/JPG다음 주 수업 전