ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Loose comparison, Magic Hash
    Security/Web보안 2020. 8. 4. 20:08

    PHP에서의 느슨한 비교

     

    PHP에서는 type juggling(스스로 type을 변환)이 작동한다.

    <?php

    $a = "123"; //a변수는 string type이다.

    $a += 1; //a변수는 integer가 된다.

    ?>

     

    엄격한 비교 (===)에서는 자료형과 값이 모두 같아야 TRUE를 반환한다.

     

    하지만, 느슨한 비교 (==)에서는 값만 같아도 TRUE가 반환된다.

     

     

     

     

    - Magic Hashes

    비교 연산시 다른 값이 타입 저글링에 의해 같은 값으로 인식되게 하는 것

    특수한 경우, '0e'로 시작하는 문자열일 때 가능

     

    지수를 표현할 때는 5*10^2 를 5e2 라고 표기한다.

    php에서 '0e'로 시작하는 문자열의 뒤가 모두 숫자일경우 ex) 0e1234, 0e823 ...

    에는 php상에서 float 형태로 인식하게 된다.

     

    $a="0e123"

    $b="0e456"

    $a == $b의 결과는 TRUE가 나오게된다.

     

    두 변수가 string으로 지정이 되었지만, php는 타입저글링에 의해 float로 바꾼뒤 비교를 진행하고 둘다 0이라고 생각하여 TRUE가 반환되게 된다.

    또한 연산후에도 타입캐스팅이 없었으므로, 각 변수는 string으로 유지된다.

     

    rootable.tistory.com/entry/%EB%A7%A4%EC%A7%81%ED%95%B4%EC%8B%9CMagic-Hashes

    'Security > Web보안' 카테고리의 다른 글

    Webhacking.kr  (0) 2021.01.09
    Local File Inclusion  (0) 2020.08.02
    Directory indexing  (0) 2020.08.01
Designed by Tistory.