2、xss-labs
XSS 的核心原理是 攻击者通过输入恶意脚本,利用网站未过滤的漏洞,让浏览器执行这些脚本,从而实施攻击。
level1_直接注入

查看源码:

当调用alert()时,实际上会执行以下操作:
弹出一个确认对话框,显示消息“完成的不错!”。
用户点击确认后,页面会重定向到
level2.php,并且传递一个查询参数keyword=test。
直接在地址栏输入
name=<script>alert()</script>

level2_”>闭合绕过
先插入js尝试

这里属于特殊符号被实体转义,所以<script>alert()</script>没有被实体转移

可以看到<script>alert(1)</script>被嵌套到value属性中,所以我们需要闭合input标签。
payload:
"><script>alert(1)</script>

level3_onfocus和οnclick
<!DOCTYPE html><!--STATUS OK--><html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<script>
window.alert = function()
{
confirm("完成的不错!");
window.location.href="level4.php?keyword=try harder!";
}
</script>
<title>欢迎来到level3</title>
</head>
<body>
<h1 align=center>欢迎来到level3</h1>
<h2 align=center>没有找到和相关的结果.</h2><center>
<form action=level3.php method=GET>
<input name=keyword value=''>
<input type=submit name=submit value=搜索 />
</form>
</center><center><img src=level3.png></center>
<h3 align=center>payload的长度:0</h3></body>
</html>
尝试闭合单引号

查看源代码

htmlspecialchars()是 PHP 中用于将特殊字符转换为 HTML 实体的核心安全函数,主要用于防止 XSS(跨站脚本攻击)并确保内容在 HTML 中正确显示。
| 原字符 | 正确转换后的 HTML 实体 | 触发条件 |
|---|---|---|
& | & | 始终转换 |
" | " | 默认(ENT_COMPAT)或ENT_QUOTES |
' | '(或'*) | 仅当设置 ENT_QUOTES** 时** |
< | < | 始终转换 |
> | > | 始终转换 |
使用 htmlspecialchars 函数对 $str 进行转义
利用onfocus事件绕过
' onfocus=javascript:alert()‘

利用onclick事件绕过
' οnclick='javascript:alert()'
level4_onfocus和οnclick
" onfocus=javascript:alert() "

level5_a href标签法


分析源代码:
<?php
ini_set("display_errors", 0);
$str = strtolower($_GET["keyword"]);
$str2=str_replace("<script","<scr_ipt",$str);
$str3=str_replace("on","o_n",$str2);
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form action=level5.php method=GET>
<input name=keyword value="'.$str3.'">
<input type=submit name=submit value=搜索 />
</form>
</center>';
?>
<center><img src=level5.png></center>
<?php strtolower()函数用于将字符串中的所有大写字母转换为小写字母。非字母字符(如数字、符号、中文等)不受影响。
str_replace()函数,用于在字符串中查找并替换指定的内容。
这里我们使用a href标签法
关于 HTML 中<a>标签(超链接)的href属性用法:HTML 标签_
href属性的意思是:当标签<a>被点击的时候,就会触发执行跳转,跳转到一个网站,还可以触发执行一段js代码。
基础语法
<a>标签通过 href属性定义链接目标,基本格式如下:
<a href="目标地址">链接文本或元素</a>
点击元素:可以是文本、图片或其他 HTML 内容。
行为:点击后默认在当前页面跳转(可通过
target属性控制)。
添加一个标签得闭合前面的标签,构建payload:
"> <a href=javascript:alert()>xxx</a> <"
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
已在FreeBuf发表 0 篇文章
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf
客服小蜜蜂(微信:freebee1024)



