首页 > 其他分享 >xss-labs通关(1--18)

xss-labs通关(1--18)

时间:2024-12-06 20:59:05浏览次数:9  
标签:xss 查看 -- 标签 javascript alert labs &# 源码

level1:

在name中传入参数时直接插入到HTML中 ,可以直接在name后插入js代码。

level2:

直接在搜索框输入上一题的代码

查看源码发现value中的代码特殊符号没有被实体转义

可以闭合掉">,构造payload

 

 level3:

随机输入查看源码

发现是单引号闭合,输入'><script>alert()</script>,查看源码发现符合被实体化

查看后端代码发现htmlspecialchars函数,是针对<>大于小于号进行html实体化 ,还可以通过其他方式注入如:onfocus(在元素获得焦点时触发,配合javascript伪协议来执行javascript代码),onclick(在用户单击按钮时执行js代码)

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

'οnclick='alert("xss")

点击搜索后再点击搜索框即可

level4:

查看源码发现是双引号闭合,输入"><script>alert()</script>,发现<>被过滤

还可以继续用onfocus标签绕过

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

"οnclick="alert()

level5:

输入"οnclick="alert(),查看源码

 输入"><script>alert()</script>,查看源码

查看后端代码发现使用strtolower转化为小写,str_replace来过滤,可以使用用a href标签法

href属性的意思是 当标签<a>被点击的时候,就会触发执行转跳,可以通过触发执行js代码

添加一个标签得闭合前面的标签

"> <a href=javascript:alert()>wdf</a> <"

再点击wdf标签即可

level6:

输入测试,发现过滤了许多关键字,如:href,script,on

改变大写发现没有被转换,则可以用大小写过滤

"> <sCript>alert()</sCript> <"

" Onfocus=javascript:alert() "

"> <a hRef=javascript:alert()>wdf</a> <"

level7:

传入" onfocus <script> <a href=javascript:alert()>,发现进行了小写的转换,并且删除了一些关键字

可以通过双拼写绕过,如:oonn,scscriptript.....

level8:

输入" src data onfocus <script> <a href=javascript:alert()>发现参数出现在两个地方:value和href,并且把双引号和<>给实体化,小写转换,还对关键字进行了过滤

 可以利用href的隐藏属性自动Unicode解码

由于这里本身存在<a href=所以只需要编码javascript:alert()

在线Unicode编码解码 - 码工具

再点击友情链接即可

level9:

输入" sRc DaTa OnFocus <sCriPt> <a hReF=javascript:alert()> 查看源码发现没有插入成功

 查看源码发现

使用strpos当传入的值false中没有http://时执行if语句,所以需要向传入的值里面添加http://并用注释符注释掉否则会执行不了无法弹窗,让函数strpos返回一个数字,构造payload

javascript:alert()/* http:// */

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

level10:

测试关键字,发现get传参的值只插入到h2标签中,input标签隐藏,过滤掉了<>

查看源码发现 get传参还能传给t_sort

可以使用onfocus事件,输入框被隐藏,所以得输入type="text",构造payload

 ?t_sort=" οnfοcus=javascript:alert() type="text

再点击输入框即可

level11:

查看源码发现input标签中有4个值,且都隐藏,第四个 t_ref是http头referer的参数(就是由啥地址转跳到这里的,http头的referer会记录有)

查看源码发现$str11=$_SERVER['HTTP_REFERER'],HTTP_REFERER是获取http请求中的Referer字段的,也就是链接到当前页面的前一页面

 抓包后看到没有referer信息,构造一个referer发送过去可以看到被t_ref获取了

 可以用onfocus构造

referer: " οnfοcus=javascript:alert() type="text

再点击输入框即可

level12:

查看源码发现value中有User-Agent的内容,可以抓包后修改User-Agent

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

再点击输入框即可

level13:

名字是t_cook,可以查看一下网页cookie

cookie名是user,直接改值

" οnclick=alert() type="text 

刷新点击即可

level14:

这关由于网站挂掉无法实现,用到的是exif xss复现,exif xss 复现_如和把xss写入到图片里-CSDN博客

level15:

查看源码发现ng-include,ng-include指令就是文件包涵的意思,用来包涵外部的html文件,如果包涵的内容是地址,需要加引号

可以尝试包含第一关,构造payload

?src='/level1.php'

测试过滤

?src=" ' sRc DaTa OnFocus <sCriPt> <a hReF=javascript:alert()>

这里不能包涵那些直接弹窗的东西如<script>,但是可以包涵那些标签的东西比如<a>、<input>、<img>、<p>标签等等,这些标签是能需要我们手动点击弹窗的

?src='/level1.php?name=<img src=1 οnmοuseοver=alert()>'

鼠标移动到图片即可

level16:

test插入到center中,不用闭合,测试关键字

?keyword=" ' sRc DaTa OnFocus onm ouseOver onm ouseDoWn P <sCriPt> <a hReF=javascript:alert()>  

将字母小写,把script替换成空格,最后将空格给实体化

查看源码发现是把script,空格,/,都转换成了空格字符

空格可以用回车代替,回车的url编码为%0A,再配合上不用/的<img>、<details>、<svg>等标签构造payload为

?keyword=<svg%0Aοnlοad=alert(1)>

level17:

测试关键字

?arg01=" ' sRc DaTa OnFocus onm ouseOver onm ouseDoWn P <sCriPt> <a hReF=javascript:alert()>; &arg02=" ' sRc DaTa OnFocus onm ouseOver onm ouseDoWn P <sCriPt> <a hReF=javascript:alert()>;

添加了转义,传入的参数都在embed标签中,不需要闭合符号

embed标签可以理解为定义了一个区域,可以放图片、视频、音频等内容,但是呢相对于他们,embed标签打开不了文件的时候就会没有显示的区域在

首先得用一个支持flash插件的浏览器打开本关(打开后会有个图片出来的,不支持flash插件浏览器就没有),如果不想下载的话,自己去后端改一下也行,将后端第十七关的代码(level17.php)指向的swf文件改为index.png

jiuh

就会出现embed标签的区域,接着构造payload

?arg01=%20onmouseover&arg02=alert(1)

鼠标移动到图片上即可

level18:

测试后发现和上一关差别不大,就是换了个swf文件,构建payload

?arg01= onm ouseover&arg02=alert(1)

鼠标移动到图片上即可

标签:xss,查看,--,标签,javascript,alert,labs,&#,源码
From: https://blog.csdn.net/2301_81447810/article/details/144173479

相关文章

  • 15. 文件操作
    一、什么是文件  文件(file)通常是磁盘或固态硬盘上的一段已命名的存储区。它是指一组相关数据的有序集合。这个数据集合有一个名称,叫做文件名。文件名是文件的唯一标识,以便用户识别和引用。文件名包括3个部分:文件路径+文件名主干+文件后缀名。所有的文件都通过流进......
  • 什么是 Merkle 树
    Merkle树(也称为哈希树)是一种特殊的树形数据结构,它的每个非叶子节点都是其子节点哈希值的哈希。Merkle树的主要用途是高效地验证数据完整性和一致性,广泛应用于区块链、分布式系统、文件系统等领域。Merkle树的原理Merkle树是一种二叉树,每个叶子节点包含数据块的哈希值......
  • Merkle 树 应用在 代码工程
    将Merkle树应用在代码工程中,尤其是在大型项目中,可以帮助管理和验证代码的完整性、追踪代码变更、提高版本控制的效率等。通过将代码文件、类、函数等结构映射到Merkle树中,我们可以高效地验证代码库的任何变更,确保每个部分在不同开发环境、版本控制系统或分布式系统中......
  • 什么是 Kata Containers?
    什么是KataContainers?KataContainers是一种结合了容器技术和虚拟机技术的轻量级运行时,旨在提供容器的速度和虚拟机的安全性。它将容器运行在一个隔离的虚拟机中,从而大幅提升安全性,同时保持容器的高效性。KataContainers的前身是两个项目:ClearContainers和runV。......
  • 超详细经典神经论文精读(三)——GoogLeNet
    深度学习精读论文系列(三)本次所选择的论文是GoogLeNet,其使用了Inception模块这里写目录标题Abstract—摘要Introduction—引言二、RelatedWork—相关工作三、MotivationandHighLevelConsiderations—动机和高水平的考虑四、ArchitecturalDetails—架构细节五、Goo......
  • 树莓派通过终端和mydesktop文件实现py文件开机自启动程序方法(包括图形化界面)
    先说问题,在网上找的许多开机自启动方法都无法很好地让我实现python文件开机自启动,要么是完全没有用要么是只能执行部分,对于我设计的tkinter界面是无法打开的。my.desktop文件无法打开图像化界面,.bashrc文件只能在界面出来前启动,估计开机后被吞了。我的方法是通过my.desktop文......
  • 力扣 179.最大数
    原题链接题解首先,第一感觉是直接按照字符串本身大小排序再相连;但是通过样例二可知此方法错误。因此,我们重新思考,上面的排序方法错误的原因在于上述的排序满足s1<=s2,但是不满足s1+s2<=s2+s1(我们称之为加法的传递原则)。此时我们重新定义排序规则:当s1+s2<=s2+s1时就排序,否则保持......
  • bpftrace man手册
    来源https://github.com/bpftrace/bpftrace/releases/tag/v0.21.2BPFTRACE(8)......
  • Ant Design X:卓越的AI界面解决方案
    AntDesignX:卓越的AI界面解决方案​​AntDesignX是AntDesign的全新AGI组件库,旨在帮助开发者更轻松地研发AI产品用户界面。AntDesignX将在AntDesign的基础之上进一步拓展AI产品的设计规范,为开发者提供更强大的工具和资源。期待与你一起推动AI技术的发展!官......
  • JavaSwing JProcessBar
    try{BeautyEyeLNFHelper.frameBorderStyle=BeautyEyeLNFHelper.FrameBorderStyle.osLookAndFeelDecorated;//UIManager.put("RootPane.setupButtonVisible",false);org.jb2011.lnf.beautyeye.BeautyEyeLNFHelpe......