2、xss-labs之level2

1、打开页面

2、传入xss代码

payload:<script>alert(xss)</script>,发现返回<script>alert(xss)</script>

3、分析原因

打开f12,没什么发现

看后端源码,在这form表单通过get获取keyword的值赋给str,然后str通过htmlspecialchars()过滤

htmlspecialchars() 是 PHP 中的一个函数,用于将特殊字符转换为 HTML 实体。这通常用于防止跨站脚本攻击(XSS),并确保特殊字符(如 <, >, &, ", ' 等)在 HTML 上下文中被正确解析。

php 复制代码
$str = $_GET["keyword"];
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level2.php method=GET>
    <input name=keyword  value="'.$str.'">
    <input type=submit name=submit value="搜索"/>
</form>

4、构建payload

所以我们通过前端可以看到:<input name=keyword value="<script>alert(xss)</script>">

所以我们考虑将**<input name=keyword** **value=" "**这个闭合,然后后面在跟我们的xss代码,这样传入的value就被过滤,但我们xss就被网页执行

所有构建payload:"> <script>alert("xss")</script>

然后变成: <input name=keyword value=" "> <script>alert("xss")</script>

5、疑惑反思

做题遇到的疑惑:

一开始我在想传入<script>alert("xss")</script>, 不是被htmlspecialchars 函数转义成&lt;script&gt;alert(&quot;ls /&quot;)&lt;/script&gt;了么,然后又通过代码:echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>" 输出前端,为什么最后页面显示是**"没有找到和 <script>alert("ls /")</script> 相关的结果** 。而不是**"没有找到和&lt;script&gt;alert(&quot;ls /&quot;)&lt;/script&gt;相关的结果."**

通过查阅资料,就懂了

6、网页渲染过程

原理:

1、你参数传进去,PHP 后端中使用 htmlspecialchars 对输入进行转义

2、然后开始执行PHP的后端代码,你的参数就执行不了,传入的payload也执行不了

3、PHP后端代码执行完后,浏览器会将转义后的字符还原为原始字符进行显示

4、因此,页面最终显示的是用户原始输入的内容,而不是转义后的字符

所以我们要通过闭合来绕开后端的过滤,来执行我的payload

**反思:**开发与安全缺一不可

总结:

1、xss的payload的构建可以f12查看前端代码

2、理解构建xss的闭合过程,其实就是绕过过滤

相关推荐
陈随易10 分钟前
3000 万人在用的翻译插件,重写一遍就是一门生意
前端·后端·程序员
IT_陈寒17 分钟前
Vue的这个响应式陷阱,差点让我加班到天亮
前端·人工智能·后端
Flynt2 小时前
别写拖拽行为,只声明"能拖到哪":UIST 最佳论文的拖拽方案我实测了
前端·svg·preact
Moment2 小时前
代码都能让 Agent 写了,我们为什么还要学前端?
前端·后端·面试
国科安芯2 小时前
人在回路中的总线:商业空间站环境控制与生命保障系统CANFD网络的可靠性与功能安全
网络·嵌入式硬件·安全·架构·php·抗辐射
Hilaku2 小时前
MCP 协议会成为前端 AI 工程的标准接口吗?
前端·javascript·程序员
Zan3 小时前
Tauri 2 实战:为什么一个可靠的桌面应用,应该由 Rust Host 管理生命周期?
前端·架构·rust
SameX3 小时前
鸿蒙 ArkTS 独立开发者的项目结构 model / dao / viewmodel / page / common 的分层
前端
阿星AI工作室3 小时前
WorkBuddy做数字人口播:动效包装+克隆声音+真实照片+对口型全流程
前端
火山引擎开发者社区3 小时前
给企业配一双 AI 的手:火山引擎 OS Agent 替你操作手机和电脑
前端·人工智能