[webhacking.kr] old-24

asdf·2026년 3월 30일

web

목록 보기
13/32
post-thumbnail


접속하면 사진과 같이 client ip와 agent가 나오고, 아래에는 Wrong IP!라는 문구가 나옵니다.

view source 링크가 있으므로 코드를 확인해 보겠습니다.

<?php
  extract($_SERVER);
  extract($_COOKIE);
  $ip = $REMOTE_ADDR;
  $agent = $HTTP_USER_AGENT;
  if($REMOTE_ADDR){
    $ip = htmlspecialchars($REMOTE_ADDR);
    $ip = str_replace("..",".",$ip);
    $ip = str_replace("12","",$ip);
    $ip = str_replace("7.","",$ip);
    $ip = str_replace("0.","",$ip);
  }
  if($HTTP_USER_AGENT){
    $agent=htmlspecialchars($HTTP_USER_AGENT);
  }
  echo "<table border=1><tr><td>client ip</td><td>{$ip}</td></tr><tr><td>agent</td><td>{$agent}</td></tr></table>";
  if($ip=="127.0.0.1"){
    solve(24);
    exit();
  }
  else{
    echo "<hr><center>Wrong IP!</center>";
  }
?>

cookie와 server에서 extract 함수를 통해 변수를 생성합니다.
서버에서 REMOTE_ADDRHTTP_USER_AGENT 값을 받아옵니다. 여기서 extract($_COOKIE) 가 뒤에 위치하므로 이름이 REMOTE_ADDR이나 HTTP_USER_AGENT 라는 쿠키를 만들면 값을 변경할 수 있습니다.
사진처럼 쿠키를 통해 값을 변경할 수 있습니다.

문제에서 ip가 127.0.0.1이면 solve를 실행하므로 REMOTE_ADDR 쿠키를 통해 값을 변경하여 해결할 수 있습니다.

하지만 if($REMOTE_ADDR)에서 필터링이 있기 때문에 이를 우회하여 값을 넣어야 합니다.
조건은 ...으로 바꾸고, 12, 7., 0.은 없애버립니다.

우회하는 값은 112277...00...00...1 등이 있습니다.

profile
Rainy Waltz(a_hisa)

0개의 댓글