Self-Improvement
php 비교 연산자 취약점(md5 매직해시) 본문
*매직 해시
- 비교 연산을 할때 Type Juggling을 이용하여 서로 다른 값이 같은 값으로 인식되도록 하는 특수한 동작
- 0e<숫자>일 경우에는 PHP에서의 "=="연산자 기호로는 값이 0이 되는 것
※Type Juggling : 변수를 정의하지 않아도 타입을 자동으로 설정해주는 것
*특수 숫자포맷
- 16진수 : 0xC(10진수 값으로 12)
- 8진수 : 0o11 (10진수 값으로 9)
- 지수 : 3e2(10진수 값으로 3*10^2=300)
md5 ex)
240610708 : 0e462097431906509019562988736854
QNKCDZO : 0e830400451993494058024219903391
*실습
#vi test.php
변수 a와 b를 선언해주면서 0e로 시작하며 숫자로만 되어있는 값을 설정해준다.
실행시켜보면 true가 나오게 된다.
형변환하지 않는 비교 연산자인 "==="을 사용해보면 false로 나오게 된다.
'Web' 카테고리의 다른 글
PHP 문자열 필터링 함수 취약점(POSIX Regex --> PCRE Regex) (0) | 2018.10.20 |
---|---|
php strcmp() 함수 취약점 (0) | 2018.10.20 |
XML, JSON, Ajax, SOAP, REST (0) | 2018.10.20 |
쿠키와 세션 (0) | 2018.10.20 |
Web VS WAS (0) | 2018.10.20 |