24번 - COOKIE/PHP extract

2020. 10. 15. 14:22

※ 문제될 시에 비공개 처리하도록 하겠습니다. 

 

 

 

위에 문구가 하나 더 뜨긴하는데, IP 주소와 개인정보가 있으니 공개하지는 않겠습니다.

 

 

소스코드를 보니 str_replace를 통해 치환된 값이 127.0.0.1이면 풀리네요.

 

$ip 값입니다.

하지만, extract 함수를 통해 딕셔너리 값의 키를 변수처럼 사용하는 것을 볼 수 있습니다.

바로 저기서 취약점이 터집니다.

 

$_SERVER 딕셔너리를 먼저 extract 한 뒤 $_COOKIE 딕셔너리를 extract 합니다.

이 경우에 $_SERVER의 어느 한 키의 이름이 $_COOKIE의 어느 한 키의 이름과 동일하다면, 그 이름을 가진 변수는 $_COOKIE의 value(값)을 가지게 됩니다.

따라서, 원래대로라면 조작할 수 없는 REMOTE_ADDR을 조작할 수 있게 되는 것이죠.

 

이로써, COOKIE에 REMOTE_ADDR이라는 이름으로 값을 저장하면 $ip 변수에 저장된다는 것을 알게되었습니다.

이제 이 값을 어떻게 127.0.0.1로 만들지 고민해보죠.

 

이런 문제는 거꾸로 올라가면 됩니다.

일단 거꾸로 작성해보겠습니다.

                                      => 127.0.0.1
$ip = str_replace("0.","",$ip);  => 127.00..00..1

$ip = str_replace("7.","",$ip);  => 1277..00..00..1

$ip = str_replace("12","",$ip); => 112277..00..00..1

$ip = str_replace("..",".",$ip);   => 112277....00....00....1
                                       => 112277....00....00....1

 

이제 이 값을 COOKIE에 'REMOTE_ADDR'의 이름으로 집어넣으면 됩니다.

 

'[▒] 보안 > webhacking.kr' 카테고리의 다른 글

26번 - URL DECODE  (0) 2020.10.16
25번 - PHP Wrapper  (0) 2020.10.16
23번 - POSIX Regex/PCRE Regex  (0) 2020.10.15
22번 - blind sql injection  (0) 2020.10.15
21번 - blind sql injection  (0) 2020.10.15

BELATED ARTICLES

more