본문 바로가기

IT/웹 해킹(Web Hacking)

webhacking.kr [문제 24번]



24번 문제를 풀어보겠다.






해당 문제의 배점은 100point이며, 다소 쉬운 문제로 예상된다.


군말없이 클릭해보자.





현재 접속 클라이언트의 IP주소가 보여지며,


Wrong IP!라는


메세지를 보여준다.




무언가 적절한 아이피 주소로 변경한다면, 해당 문제를 풀 수 있을 것 같다.



소스코드 또한 확인해보자.








소스코드에 눈에 띄는 부분이 있다.



index.phps



를 제공하고 있다.



의심의 여지없이 확인해보자.





다음과 같은 소스코드를 보여주며,


해당 소스코드를 분석하여,


공격방법을 생각해보자.




코드 분석)


<html>

<head>

<title>Challenge 24</title>

</head>

<body>

<?


// 링크_extract() 함수에 대한 정보

extract($_SERVER);  // $_SERVER 배열 속 키값을 추출하여 변수화한다.

extract($_COOKIE);  // $_COOKIE 배열 속 키값을 추출하여 변수화한다.


if(!$REMOTE_ADDR) $REMOTE_ADDR=$_SERVER[REMOTE_ADDR];  // $REMOTE_ADDR이란 변수가 존재하지 않으면, 해당 변수를 할당한다.


$ip=$REMOTE_ADDR;  // $ip변수에 $REMOTE_ADDR값 대입한다.

$agent=$HTTP_USER_AGENT;  // $agent변수에 $HTTP_USER_AGENT값 대입한다.


if($_COOKIE[REMOTE_ADDR])  // $_COOKIE[REMOTE_ADDR]이 존재할 경우

{

$ip=str_replace("12","",$ip);  // $ip 변수에 '12'가 있으면 공백으로 대체한다.

$ip=str_replace("7.","",$ip);  // $ip 변수에 '7.'이가 있으면 공백으로 대체한다.

$ip=str_replace("0.","",$ip);  // $ip 변수에 '0.'이가 있으면 공백으로 대체한다.

}


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")  // $ip == "127.0.0.1"이면

{

@solve();  // 문제 해결 완료

}


else

{

echo("<p><hr><center>Wrong IP!</center><hr>");

}

?>




<!--


source : index.phps


-->


</body>

</html>




분석에 주석을 구체적으로 달아놓았으니 참고하자.




여기서 눈여겨 봐야할 부분이 '12'와 '7.' '0.'을 공백으로 대체한다는 것이다.



만약


112277..00..00..1


해당 문자열을 대입했을 경우,


주황색부분의 글자가 공백으로 대체되어


결과적으로 남는 것은


127.0.0.1


해당 아이피 주소가 된다.




이제 해당 변조한 문자열을


어떻게 전달하냐가 문제인데,



extract함수에서 쿠키배열에 담긴 REMOTE_ADDR이란 변수에 담아내면 되는 것이다.



EditThisCookie를 이용하여, 해당 데이터를 입력해보자.








다음과 같은 정보의 쿠키를 생성해주었다.



그후 새로고침을 하면










문제 해결 완료.









'IT > 웹 해킹(Web Hacking)' 카테고리의 다른 글

webhacking.kr [문제 26번]  (0) 2018.03.31
webhacking.kr [문제 25번]  (0) 2018.03.31
webhacking.kr [문제 23번]  (0) 2018.03.31
webhacking.kr [문제 22번]  (0) 2018.03.30
webhacking.kr [문제 21번]  (6) 2018.03.25