그러냐

PHP "==" 연산자 취약점 본문

php 시큐어코딩

PHP "==" 연산자 취약점

관절분리 2017. 1. 26. 11:26
반응형

문제 풀다 md5 충돌(?) 을 가장한 특이한 문제를 보게 되어 정리해 둔다.


이 문제는 md5 collision 이 발생하는 것이 아닌, php 비교문("==") 의 취약점이라고 볼 수 있다.


"==" 비교 연산자와 "===" 의 연산자는 차이가 있는데, "==" 를 사용하면 아래와 같이 의도하지 않은 엉뚱한 결과가 나온다.


root@kali:~/Desktop/# cat test.php

<?

$v1 = "0e1208123";

$v2 = "0e0956871";

if (($v1) == (($v2))){ echo "equal\n"; }

?>


두개의 문자열이 분명 다름에도 불구하고 아래와 같이 같다고 나온다.


root@kali:~/Desktop/# php test.php

equal



자세한 이유는 여기저기 많이 설명되어 있었다.


http://stackoverflow.com/questions/22140204/why-md5240610708-is-equal-to-md5qnkcdzo


요약하면 "==" 는 문자가 모두 숫자로 이루어진 경우, 숫자로 변환하여 비교를 하게 되는데, 


위와 같은 경우 둘다 0 으로 변환되어 0=0 이 되어 true 가 된다는 것.



출처: http://hyunmini.tistory.com/76 [Hyunmini]


반응형

'php 시큐어코딩' 카테고리의 다른 글

웹 보안 가이드라인 1. XSS - 초안  (1) 2017.03.20
[PHP] strcmp 취약점을 이용한 인증 우회  (0) 2017.01.26
PHP $_SERVER['PHP_SELF'] 취약점  (0) 2017.01.26
php 시큐어 코딩  (0) 2017.01.26
php 취약점 TOP 5  (0) 2017.01.26