안녕하세요 질문에 남겨주신 답변보고 질문 남깁니다 !

Frontend

/#/

/items
/user/info

/#/:id/detail

/user/info, /:id(\\d+)/info에 요청 보내서 받아옴

Buy

  • /:id(\\d+)/buy에 post 요청

  • onSubmit

    onSubmit: function(t) {
        var e = this;
        t.preventDefault(), this.$http.post("/".concat(this.id, "/buy")).then((function(t) {
            e.$cookie.set("token", t.data.token), alert("buy item!"), location.href = t.data.data
        })).catch((function(t) {
            alert(t.response.data)
        }))
    
  • buy를 하면 location.href = t.data.data secret_data로 redirect 한다.

  • parseInt(req.params.id, 10)

  • var item = items.find(item => item.id == id);

  • secret_data['' + id] secret data를 가져올 때 입력으로 준 id를 씀. item.id가 아니라

입력벡터 의심 : id -> 근데 뭔가를 하려고 해도 꼼꼼하게 검증되어 있는 것 같다.

redirect 하는 것을 가지고 뭐 어떻게 할 수 없을까… => 방문하면 post 요청하게 어떻게 할 건데?

/#/login

uid upw 입력으로 받고 /login으로 포스트 요청

  • 내부적으로 login(uid,upw) 사용

입력벡터 의심 : uid upw

/#/report

  • login()만 사용함
  • 입력한 path// 검증만 하고 방문함

입력벡터 의심 : path


/debug/:data

data에 입력한 값이 text/plain으로 22글자 나옴.

경로에 뭐 검증이 없긴 하다.

post 요청을 보내는 곳에는 다른 js가 삽입이 되어야 자동 submit이 될텐데…

GET method

/

/debug/:data

/items

/:id/info

POST method

/login

/report

/:id/buy

처음에는 /report에서 사용하는 path에 어찌저찌 해서 진행해야 하나 싶었는데… 그 것도 잘 안되고 다른 url에서는 도저히 어떤 방식으로 진행해야 할지 잘 모르겠습니다 ㅠ 현재는 /debug/:data에 data값에 검증이 없어서 뭔가를 시도 중입니다. 피드백이나 방향성만 제시해주시면 감사하겠습니다…

#web
작성자 정보
답변 2
avatar
bbang_jo
워게임: 50

.

2020.12.27. 22:24
2dedce
워게임 고인물

url에서 사용자의 입력값이 있기 때문에 조작가능한 부분은

/#/:id/detail 에서 id

/debug/:data 에서 data

/:id/info 에서 id

/:id/buy 에서 id

가 있습니다. 여기서 /debug/:data, /:id/info, /:id/buy는 api같은 거라서 여기를 어드민이 브라우저로 접속한다고 하더라도 이득이 없습니다.(브라우저로 접속한다는 것은 자바스크립트가 실행되는 이득을 볼 가능성이 있습니다.) /#/:id/detail에서 id를 집요하게 파보세요.

2020.12.31. 14:15
질문에 대한 답을 알고 계신가요?
지식을 나누고 포인트를 획득해보세요.
답변하고 포인트 받기