목록2026/02/03 (2)
Tyojong
query : {$query}"; $_GET[pw] = addslashes($_GET[pw]); $query = "select pw from prob_iron_golem where id='admin' and pw='{$_GET[pw]}'"; $result = @mysqli_fetch_array(mysqli_query($db,$query)); if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("iron_golem"); highlight_file(__FILE__);?> 문제 목표if(preg_match('/sleep|benchmark/i', $_GET[pw])) exit("HeHe");sleep과 benchmark가 필터링되므로 time ..
문제 설명코드 분석초기 owner, prize, king을 설정한다. 컨트랙트가 이더를 받으면 받은 이더가 prize보다 크거나 같은지 비교하고기존 king의 주소로 받은 이더를 보낸다.이후 king은 이더를 보낸 대상으로 설정되고prize도 보낸 이더 크기만큼 다시 설정된다. 익스플로잇문제 설명을 보면 인스턴스 제출 시 왕을 다시 얻는 시도를 한다고 작성되어있다.문제 코드를 보면 새로운 왕이 설정되면 이더를 이전 왕에게 전송한다. 1. 만약 공격 컨트랙트를 이용해 문제 컨트랙트를 이더와 함께 호출하면2. msg.sender로 인해 왕은 공격 컨트랙트로 설정되고3. 다른 사용자가 새로운 왕으로 선정될 때 이더를 공격 컨트랙트로 전송하게 된다.4. 이때 공격 컨트랙트가 이더를 받지 않도록 설정되면 reve..
