当前位置: 首页 > article >正文

xss-lab

xss

XSS全称跨站脚本(Cross Site Scripting),为避免与层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故缩写为XSS。这是一种将任意 Javascript 代码插入到其他Web用户页面中执行以达到攻击目的的漏洞。攻击者利用浏览器的动态展示数据功能,在HTML页面里嵌入恶意代码。当用户浏览该页时,这些潜入在HTML中的恶意代码会被执行,用户浏览器被攻击者控制,从而达到攻击者的特殊目的,如 cookie窃取等。

XSS属于代码注入的一种,它允许攻击者将代码注入到网页,其他用户在浏览网页时就会受到影响。

level1

get传参输入,调用alert()函数来触发弹窗

<script>alert()</script>

level2

尝试上一关的办法,失败

还是get传参,第一个被进行html实体转义,第二个没有,所以要用‘’闭合避免,实体转义就是为了确保一些特殊字符能被正确解析,就把他转换成特定实体表示形式来确保解析

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

level3

随意输入,看源码

这关是单引号试试看

看wp,原来是符号也被实体化了,htmlspecialchars函数只针对<>大于小于号进行html实体化,wp中用onfocusonfocus,来避开使用<>

“onfocus”在 HTML 中是一个事件属性,当一个元素获得焦点时触发。例如,当一个文本输入框被用户点击或通过键盘操作选中时,就会触发“onfocus”事件,onfocus事件就是当输入框被点击的时候,就会触发myFunction()函数,再配合js为协议来执行alert

上传' οnfοcus=javascript:alert() '后再点击输入框出发onfocus事件

level4

双引号,尝试使用上一关的办法,确实是把单引号改成双引号

level5

还是<input>标签,双引号尝试上一关的办法

可以看到字符被异化成o_nfocous了,看wp是说有转换成小写字母的函数,不能用大小写绕过,要使用<a>href标签法<a>href标签法

当点击<a>是会出发跳转,可以是网站也可以是js代码,这题就是用这个来执行js代码

"> <a href=javascript:alert()>xxx<a> <"

level6

尝试onfocus条件还是一样

看wp得知,上面我们可以看到o被禁用了,题目源码提示了禁用语句,但是我这里的源码找不到,不论是开发者模式,还是直接看源码都没有

这边看一下wp中的代码

可以看到一些字符串会被替代成对应的字符串,没有添加大小写变化,所以可以用大写绕过,对应语句,_前面的字符变成大写

"> <a hRef=javascRipt:alert()>xxx<a> <"

level7

和往常 一样是input标签双引号

一样的去尝试用ahref标签

可以看到一部分字符被删除了,从上一关wp可以发送测试关键字字符串" OnFocus <sCriPt> <a hReF=javascript:alert()>

可以看到on、script、href都被删除了或者替换成空值了,这边不知道有没有禁用大小写,尝试之后发现是禁用了的,wp上用的是双写字母绕过

"> <a hrehreff=javasscriptcript:alert()>xxx</a> <"

level8

这次显然没有引号,同样是get传参,而且它给你设置了a href标签等于我们输入的内容,所以我们尝试将之前使用a href标签时的内容填进去

可以看到输入的还是有被替换,尝试大小写绕过也是失败的,但是我们不知道具体替换的时字符还是字符串,是什么字符串,所以也不能去用双写字符绕过,去看wp时给了源码

显然可以知道src被替换了,但是这次不是替换成空字符,所以也不能用双写字符串绕过,wp是使用href的隐藏属性自动Unicode加密,也就是将我们输入的字符串进行Unicode加秘密之后再输入网站,将javascript:alert()加密

level9

这次添加了引号,可以看到我们输入的是not bad,href却显示您的连接不合法,也就是在输入过程中,他还添加了一个验证,这边还是看不到验证的源码,去wp里看

可以看到我们输入的字符串中要包含有http://,否则就是不合法,单纯加上去又不行,但是可以看到确实是通过了验证

看了wp才知道是因为输入的字符串解码之后就不是我们要执行的js代码了,所以要把http注释掉

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

level10

本题没有输入框,但其实就看传参方式而已,get就直接url,post就用hackbar,用测试字符尝试一下,是get传参

可以看到没有字符被替换,只有特殊字符被异化了,下面的代码显示有三个隐藏的输入项,看wp得知是get传参t_sort,并过滤掉了<>号,为什么过滤了<>我也没搞清楚,因为不能闭合标签所以我们用不了a href标签,但可以用' οnfοcus=javascript:alert() ',因为这里输入框被隐藏了,需要添加type="text",注意这里要用双引号

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

level11

比上题多了一行隐藏代码

"http://xss-lab/level10.php?t_sort=%22%20οnfοcus=javascript:alert()%20type=%22text"

wp中说明,t_ref的<input>标签是http头referer的参数,HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,显然我们是从上一条跳过了的,http头的referer会记录,但是这个要怎么用呢

这边是抓包之后加一个referer去测试字符串

返回看源码

可以看到<>被删了,所以我们可以用" οnfοcus=javascript:alert() ",同样是构造referer

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

沿用上一罐的直接改

level12

将referer替换了,像是系统的版本,看之前抓包的图片也可以知道要改user-agent,沿用上一罐的直接改

level13

又换了一个隐藏,要怎么判断这个隐藏是什么传参方式?

这边看wp,他的源码又和我不一样

说是通过这句话判断是cookie,还是直接抓波发送测试字符串发现只删除<>,所以用

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

level14

源码里又两个网站一个404报错了

另一个也看不出什么,看wp知道是网站坏了,原本的思路是向那个网站发送一个带xss代码的图片,这个可以在属性中编辑,之后向网站发送图片以达到弹窗的目的

level15

出现了ng-include AngularJS ng-include 指令详解-CSDN博客

ng-include 指令用于包含外部的 HTML 文件。

包含的内容将作为指定元素的子节点。

ng-include 属性的值可以是一个表达式,返回一个文件名。

默认情况下,包含的文件需要包含在同一个域名下。

1.ng-include,如果单纯指定地址,必须要加引号
2.ng-include,加载外部html,script标签中的内容不执行,不能加载,如果需要控制器处理需要在主页中注册
3.ng-include,加载外部html中含有style标签样式可以识别
4.ng-inclue,记载外部html中的link标签可以加载

这边看wp时先测试包含文件,包含的时=是第一个的地址

可以看到两关并起来了,然后传参测试字符串?src=" ' sRc DaTa OnFocus <sCriPt> <a hReF=javascript:alert()> &#106;

看源码双引号、<>被过滤了,wp上说不能直接用会直接弹窗的东西,要用手动的,这是为什么XSS跨站脚本攻击实例与防御策略-CSDN博客

可以在这里面选择,这里选择<img>,然后选择在第一关弹窗

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

我也尝试用这个关弹窗可是不行,又是为什么

level16

这边是先传参测试字符串?keyword=" ' sRc DaTa OnFocus OnmOuseOver OnMouseDoWn P <sCriPt> <a hReF=javascript:alert()> &#106; 

对比可以看到字母小写化了,script和/替换都成空格,那么就是绕过了,选择其他的来代替被替换的字符,wp中是使用回车替代空格,回车的url编码是%0a,在上面的攻击脚本中找一个不用/使用即可

<img%0Asrc=1%0Aοnmοuseοver=alert()>

level17

还是先测试

发现前后没什么区别,看wp发现是使用embed标签是 HTML 中的一个标签,用于在 HTML 文档中嵌入外部内容,如音频、视频、插件等。但是现在的版本已经不用embed标签了,所以点开它嵌入的图片是乱码,正确的解法是在这个图片中去构造弹窗payloadembed标签的使用方法和属性详解_<embed>-CSDN博客

?arg01=a&arg02= οnmοuseοver=alert()

level18

这题和上一题显然是一样的,本来以为是过滤会不一样,结果看wp就是一样的连payload都是一样的

level19

一样要在镶嵌入的图片里去发送payload

level20

同上


http://www.kler.cn/a/561340.html

相关文章:

  • 计算机视觉算法实战——异常检测(主页有源码)
  • OpenGL 03--顶点着色器、片段着色器、元素缓冲对象
  • 刷题日记5
  • 【TVM教程】为 NVIDIA GPU 自动调度神经网络
  • 【STM32】使用电打火器测试火焰传感器,去掉传感器LED依然亮
  • 使用torch.compile进行CPU优化
  • .NET Core MVC IHttpActionResult 设置Headers
  • IDEA-插件开发踩坑记录-第五坑-没有飞机场导致无法访问GITHUB导致的讨厌问题
  • 【深度学习神经网络学习笔记(一)】深度学习介绍
  • 在vite上使用tailwindcss详细教程(不报错)
  • [C++][cmake]使用C++部署yolov12目标检测的tensorrt模型支持图片视频推理windows测试通过
  • Go语言--语法基础3--下载安装--Linux基础操作命令
  • 图神经网络:拓扑数据分析的新时代
  • DeepSeek AI智能运营:重构企业效率的范式革命
  • kafka数据拉取和发送
  • BUU41 [GYCTF2020]FlaskApp1【SSTI】
  • TSMaster【第十四篇:弹指神通——自动化测试框架】
  • [ Android实战 ] selinux “域继承“的方案(通过属性机制实现)
  • 突破性能极限:DeepSeek开源FlashMLA解码内核技术解析
  • 网卡与网口全解析:从基础到Linux高级管理