[TIL] webhacking 24

Captainjack·2022년 10월 26일
0

TIL

목록 보기
238/258

<?php
  include "../../config.php";
  if($_GET['view_source']) view_source();
?><html>
<head>
<title>Challenge 24</title>
</head>
<body>
<p>
<?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>";
  }
?><hr>
<a href=?view_source=1>view-source</a>
</body>
</html>

php extract 함수

extract 함수에 $_GET, $_POST를 인자로 넣으면 
GET으로 넘기는 파라미터와 값을 변수와 그 초기값으로 설정할 수 있다.

서버와, 쿠키에 값이 extract로 넘어온다.

REMOTE_ADDR = ip
HTTP_USER_AGENT = agent로 값 저장된다.

절차에따라 쿠키 값을 저장하고 넘겨 줌.

출력 값은 1.

문자 replace 문에 의해서 문자열 축소 되는 걸 확인

  $ip = str_replace("..",".",$ip);
  $ip = str_replace("12","",$ip);
  $ip = str_replace("7.","",$ip);
  $ip = str_replace("0.","",$ip);
  
  127.0.0.1 => 1
  조건 1 - 127..0..0..1 
  조건 2 - 11227..0..0..1
  조건 3 - 112277...0..0..1
  조건 4 - 112277...00...00...1
profile
til' CTF WIN

0개의 댓글