티스토리 뷰
24번 문제를 클릭하면 내 컴퓨터의 ip, 사용환경과 함께 Wrong IP!라는 문장이 출력된다.
Ctrl+u를 누르면 아래 주석부분에 source : index.phps라는 힌트가 쓰여있다.
저 주소로 이동하면된다.
index.phps로 이동하면 이와 같이 php코드가 나온다.
extract()는 배열속의 키 값을 변수화 시켜주는 함수이다.
ex) |
$server["server1"] = "sv1"; $server["server2"] = "sv2"; $server["server3"] = "sv3";
extract($server);
----------------------결과--------------------- $server1 라는 변수 생성 -> 값 : "sv1" $server2 라는 변수 생성 -> 값 : "sv2" $server3 라는 변수 생성 -> 값 : "sv3" |
$_SERVER[REMOTE_ADDR]에는 사이트에 접속한 사용자의 IP 즉, 내 컴퓨터의 IP주소가 저장되어 있고, 위 사진을 보면 REMOTE_ADDR이라는 쿠키는 존재하지 않으므로 $ip라는 변수에는 내 ip가 저장된다.
참고로 $_SERVER[HTTP_USER_AGENT]에는 사이트에 접속한 사용자의 환경이 저장되어 있다.
내 ip는 127.0.0.1이 아니기 때문에 Wrong IP!라는 메시지가 출력되었던 것이다. 문제를 풀려면 $ip 변수에 "127.0.0.1"이라는 값이 저장되도록 해야한다.
소스코드에서 extract($_COOKIE)는 extract($_SERVER) 다음에 호출되기 때문에
$_COOKIE[REMOTE_ADDR]이라는 쿠키가 존재하고 그 값이 "127.0.0.1"이라면, 최종적으로 $ip라는 변수에는 "127.0.0.1"이라는 값이 저장될 것이다.
그 전에 REMOTE_ADDR이라는 쿠키가 존재할때 호출되는 분기문을 확인하여야 한다.
str_replace()는 변수에 저장된 값을 검사해 치환하는 함수이다.
단, 그 후에 저장된 값(치환된 결과값)에 대해서는 다시 검사를 하지 않고 종료한다.
따라서 112277..00..00..1을 "REMOTE_ADDR" 쿠키의 값으로 넣어주면된다.
새로고침하면 문제가 풀린다.
'hacking > webhacking.kr' 카테고리의 다른 글
<webhacking.kr> - 38번 (0) | 2018.01.31 |
---|---|
<webhacking.kr> - 26번 (0) | 2018.01.26 |
<webhacking.kr> - 4번 (0) | 2018.01.24 |
<webhacking.kr> - 6번 (0) | 2018.01.23 |
<webhacking.kr> - 12번 (0) | 2018.01.21 |