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값에 검증이 없어서 뭔가를 시도 중입니다. 피드백이나 방향성만 제시해주시면 감사하겠습니다…
.
url에서 사용자의 입력값이 있기 때문에 조작가능한 부분은
/#/:id/detail
에서 id
/debug/:data
에서 data
/:id/info
에서 id
/:id/buy
에서 id
가 있습니다. 여기서 /debug/:data
, /:id/info
, /:id/buy
는 api같은 거라서 여기를 어드민이 브라우저로 접속한다고 하더라도 이득이 없습니다.(브라우저로 접속한다는 것은 자바스크립트가 실행되는 이득을 볼 가능성이 있습니다.) /#/:id/detail
에서 id를 집요하게 파보세요.