题目描述
(有附件,但完全不需要。)
观察
打开网页:
注意右边的这段代码:
1 | searchInput.addEventListener('input', function () { |
这里会直接提取我们的输入赋值给 query,并且将query直接拼接进HTML的代码里了。
网页右下角那里还给了些基础xss的例子:
但是尝试
1 | <script>alert('Boo!');</script> |
会失败,有可能是那里自动过滤了。
渗透
尝试其他Payload即可:
1 | <img src=x onerror="alert('Boo!')"> |
检测到注入成功了便会自动显示flag。
得到flag:
讲一下这里注入成功的原理:
这是我们注入的内容:
1 | <img src=x onerror="alert('Boo!')"> |
当我们在html里写
1 | <img src="valid_image.jpg"> |
的时候浏览器会自动去加载图片。但是我们这里故意写了个无效的地址1
<img src=x>
所以加载时会触发error,然后 onerror 里的内容会被当作 JavaScript 执行。