목록2021/07/08 (2)
Sechack

들어가서 new game버튼을 누르면 게임이 나온다. 저기 저 보물상자를 먹어야하는것 같은데 강때문에 막혀있어서 키보드로 백날 조작해봐야 못간다. 절대 못깨게 만들어놓은 게임이다. 하지만 이것은 javascript로 돌아가는 게임이다. 따라서 소스코드를 분석해서 캐릭터의 좌표 위치를 담고있는 무언가를 찾은다음에 변조하면 끝날것이다. 근데 저기 보이다시피 소스코드 파일도 많고 파일 하나하나에 들어있는 javascript코드의 양도 굉장히 많다. 따라서 저걸 전부 분석하는데는 한세월이 걸릴것같아서 다른 방법을 떠올렸다. 지금 게임은 현재 실행중이다. 게임개발 조금 해보신분들은 아시겠지만 게임은 요소 하나하나가 객체이다. C++과 같은 객체지향 프로그래밍을 조금이라도 해보신 분들은 이말이 무슨말인지 바로 알것..

딱봐도 xss문제인 baby문제이다. 일단 태그 인젝션이 가능한게 확인되었다. 하지만 태그로 alert를 해주려고 하면 실행이 되지 않는다. 왜그런가 봤더니 Content-Security-Policy: script-src 'nonce-zwsN5tzvG9CmVOzxy0Cabi3ioXs='; 다음과 같이 csp가 설정되어있는것을 볼 수 있다. 따라서 xss공격이 방어가 된다. 하지만 얼핏보면 안전해보이는 저 csp에 큰 문제점이 하나 있다. 바로 base태그에 대한 정책이 누락되어 있다는것이다. 따라서 태그 삽입이 가능하므로 우리는 base태그를 이용해서 base url값을 맘대로 설정할 수 있다. 페이지 소스코드를 보면 /script.js를 로드하는것을 볼 수 있다. 그러면 임의의 웹사이트를 하나 판 뒤에..