24번입니다.

https://webhacking.kr/

 

Webhacking.kr

Index Welcome Stranger! Notice(en) [2019-08-18] In the process of receiving service, some loss of data has been observed. For example, in very few accounts there may be a truncation of the last one letter of an userid. If userid contains multibyte characte

webhacking.kr


ip는 가렸습니다( 혹시모르니까요 ㅎ)

client ip와 agent가 보이네요.

소스 코드가 어떻게 생겼는지 봅시다.

 

이렇게 생겼네요.

<?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>";
  }
?>

이 부분을 보면 되는데, 여기서 주목해야 할 점은 extract입니다.

extract를 변수화를 시켜주는 함수입니다.

$_SERVER와 $_COOKIE는 각각 배열 형식으로 많은 데이터를 가지고 있습니다.

예를 들어 $_SERVER['REMOTE_ADDR'] $_COOKIE['변수'] 이런 형식이죠.

extract를 통해서 바꿔주게 되면 이제 $REMOTE_ADDR 로 $_SERVER['REMOTE_ADDR']과 동일하게 사용할 수 있습니다.

 

그리고 다르게 알아야 할 함수는 str_replace인데 이것은 str_replace(A,B,C); 이런 식으로 사용합니다.

의미는 C에서 A 가 있을 때 B로 대체한다 입니다.

 

이제 여기서 취약점을 말해보면 extract 순서가 취약점입니다.

extract($_SERVER);

extract($_COOKIE);

이런 순서로 실행을 해주었기 때문에 우리는 COOKIE에 $_SERVER의 변수 이름을 사용하게 되면 값을 조작할 수 있습니다.

 

 

이런 이름의 쿠키를 만들게 되면

이렇게 바뀌게 됩니다.

 

이제 저 쿠키값을 잘 바꿔서 127.0.0.1로 만들어주면 문제가 해결됩니다.

127.0.0.1을 넣어줬더니 1만 남게됩니다. str_replace 때문이죠.

 

일단 실험을 해봤습니다.

112277.0.0.1

이렇게 넣어주면 1(12)27(7.)(0.)(0.)1 이렇게 사라져서 1271이 되게 됩니다.

127은 만들었으니 이제 .0.0.1만 하면 됩니다.

 

112277...0.0.1

이렇게 넣어주면 1(12)27(7.)(..)(0.)(0.)1이기 때문에 127.1이 됩니다. (..)->(.)

 

따라서 112277...00...00...1이렇게 입력해주게 되면 문제를 풀 수 있습니다.

이렇게 말이죠.

 

'Hacking-기초 > [WEB] Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 6번 [100]  (0) 2020.04.29
Webhacking.kr 26번 [100]  (0) 2020.04.29
Webhacking.kr 17번 [100]  (0) 2020.04.28
Webhacking.kr 16번 [100]  (0) 2020.04.28
Webhacking.kr 14번 [100]  (0) 2020.04.28

+ Recent posts