WEBHACKING.KR 24번 문제 풀이
[ FILTERED LOCALHOST ]
오늘은 webhacking.kr의 24번 문제를 풀어보자.
이 페이지의 프론트엔드 코드를 확인해보니
index.phps 파일에 소스가 있다고 한다.
그럼 이제 그 코드를 분석해보자.
extract($_SERVER);
extract($_COOKIE);
$_SERVER와 $_COOKIE를 접두사(배열명) 없이 사용할 수 있게 해준다.
if(!$REMOTE_ADDR) $REMOTE_ADDR=$_SERVER[REMOTE_ADDR];
$REMOTE_ADDR이 존재하지 않으면 현재 접속된 IP를 값으로 지정한다.
$ip=$REMOTE_ADDR;
$agent=$HTTP_USER_AGENT;
$ip값을 $REMOTE_ADDR로 설정해주고, 현재 접속한 클라이언트의 USER-AGENT를 $agent로 설정해준다.
if($_COOKIE[REMOTE_ADDR])
{
$ip=str_replace("12","",$ip);
$ip=str_replace("7.","",$ip);
$ip=str_replace("0.","",$ip);
}
만약 REMOTE_ADDR라는 쿠키가 존재한다면, 12. | 7. | 0. 를 지운 값을 $ip 값으로 지정해준다.
echo("<table border=1><tr><td>client ip</td><td>$ip</td></tr><tr><td>agent</td><td>$agent</td></tr></table>");
결과값인 $ip와 $agent를 표로 띄워준다.
if($ip=="127.0.0.1")
{
@solve();
}
else
{
echo("<p><hr><center>Wrong IP!</center><hr>");
}
$ip값이 127.0.0.1이라면 해결되고, 아니라면 Wrong IP!를 띄운다.
이제 코드를 분석했으니 풀이를 해보자.
위의 코드에서 _SERVER와 $_COOKIE를 접두사(배열명) 없이 사용할 수 있게 해주었기 때문에, 둘이 혼용도 가능하다.
따라서, $_SERVER[REMOTE_ADDR] 과 $_COOKIE[REMOTE_ADDR]을 모두 $REMOTE_ADDR로 처리된다.
우리가 접속한 IP를 바꿀순 없으니 쿠키값으로 오버라이드해보자.
REMOTE_ADDR라는 쿠키값에 127.0.0.1을 넣으면
상단에 정의 되어있는 필터에 의하여 1로 바뀐다.
따라서 저 필터링에 걸리지 않으려면 두번씩 쓰면 된다.
저 필터는 12. | 7. | 0. 를 지운값을 저장하기 때문에 112277..00..00..1 으로 하면 우회할 수 있게된다.
이렇게 등록하고 새로고침 해주면 풀이에 성공한다.
WEBHACKING.KR 24번 문제 클리어!
'보안공부 > Webhacking.kr 풀이' 카테고리의 다른 글
webhacking.kr 26번 문제 풀이 - 두번인코딩 (0) | 2018.07.19 |
---|---|
webhacking.kr 25번 문제 풀이 - NULL TO FLAG (0) | 2018.07.18 |
webhacking.kr 18번 문제 풀이 - SQL주사기 (0) | 2018.07.17 |
webhacking.kr 17번 문제 풀이 - 콘솔계산기 (0) | 2018.07.10 |
webhacking.kr 14번 문제 풀이 - indexOf (0) | 2018.07.09 |