ShadowCTF Magic Password 풀이

CTF 중점 스터디

2019. 11. 1. 20:42

감을 못잡다가 대회가 끝나고 푼 50점짜리 문제입니다 ㅠㅠ

사이트에 접속하면 평범한 입력칸이 나옵니다.

소스보기를 누르면 친절하게 소스가 나와줍니다.

우선 php로 작성되었고, 대강 문제를 보면 v1과 v2에 값을 넣어주어야 한다.

여기서 봐야할건 sha1이랑 md5라는 해시값을 만들어주는 함수를 사용한다는 점이다.

여기서 해시값이란 복호화 할 수 없는 암호 문자열을 뜻한다.

 

이 sha1이랑 md5 해시값이 같을 확률은 솔직히 없다고 보면 되는데,

이 문제에서는 둘이 같아야 flag가 나온다는걸 보면, 어떠한 취약점으로 인해 flag가 나온다는 점을 예상할 수 있다.

 

해당 코드는 php를 사용했고, 비교를 한다. ==> 느슨한 비교기호 !

이 생각을 대회가 끝나고서야 해버렸다.

느슨한 비교기호는 php 비교 취약점이 생기는 부분이라고 생각하면 된다.

 

그러면 문제풀이는 굉장히 간단해진다. 우선 v1인 첫번째 입력칸에 sha1으로 해시값을 만들 수 있는 값으로 대강 입력해준다.

다음은 v2인데, 이 v2는 ctype_alpha 함수가 사용된다.

해시값인데 숫자를 입려해주면 안된다.

이는 문자열로만 이루어진걸 찾아야하는데 필자는

https://github.com/spaze/hashes

 

spaze/hashes

Magic hashes – PHP hash "collisions". Contribute to spaze/hashes development by creating an account on GitHub.

github.com

여기서 찾아 사용했다.

원하는 해시값으로 들어가서 문자열로만 이루어진 값을 그대로 복붙해주면!

축하한다고 해준다.

대충 소스코드를 읽어봤으면 알겠지만 U0hBRE9Xe0MwRkYzM0gwTDN9 이게 flag이다.

암호화된건데 대부분 ctf에서는 base64를 이용하니 디코드 해보았다.

 

'CTF 중점 스터디' 카테고리의 다른 글

Newbie CTF_babypwn 풀이_정세인  (0) 2019.11.03
N00bCTF - very ezzzzzz!! Write up  (0) 2019.11.03
Pwnable.kr lotto 문제 풀이_ 정세인  (0) 2019.10.27
N00bCTF - What is bof? Write up  (0) 2019.10.27
N00bCTF Where_is_flag 풀이  (0) 2019.10.27