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 |