본문 바로가기

Hacking/Web

Magic Hash

PHP에서 ==로 비교할 때 생기는 type conversion으로 인한 취약점이다.

즉 문자열의 형식이 ^0+e\d*$로 되어있을 때, 이것을 숫자형 데이터와 비교를 하게 되면 0이라는 것으로 인식을 한다. 왜냐하면 $0^n$은 항상 0이기 때문이다.

이 성질을 이용해서 공격을 하는 워게임 문제들도 존재한다.


아래는 https://blog.whitehatsec.com/magic-hashes/ 에서 가져온 Magic hash 목록이다.



Hash Type

Hash Length

“Magic” Number / String

Magic Hash

Found By
md2 32 505144726 0e015339760548602306096794382326 WhiteHat Security, Inc.
md4 32 48291204 0e266546927425668450445617970135 WhiteHat Security, Inc.
md5 32 240610708 0e462097431906509019562988736854 Michal Spacek
sha1 40 10932435112 0e07766915004133176347055865026311692244 Independently found by Michael A. Cleverly & Michele Spagnuolo & Rogdham
sha224 56
sha256 64
sha384 96
sha512 128
ripemd128 32 315655854 0e251331818775808475952406672980 WhiteHat Security, Inc.
ripemd160 40 20583002034 00e1839085851394356611454660337505469745 Michael A Cleverly
ripemd256 64
ripemd320 80
whirlpool 128
tiger128,3 32 265022640 0e908730200858058999593322639865 WhiteHat Security, Inc.
tiger160,3 40 13181623570 00e4706040169225543861400227305532507173 Michele Spagnuolo
tiger192,3 48
tiger128,4 32 479763000 00e05651056780370631793326323796 WhiteHat Security, Inc.
tiger160,4 40 62241955574 0e69173478833895223726165786906905141502 Michele Spagnuolo
tiger192,4 48
snefru 64
snefru256 64
gost 64
adler32 8 FR 00e00099 WhiteHat Security, Inc.
crc32 8 2332 0e684322 WhiteHat Security, Inc.
crc32b 8 6586 0e817678 WhiteHat Security, Inc.
fnv132 8 2186 0e591528 WhiteHat Security, Inc.
fnv164 16 8338000 0e73845709713699 WhiteHat Security, Inc.
joaat 8 8409 0e074025 WhiteHat Security, Inc.
haval128,3 32 809793630 00e38549671092424173928143648452 WhiteHat Security, Inc.
haval160,3 40 18159983163 0e01697014920826425936632356870426876167 Independently found by Michael Cleverly & Michele Spagnuolo
haval192,3 48 48892056947 0e4868841162506296635201967091461310754872302741 Michael A. Cleverly
haval224,3 56
haval256,3 64
haval128,4 32 71437579 0e316321729023182394301371028665 WhiteHat Security, Inc.
haval160,4 40 12368878794 0e34042599806027333661050958199580964722 Michele Spagnuolo
haval192,4 48
haval224,4 56
haval256,4 64
haval128,5 32 115528287 0e495317064156922585933029613272 WhiteHat Security, Inc.
haval160,5 40 33902688231 00e2521569708250889666329543741175098562 Michele Spagnuolo
haval192,5 48 52888640556 0e9108479697641294204710754930487725109982883677 Michele Spagnuolo
haval224,5 56
haval256,5 64


비교연산자를 사용할 때 ==나 !=를 사용하지 않고, ===나 !==를 사용하는 것을 통해 이 취약점을 막을 수 있다.

'Hacking > Web' 카테고리의 다른 글

네이버 지식인 XSS 두 번째 성공  (4) 2018.10.28
네이버 지식인 XSS 성공  (0) 2018.09.17
제로보드의 위험성  (0) 2016.12.31
[문제 사이트] Lord of SQLinjection 2  (0) 2015.12.08
Magic Hash  (0) 2015.11.06
[문제 사이트] Lord Of Sql injection  (4) 2015.02.14