xsslab-第三关
·

查看源码看看过滤了什么

<>被过滤了
网站使用了 htmlspecialchars() 函数,这会将以下字符转义成实体:
| 字符 | 被转义为 |
|---|---|
< | < |
> | > |
" | " |
' | ' 或 ' |
& | & |
这意味着基本的 HTML 标签注入(如 <script>)会直接失效。
通过下面文章可以得知
我们有很多payload可以使用,网上大多用onmouseover,这里用onfocus演示一下
输入:
'autofocus οnfοcus=alert(1) x='
再点击一下搜索框出发一下onfocus事件即可成功

源码分析
<?php
ini_set("display_errors", 0); // 关闭错误提示
$str = $_GET["keyword"]; // 获取用户输入
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>"
. "<center>
<form action=level3.php method=GET>
<input name=keyword value='".htmlspecialchars($str)."'>
<input type=submit name=submit value=搜索 />
</form>
</center>";
?>
<center><img src=level3.png></center>
代码逐段讲解:
ini_set("display_errors", 0);
-
禁止 PHP 报错信息显示,防止泄露敏感信息。
$str = $_GET["keyword"];
-
获取 URL 参数中的
keyword值。
例如:level3.php?keyword=hello→$str = "hello"
htmlspecialchars($str)
-
⭐⭐ 重点:对用户输入进行 HTML 实体转义,防止脚本执行。
-
会把这些字符转为安全的形式:
原始 转义后 <<>>""'' -
在两处使用:
-
显示在
<h2>文本中 -
插入到
<input value=''>属性中
-
但是这关没对'转义,所以我们用'闭合即可
更多推荐

所有评论(0)