보안 전공생의 공부

[Wargame.kr] type confusion 본문

Wargame/web

[Wargame.kr] type confusion

수잉 2021. 2. 25. 00:51

간단한 비교를 하는 문제라고 한다.

힌트는 이 문제의 제목을 볼 수 있다는 것 ..?

 

'

소스코드를 확인하였다.

중점으로 봐야될 것 같은 부분만 형관펜을 쳐보았다.

 

▷uniqid함수 (참조 : webcooker.tistory.com/24) : 랜덤으로 13글자의 문자열을 생성해주는 함수이다. 앞의 인자는 그 문자열의 접두사처럼 붙는다.

-> "welcome to wargame.kr!_@@@@@@@@@@@@@" 이렇게 변수 key값이 설정될 것이다.

 

▷sha1함수 (참조 : http://b.redinfo.co.kr/63) : 16진수이고, 40글자로 된 sha1 해시 문자열을 만든다.

-> uniqipd 함수로 만든 문자열이 sha1해시로 암호화할 것이다. 

 

 

그리고 이렇게 암호화된 key값과

내가 입력창에 입력한 문자열을 php의 변수로 변환한 값이 일치하면

플래그를 얻을 수 있을 것 같다.

(참조 : m.blog.naver.com/questzz/220631908311)

 

type confusion 취약점을 검색해보니 객체의 인스턴스가 타입을 혼동하여 나는 오류라고 한다.

이 문제가 simple compare challenge라고 했던 문제에 집중을 해보면

 

저 if문의 ==의 느슨한 비교의 취약점을 이용하면 될 것 같다.

 

개발자도구의 sources 탭을 확인해보면

이렇게 함께 첨부된 util.js 파일을 확인할 수 있다.

(ajax에 대해 -> electronic-moongchi.tistory.com/72)

 

 

submit_check함수에서 submit함수로 전달한 key값은 data 속성(?)에서 그대로 key로 주어져있다.그런데 이를 true로 설정하면

 

json->key는 true가 되며

내가 입력한 key값이 어떤 문자열이든 

==의 느슨한 비교에 의해 true가 된다. (밑의 표 참고)

 

이에 따라 플래그를 얻을 수 있게 된다.

 

console 창을 이용해 key를 true로 바꿔주고

입력창에 아무거나 입력하면

이렇게 플래그값을 얻게 된다.


 

푸는데 너무 어려워서 구글링의 도움을 받았다 ㅜㅜ

==이 한 쪽이 true이면 다른쪽은 어떤 것이든 true를 반환한다는 것을 

알게 되었다.

그런데 그 원리를 찾아보았는데 잘 이해가 안간당 ....

 

그리고 ajax는 처음봐서 그저 신기,,

'Wargame > web' 카테고리의 다른 글

[Wargame.kr] md5 password  (0) 2021.03.16
[SuNiNaTaS] #3  (0) 2021.02.25
[Wargame.kr] #3 QR CODE PUZZLE  (0) 2021.02.02
[Wargame.kr] #2 flee button  (0) 2021.02.02
[Wargame.kr] #1 already got  (0) 2021.02.02
Comments