Auf der Seite steht tatsächlich „Ich gewinne“, aber ich denke, es ist falsch
Ich habe es auf jsfiddle ausgeführt und festgestellt, dass es richtig maskiert und nicht injiziert wurde. Was sagt die Seite? Liegt wirklich eine Injektion vor oder ist die Challenge-Seite falsch?
HTML:
Code: Select all
text
Code: Select all
//from challenge page
function escape(s) {
function htmlEscape(s) {
return s.replace(/./g, function(x) {
return { '': '>', '&': '&', '"': '"', "'": ''' }[x] || x;
});
}
function expandTemplate(template, args) {
return template.replace(
/{(\w+)}/g,
function(_, n) {
return htmlEscape(args[n]);
});
}
return expandTemplate(
" \n\
Hello, ! \n\
\n\
var v = document.getElementById('name'); \n\
v.innerHTML = '[url=#]{name}[/url]'; \n\
\n\
",
{ name : s }
);
}
//the solution
$('#c').html(escape('\74a onclick=alert(1)\76W'));
Mobile version