Web - 마법봉

HelloMG
|2020. 1. 23. 02:23

마법봉 문제

문제를 들어가면 "해쉬에 마법을 부여하면 그 어떤 것도 뚫릴지어니...."라는 말과 그림이 나옵니다.

(그림이 어째 조금.. =_=)

일단 소스 코드를 볼 수 있는 버튼이 있으니 소스를 보도록 합시다!

소스코드

소스코드는 간단합니다!

전에 입력하는 란과 "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