늘모자란, 개발 :: [webhacking.kr] Challenge 24

늘모자란, 개발



뭐 한것도 없는데 아이피가 틀렸다고 나온다.
이대론 뭘 해야할지 감도 안온다. 주석을 보니 index.phps를 보라고 되어 있다. 한번 보자

<?

extract($_SERVER);
extract($_COOKIE);

if(!$REMOTE_ADDR) $REMOTE_ADDR=$_SERVER[REMOTE_ADDR];

$ip=$REMOTE_ADDR;
$agent=$HTTP_USER_AGENT;


if($_COOKIE[REMOTE_ADDR])
{
$ip=str_replace("12","",$ip);
$ip=str_replace("7.","",$ip);
$ip=str_replace("0.","",$ip);
}

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();
}

else
{
echo("<p><hr><center>Wrong IP!</center><hr>");
}
?>



한줄씩 읽어보면
extract는 배열을 변수화 시켜주는것으로 SERVER와 COOKIE 값을 변수로 쓰겠다는거고, REMOTE_ADDR이 설정안되있으면 서버의 값에서 넣겠다는 말이다.

아이피를 로컬호스트 처럼 127.0.0.1 로 만들어야되는데 아파치가 받는 $_SERVER 변수를 속일 순 없다.
결국 $_COOKIE 구문의 필터링을 패스해야 solve되는데, cookie에서 필터링을 하고 있다.
REMOTE_ADDR이라는 쿠키를 만들어서 127.0.0.1 을 넣어보자 될린 없겠지만 결과나 보자.

생각보다 결과가 더 비참하다. 어떻게 해야 패스할 수 있을까?

127.0.0.1 을 입력하면 일단 12가 사라져서 7.0.0.1이 된다 그리고 7.이 사라져서 0.0.1이 되고 마지막으로 0.이 사라져서 1이 남는다
그렇다면 112277..00..00..1 이런식으로 입력하면 된다. 필터링은 딱 한번만 패스하기 되기때문이다.

쿠키에 값을 적어주고 패스하자. 사실 쉬운것처럼 적어놨지만 머리가 빡대가리라 한참고민했다... ㅡㅡ
2016/03/31 15:17 2016/03/31 15:17