문제를 들어가면 "해쉬에 마법을 부여하면 그 어떤 것도 뚫릴지어니...."라는 말과 그림이 나옵니다.
(그림이 어째 조금.. =_=)
일단 소스 코드를 볼 수 있는 버튼이 있으니 소스를 보도록 합시다!
소스코드는 간단합니다!
전에 입력하는 란과 "240610708"을 md5로 해쉬화한거랑 일치하면 flag를 출력하네요 !
참.. 난감한 문제라고 생각할 수 있겠지만 문제의 화면에서 적절한 힌트를 주고 있는거 아시나요 :D
그것은 바로 매직해시 입니다!
간단히 알아보면 일부 프로그래밍 언어에서는 자동 캐스팅을 지원하는데
"0eXXXXX" 형식으로 지원을 할 경우 모두 부동 소수점 처리가 되어
"==" 연산자에서는 0으로 처리가 된다네요 :D
자세한 사항은 밑의 사이트를 보시고 공부하시면 될 것 같습니다!
https://www.whitehatsec.com/blog/magic-hashes/
Magic Hashes | WhiteHat Security
For more than the last decade, PHP programmers have been wrestling with the equals-equals (==) operator.
www.whitehatsec.com
자 그럼 "240610708"를 md5로 해시화하게 되면 "0e462097431906509019562988736854"이됩니다!
그럼 sha1로 해쉬화 했을 때 "0eXXXX"로 시작하는 것을 찾게되면
"=="연산자를 사용하였기 때문에 두개다 0으로 처리되어서 flag가 출력이 되겠죠 :D
위의 사이트에보면 "10932435112"을 sha1로 해쉬화 했을 때
"0e07766915004133176347055865026311692244"이 나온답니다!
그럼 이럴땐 어떻게 대처할 수 있을까요 ?!
"==" 대신 "==="를 사용해주면 한방에 해결이 됩니다!
그럼 이만 다음 문제에서 뵐게요~! :D
'CTF > HackCTF' 카테고리의 다른 글
Web - 가위바위보 (0) | 2020.02.03 |
---|---|
Web - Time (0) | 2020.01.31 |
Web - Read File (0) | 2020.01.21 |
Web - Guess me (0) | 2020.01.20 |
Web - 보물 (0) | 2020.01.09 |