728x90
type confusion 취약점은 객체의 인스턴스가 타입을 혼동하여 생기는 취약점이다.
문제의 소스코드를 확인해 보자.
json_decode($POST ['json'] 은 POST 방식으로 json 데이터를 받아서 저장한다.
php소스에서 == 가 같은 비교문은 느슨한 비교를 한다.
개발자 모드를 통해 js 파일을 확인했을 때, submit 함수에서 JSON.stringify() 함수로 자바스크립트의 값을 JSON문자열로 변환시켜 준다. JSON.stringfy({key: key}) 값을 JSON 문자열로 반환을 해주고, PHP에서 해당 값을 json_decode를 해준다.
PHP 소스에서 if(json -> key == key)에서 key값을 true을 만들면 flag 값을 얻을 수 있다. 즉, json의 key값을 문자열과 비교했을 때 true값이 나오는 값으로 변조를 하면 되는 문제이다.
* [true == 문자열] 의 경우 결과는 true이 된다.
느슨한 비교는 두 값의 타입이 다르더라도 변환을 통해 같은 값으로 취급될 수 있다면 true로 처리하게 된다.
개발자 모드의 console을 이용해 JSON.stringfy({key:key}) 값을 JSON.stringfy({key:true}) 로 변경을 해준다.
그리고 아무 문자를 입력을 하면 해당 flag 값을 얻을 수 있다.
'모의해킹 > Dreamhack' 카테고리의 다른 글
ex-reg-ex [WEB LEVEL1] (3) | 2023.05.18 |
---|---|
out of money [WEB LEVLE1] (0) | 2023.05.16 |
NoSQL-CouchDB [WEB LEVEL1] (0) | 2023.05.08 |
File Vulnerability Advanced for linux [WEB LEVEL1] (0) | 2023.05.06 |
Apache htaccess [WEB LEVEL1] (0) | 2023.05.06 |