일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 웹개발
- 자료구조
- gitbash
- GIT
- 포렌식
- 자바
- mongoose
- bootstrap
- 포렌식워게임
- node.js
- node
- Express
- 이진트리
- MongoDB
- 웹기초
- 웹해킹
- NavBar
- CTF
- 뷰
- wargame.kr
- nodeJS
- 워게임추천
- 써니나타스
- 웹해킹기초
- 자바기초
- materialize
- 이진탐색트리
- 자바문제풀이
- 워게임
- 그래프
- Today
- Total
보안 전공생의 공부
[Wargame.kr] type confusion 본문
간단한 비교를 하는 문제라고 한다.
힌트는 이 문제의 제목을 볼 수 있다는 것 ..?
소스코드를 확인하였다.
중점으로 봐야될 것 같은 부분만 형관펜을 쳐보았다.
▷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 |