본문 바로가기

4번 문제에요.

배점은 150점이에요.

Board

Hello world :)

Hell world :(

대충 이렇게 생겼어요.

html을 뜯어보면 script 가 있는데

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
function getQueryVar(variable) {
    var query = window.location.search.substring(1);
    var vars = query.split('&');
    for (var i = 0; i < vars.length; i++) {
        var pair = vars[i].split('=');
        if (decodeURIComponent(pair[0]) == variable) {
            return decodeURIComponent(pair[1]);
        }
    }
}
if(!getQueryVar("no")){
  q = `query{
    view{
      no,
      subject
    }
  }`;
  xhr = new XMLHttpRequest();
  xhr.open("GET""/view.php?query="+JSON.stringify(q).slice(1).slice(0,-1),false);
  xhr.send();
  res = JSON.parse(xhr.response);
  for(i=0;i<res.data.view.length;i++){
    board.innerHTML += `<a href=/?no=${res.data.view[i].no}>${res.data.view[i].subject}</a><br>`;
  }
}
else{
  q = `query{
    view{
      no,
      subject,
      content
    }
  }`;
  xhr = new XMLHttpRequest();
  xhr.open("GET""/view.php?query="+JSON.stringify(q).slice(1).slice(0,-1),false);
  xhr.send();
  res = JSON.parse(xhr.response);
  v = res.data.view;
  try{
    parsed = v.find(v => v.no==getQueryVar("no"));
    board.innerHTML = `<h2>${parsed.subject}</h2><br><br>${parsed.content}`;
  }
  catch{
    board.innerHTML = `<h2>???</h2><br><br>404 Not Found.`;
  }
}
 
cs

view.php 에다가 쿼리를 날리네요.

그걸 fiddler로 따서

그대로 get 를 날려보면

이런게 나오네요.

그러니 빈 쿼리를 날려보면?

에러가 떠요.

대충 GraphQL 이라네요.

암튼 GraphQL의 information_schema.tables 처럼 작동하는 쿼리인

query{__schema{types{name}}}

를 날려보면?

{"name":"User_d51e7f78cbb219316e0b7cfe1a64540a"},

이제 필드 이름을 알아내기 위해

query{__type(name:"User_d51e7f78cbb219316e0b7cfe1a64540a"){name,fields{name}}}

를 날려보면?

{"name":"passwd_e31db968948082b92e60411dd15a25cd"}

그런데 작동을 Board로 질의를 안하고 view로 질의를 해야만 작동하는것처럼

User어쩌구로 질의를 할수 없으니

 

 

눈치껏 Query 의 필드 이름을 따보면?

 

 

{"name":"login_51b48f6f7e6947fba0a88a7147d54152"}

 

마지막으로

query{login_51b48f6f7e6947fba0a88a7147d54152{passwd_e31db968948082b92e60411dd15a25cd}}

를 날려보면?

{"passwd_e31db968948082b92e60411dd15a25cd":"FLAG{□□□□□□□□□□□□□□□□□□□□□□□□□□□□

 

□□□

 

□□□□□□□□

'연구글 > webhacking.kr_renewal' 카테고리의 다른 글

webhacking.kr Challenge BABY / HTML5  (0) 2021.11.02
댓글

2번 문제에요.

배점은 100점이에요.

you can inject anything

 

foo

[Error Report]

 

그렇다네요.

중간에 script.js 가 있는데

이렇게 생겼어요.

대충 [Error Report] 를 띄우는거같네요.

Is there any error at this websie?

report to admin!

admin will check immediately.

[Error Report] 는 이렇게 생겼어요.

일단 아무 태그나 넣어보면

작동은 하는데

script 태그를 넣으면

들어는 가지만

차단되요.

csp가 걸려있네요. 랜덤nonce가 걸려있어서 /script.js 만 작동하게 되어있는 구조네요.

근데 /script.js 즉 상대경로이니 내 서버에 쿠키값을 빼낼 수 있는 스크립트를 만들어 놓고

base 태그를 이용해서 http://내서버/script.js 로 작동하게 하면?

내 서버의 로그에

flag=FLAG{□□□□□□□□□□□□□□

 

□□□

 

□□□□□□□□□

'연구글 > webhacking.kr_renewal' 카테고리의 다른 글

webhacking.kr Challenge NotSQL / DB  (0) 2021.11.05
댓글