县城做网站的多么,优质网站策划,提供网站建设的各类服务,专业网站建站企业1、打开页面 2、传入xss代码
payload#xff1a;scriptalert(xss)/script#xff0c;发现返回scriptalert(xss)/script 3、分析原因
打开f12#xff0c;没什么发现 看后端源码#xff0c;在这form表单通过get获取keyword的值赋给$strscriptalert(xss)/script发现返回scriptalert(xss)/script 3、分析原因
打开f12没什么发现 看后端源码在这form表单通过get获取keyword的值赋给$str然后$str通过htmlspecialchars()过滤 htmlspecialchars() 是 PHP 中的一个函数用于将特殊字符转换为 HTML 实体。这通常用于防止跨站脚本攻击XSS并确保特殊字符如 , , , , 等在 HTML 上下文中被正确解析。 $str $_GET[keyword];
echo h2 aligncenter没有找到和.htmlspecialchars($str).相关的结果./h2.center
form actionlevel2.php methodGETinput namekeyword value.$str.input typesubmit namesubmit value搜索/
/form
4、构建payload
所以我们通过前端可以看到input namekeyword valuescriptalert(xss)/script
所以我们考虑将input namekeyword value 这个闭合然后后面在跟我们的xss代码这样传入的value就被过滤但我们xss就被网页执行
所有构建payload scriptalert(xss)/script
然后变成input namekeyword value scriptalert(xss)/script 5、疑惑反思
做题遇到的疑惑
一开始我在想传入scriptalert(xss)/script不是被htmlspecialchars 函数转义成lt;scriptgt;alert(quot;ls /quot;)lt;/scriptgt;了么然后又通过代码echo h2 aligncenter没有找到和.htmlspecialchars($str).相关的结果./h2 输出前端为什么最后页面显示是“没有找到和 scriptalert(ls /)/script 相关的结果。而不是”没有找到和lt;scriptgt;alert(quot;ls /quot;)lt;/scriptgt;相关的结果.“ 通过查阅资料就懂了
6、网页渲染过程
原理
1、你参数传进去PHP 后端中使用 htmlspecialchars 对输入进行转义
2、然后开始执行PHP的后端代码你的参数就执行不了传入的payload也执行不了
3、PHP后端代码执行完后浏览器会将转义后的字符还原为原始字符进行显示
4、因此页面最终显示的是用户原始输入的内容而不是转义后的字符
所以我们要通过闭合来绕开后端的过滤来执行我的payload
反思开发与安全缺一不可 总结
1、xss的payload的构建可以f12查看前端代码
2、理解构建xss的闭合过程其实就是绕过过滤