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=" οnfοcus=javascript:alert() type="text"

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

同上

相关推荐
寻星探路7 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
崔庆才丨静觅8 小时前
hCaptcha 验证码图像识别 API 对接教程
前端
passerby60619 小时前
完成前端时间处理的另一块版图
前端·github·web components
掘了9 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
崔庆才丨静觅9 小时前
实用免费的 Short URL 短链接 API 对接说明
前端
崔庆才丨静觅10 小时前
5分钟快速搭建 AI 平台并用它赚钱!
前端
盟接之桥10 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
崔庆才丨静觅10 小时前
比官方便宜一半以上!Midjourney API 申请及使用
前端
Moment10 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端
崔庆才丨静觅10 小时前
刷屏全网的“nano-banana”API接入指南!0.1元/张量产高清创意图,开发者必藏
前端