본문 바로가기

Etc

매직해시 취약점 (Magic Hash) 이란

일부 프로그래밍 언어에서는 일반 자료형을 쉽게사용할수있는

자동 형변환 (Type Juggling) 를 제공하고있다.

 

변수에 정수를 넣으면 integer 

문자열을 넣으면 String 처럼 자동으로 그에 맞는 자료형으로 캐스팅을 해주게되는데

 

이 중에 숫자 포멧을 주의해야한다.

 

0xC 는 16진수 C를 의미하고

0o12 은 8진수 12을 의미하고

7e3 은 지수  10진수값에서 7*10^3(7000)을 의미한다.

 

여기서 지수에 특수한 경우가있다

앞의 계산하는 숫자가 0인경우이다.

 

0*10^3 = 0 

 

아무리 계산을 바꾸더라도 앞의 값이 0이라면 결과값은 모두 0일것이다.

예로

 

0e15163 와 0e1687489798 는 둘다 같은 0의 값이다.

 

이부분이 매직해시 취약점인데

 

만약 두변수의 값을 비교하는 조건문에서

한쪽은 0e15163 

반대쪽은 0e1687489798 

 

라고한다면 결과값은 같지않다 라고 생각을하겠지만

실제로는 같다고 나오는것이다.

'Etc' 카테고리의 다른 글

인코딩특징 , 복호화 사이트  (0) 2019.05.20