xss-labs初学者通关详解1-18

这篇具有很好参考价值的文章主要介绍了xss-labs初学者通关详解1-18。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

很久的一篇文章

有错误请指正~

目录

xss漏洞

 level1-无过滤机制

level2-闭合标签

 level3-单引号闭合+添加事件

 level4-双引号闭合+添加事件

level5-新建标签

​level6-大小写绕过

 level7-双写绕过

level8-编码绕过

​level9-检测关键字

level10-隐藏信息

​level-11Referer信息

 level-12user-agent信息

 level3-cookie信息

level14-exif xss

level15-ng-include属性

 level16-空格实体转义

level17-参数拼接

level18-参数拼接


xss漏洞

xsslabs,初学者靶场通关,xss,安全,web安全

 xsslabs,初学者靶场通关,xss,安全,web安全

 非持久性

get​xsslabs,初学者靶场通关,xss,安全,web安全

 持久性
post
先存储再拿出的一个过程
​  ​xsslabs,初学者靶场通关,xss,安全,web安全

 前端直接发送给前端​xsslabs,初学者靶场通关,xss,安全,web安全

xsslabs,初学者靶场通关,xss,安全,web安全 xsslabs,初学者靶场通关,xss,安全,web安全

 level1-无过滤机制

 get型注入
传入name的值会在页面产生回显
如果我们修改test值显示的值也会被修改xsslabs,初学者靶场通关,xss,安全,web安全

它向服务器提交了一个name参数,值为"test"
从页面回显看将name参数的值显示在了页面上,并且显示了name参数值得字符长度

xsslabs,初学者靶场通关,xss,安全,web安全

他是没有任何防护的所以我们在test这个地方插入js语句他就会被执行
查看源码。xsslabs,初学者靶场通关,xss,安全,web安全

 从源码可以看出,箭头1将从服务器获得的name参数的值赋值给str变量,箭头二又将str变量直接插入到<h2> </h2>标签之间
因此服务器并没有对name参数的值进行严格的管理,并且这个值还是用户可控的,所以存在反射型xss漏洞
将name参数重新赋值  ​

 xsslabs,初学者靶场通关,xss,安全,web安全

 成功​

level2-闭合标签

从url看还是get方式传递参数应该还是反射型xss
这关加入了输入框和搜索

xsslabs,初学者靶场通关,xss,安全,web安全

 查看网页源码​

xsslabs,初学者靶场通关,xss,安全,web安全

  从源码来看,它的功能就是通过点击“搜索”按钮,将输入框内的内容以get方式提交给服务器上的level2.php
经过服务器的动态处理之后又会将参数keyword的值插入到<h2> </h2>标签之中以及添加到<input>标签中的value属性的值内。
尝试使用上一关的恶意语句弹窗报错  ​

xsslabs,初学者靶场通关,xss,安全,web安全

再次查看网页源码​

xsslabs,初学者靶场通关,xss,安全,web安全

 可以看到在<h2>标签中的恶意代码被转义了,盲猜在服务器端用 htmlspecialchars() 函数对 keyword 参数的值进行了处理。
接着可以看到插入到 value 参数中的恶意代码并没有被转义而是直接原样返回的,那么就从这里入手,要想程序在这里执行弹窗代码,只需要将属性的标签闭合就可以了,输入 "><script>alert(1)</script>  ​

xsslabs,初学者靶场通关,xss,安全,web安全

 成功弹窗​xsslabs,初学者靶场通关,xss,安全,web安全

 level3-单引号闭合+添加事件

还是先尝试一下基本的弹窗代码​

xsslabs,初学者靶场通关,xss,安全,web安全

 没有成功
查看一下网页源码  ​

xsslabs,初学者靶场通关,xss,安全,web安全

 发现两处都将<,>转义了。猜测服务器端在这两处都用htmlspecialchars()函数进行了处理
浏览器中有一些事件可以执行js代码,这里可以使用onclick事件
观察源代码为单引号闭合,把value闭合掉构造playload
'οnclick='javascript':alert(1)'
在提交后,没有立刻弹出这里还需要点一下文本框让事件触发

xsslabs,初学者靶场通关,xss,安全,web安全

xsslabs,初学者靶场通关,xss,安全,web安全

成功通过
或者用其他事件
level3.php?keyword='οnfοcus=javascript:alert('xss') > //&submit=搜索

xsslabs,初学者靶场通关,xss,安全,web安全

 xsslabs,初学者靶场通关,xss,安全,web安全

xsslabs,初学者靶场通关,xss,安全,web安全

 level4-双引号闭合+添加事件

还是尝试弹窗​

xsslabs,初学者靶场通关,xss,安全,web安全

 上方显示位没有什么变化但是下方搜索框中的<,>标签都被过滤了
查看网页源码xsslabs,初学者靶场通关,xss,安全,web安全

 对上方显示位仍猜测是 htmlspecialchars 函数处理,下方显示位应该是用函数替换掉了删除了,并且下方的闭合标签为双引号。那么仍使用上关的思路,用事件触发。事件触发不需要使用<>
构造payload:" οnclick='javascript:alert(1)'

xsslabs,初学者靶场通关,xss,安全,web安全

 成功通过
查看文件源码  ​xsslabs,初学者靶场通关,xss,安全,web安全

 第二个显示位经过两个str_replace()函数对<>进行了过滤
但是不够全面从而存在xss隐患

level5-新建标签

同样先按照原来方法测试弹窗​

xsslabs,初学者靶场通关,xss,安全,web安全

 弹窗失败
上方显示位没有什么变化,下方显示位从<script>变为了<scr_ipt>
查看网页源码  ​

xsslabs,初学者靶场通关,xss,安全,web安全

 上方显示位应该还是 htmlspecialchars 处理,搜索框中的 payload 可能是匹配到关键字进行的替代。
用事件来试一下,闭合标签仍然是双引号  ​

xsslabs,初学者靶场通关,xss,安全,web安全

 弹窗同样失败右键查看网页源码​

xsslabs,初学者靶场通关,xss,安全,web安全

发现on变成了o_n猜测后台对on进行了过滤替换成了o_n
这样的话带on的事件就不能用了
尝试用大小写绕过测试一下代码

xsslabs,初学者靶场通关,xss,安全,web安全

 无法绕过绕过失败全变成了小写
这里应该还应用了转小写的函数
此处既然无法通过 <script> 标签和事件来执行js代码的话,那么可以换一个标签来执行js代码,使用新标签要先闭合<input>标签。
构造代码:"><a href=javascript:alert(1)>xss</a>  ​

xsslabs,初学者靶场通关,xss,安全,web安全

 点击一下侧面的链接就Ok了​xsslabs,初学者靶场通关,xss,安全,web安全

 查看一下网页源码​xsslabs,初学者靶场通关,xss,安全,web安全

 可以看到链接成功嵌入

​查看文件源代码 ​

xsslabs,初学者靶场通关,xss,安全,web安全

 确实对on和<script>进行了过滤也用strtolower函数对大小写进行了过滤

​level6-大小写绕过

​用前面机关的方式测试​

xsslabs,初学者靶场通关,xss,安全,web安全

 xsslabs,初学者靶场通关,xss,安全,web安全

 xsslabs,初学者靶场通关,xss,安全,web安全都不可以弹窗

​发现script onclick href 都被过滤了。查看一下源码

xsslabs,初学者靶场通关,xss,安全,web安全

 从源码来看,服务器端做的防范措施比我们想的要多
箭头1:将get方式传递到服务器端的keyword参数的值赋值给str变量。
箭头2:用字符<script去匹配我们提交的参数值,如果匹配到了就进行替
换来破坏原来的语义导致无法实现xss。
此处能够防范的是<script> </script>这一类的恶意代码。
箭头3:可以看到是用字符on去匹配参数值,如果匹配到了就进行替换
破坏原有语义。
这里主要防范的是利用带有on字符的事件来触发恶意代码
比如前面用到过的onfocus事件。

​箭头4:可以看到是用字符src去进行匹配
得提到<img>标签了。
熟悉html的人都会知道在<img>标签中引用图片会用到一个属性就是src。正常的引用图
片就是将待引用图片的地址赋值给src属性。但是在js中如果src属性的值不正常或者无法
访问到时就可以触发一个onerror事件来执行js代码。
<img>标签代码:?name=<img src=111 οnerrοr=alert('xss')>

​箭头5:用字符data进行匹配的,同上面一样该字符在之前的演示中也没有
出现过。现在一般有点XSS意识的管理员都懂得过滤javascript与script等关
键字。但是对于data的认识却并不多,也就很少有对它进行过滤的。
Data在我看来就是对字符进行编码的一种设定,比如如果在实际情况中
javascript、script等关键字被过滤掉了之后,可以用如下语句进行尝试
data:text/html;base64,PHNjcmlwdD5hbGVydCgieHNzIik8L3NjcmlwdD4=
这条语句和javascript:alert("xss") 或者 <script>alert("xss")</script> 的作用是一样的。

箭头6:可以看到是用<a> </a>标签中的字符href来进行匹配了,防止的
就是通过在href属性中插入js代码来点击执行。
箭头7:用htmlspecialchars()函数对变量str进行处理后显示到网页上。
箭头8:直接将str变量值插入到了标签的value属性值中
xsslabs,初学者靶场通关,xss,安全,web安全
  ​成功弹窗​

 level7-双写绕过

还是先用老方法测试一下​xsslabs,初学者靶场通关,xss,安全,web安全

 发现script被过滤了
尝试一下大小写绕过同样被过滤
尝试"οnclick='javascript:alert(1)'xsslabs,初学者靶场通关,xss,安全,web安全

 on也被过滤了大小写同样不行
尝试"><a href=javascript:alert(1)>xss</a>xsslabs,初学者靶场通关,xss,安全,web安全

 xsslabs,初学者靶场通关,xss,安全,web安全

 href也被过滤了
查看后台源码  ​xsslabs,初学者靶场通关,xss,安全,web安全

 对参数值转换成了小写
然后将基本的关键字都删去,但是他只执行了一次所以可以通过双写绕过
有敏感字符去除所以可以双写绕过  ​xsslabs,初学者靶场通关,xss,安全,web安全

 成功弹窗​

level8-编码绕过

xsslabs,初学者靶场通关,xss,安全,web安全

 查看网页源码
提交的参数值一个会插入到<input>标签的value属性值中,
一个会插入到下方<a>标签的href属性值中。  ​

xsslabs,初学者靶场通关,xss,安全,web安全

 <>被编码了
在href属性值中script字符也被插入了_字符破坏语义

xsslabs,初学者靶场通关,xss,安全,web安全

 "也被编码了
on也被破坏
大小写绕过失败
试试编码
程序将script变为scr_ipt所以可以对r和i编码(也可以将script都编码)
将ri转化为html实体编码(10进制或者16也可以使用url编码等其他网页语言)  ​

xsslabs,初学者靶场通关,xss,安全,web安全

 xsslabs,初学者靶场通关,xss,安全,web安全

​弹窗成功
查看源码  ​

xsslabs,初学者靶场通关,xss,安全,web安全

 过滤了许多
没有敏感字符去除不能双写绕过

​level9-检测关键字

和上一关一样先尝试一下失败​

xsslabs,初学者靶场通关,xss,安全,web安全

 查看网页源码​

xsslabs,初学者靶场通关,xss,安全,web安全

 有文字
看一下后台代码  ​

xsslabs,初学者靶场通关,xss,安全,web安全

 和上一关相比多了strpos函数
此函数的意思是输入的字符串内必须有http://字符
我们可以给他加上然后注释掉
//http://

xsslabs,初学者靶场通关,xss,安全,web安全

 通过​

level10-隐藏信息

我们看到第十关没有输入框了所以我们在url栏里输入​

xsslabs,初学者靶场通关,xss,安全,web安全

 先用老方法尝试一下​

xsslabs,初学者靶场通关,xss,安全,web安全

 无法弹窗
查看一下网页源码  ​

xsslabs,初学者靶场通关,xss,安全,web安全

 在源码中有一个隐藏的表单其中含有t_link t_history t_sort这样三个隐藏的<input>标签
现在不仅能给keyword传参还能给三个input传参
先尝试一下给三个input传参

xsslabs,初学者靶场通关,xss,安全,web安全

 xsslabs,初学者靶场通关,xss,安全,web安全

 发现只有t_sort接受了我们传的参数
所以我们可以从t_sort下手同时想要使用这个标签就需要注视点后面原有的hidden类型
把他改为其他类型button或者type
因为过滤了<>所以我们用onclick事件

xsslabs,初学者靶场通关,xss,安全,web安全

 成功
查看后台源码

xsslabs,初学者靶场通关,xss,安全,web安全

​观察代码,如我们料想的那样,str 被 htmlspecialchars 过滤了,也只有 t_sort 接受参数值,对 t_sort 的过滤只有左右尖括号,所以注入显得很容易

​level-11Referer信息

查看网页源码​

xsslabs,初学者靶场通关,xss,安全,web安全

 可以发现这关隐藏了四个输入框然后第四个隐藏输入框t_ref已经有值存在还可以看出是第十关我们输入的playload
尝试老方法  
​  ​xsslabs,初学者靶场通关,xss,安全,web安全

 xsslabs,初学者靶场通关,xss,安全,web安全

 我们输入的代码应该被htmlspecialchars函数转义了
我们测试一下哪个输入框能传参  

xsslabs,初学者靶场通关,xss,安全,web安全
​  ​xsslabs,初学者靶场通关,xss,安全,web安全

 可以看到只有t_sort被赋值成功同时t_ref的值没有了尝试对t_sort的属性进行闭合​

 xsslabs,初学者靶场通关,xss,安全,web安全

 发现" 和>都被转义函数了
猜测还是htmlspecialchars函数过滤.双引号不能用就不能闭合标签去创造自己的事件。
前面记得t_ref是第十关palyload网址,而ref又可能是http头中的referer属性我们可以尝试抓包注入

xsslabs,初学者靶场通关,xss,安全,web安全

 修改referer属性传入值为1放包查看源码​xsslabs,初学者靶场通关,xss,安全,web安全

 t_ref的值变为了1,那我们就可以从这入手
尝试闭合value创造自己的事件放包

xsslabs,初学者靶场通关,xss,安全,web安全

 xsslabs,初学者靶场通关,xss,安全,web安全

 弹窗成功
查看后台源码  ​

xsslabs,初学者靶场通关,xss,安全,web安全

 可以看到 keyword 进行了 htmlspecialchars 处理,t_sort 参数也被 htmlspecialchars 处理再次赋给value,接受 HTTP_Referer 头部参数进行了除尖括号处理,只要没有特殊字符转义,没有双引号去除,那么这个标签的属性就可能是危险的。

xsslabs,初学者靶场通关,xss,安全,web安全

 level-12user-agent信息

xsslabs,初学者靶场通关,xss,安全,web安全

 xsslabs,初学者靶场通关,xss,安全,web安全

 四个隐藏框
t_ua联想到http请求头部的user-agent应该与上一题是一个类型
尝试抓包修改

xsslabs,初学者靶场通关,xss,安全,web安全

 xsslabs,初学者靶场通关,xss,安全,web安全

 放包​

xsslabs,初学者靶场通关,xss,安全,web安全

 成功弹窗
查看后台源码

xsslabs,初学者靶场通关,xss,安全,web安全

跟上一关一样
想让我们了解不同的注入位置

xsslabs,初学者靶场通关,xss,安全,web安全

 level3-cookie信息

xsslabs,初学者靶场通关,xss,安全,web安全

 

 还是四个隐藏框
t_cook可能是cookie
抓包仍然是相同的方式

xsslabs,初学者靶场通关,xss,安全,web安全

 给user赋cookie值构造payload(试试test)​

xsslabs,初学者靶场通关,xss,安全,web安全

 查看后台源码​

xsslabs,初学者靶场通关,xss,安全,web安全

 可以看到设置了一个cookie,user : call me maybe?,keyword 和 t_sort 都经过 htmlspecialchars 函数处理,cookie 只有标签去除,没有其他过滤,一样的注入,同上。

xsslabs,初学者靶场通关,xss,安全,web安全

 xsslabs,初学者靶场通关,xss,安全,web安全

level14-exif xss

xsslabs,初学者靶场通关,xss,安全,web安全

 xsslabs,初学者靶场通关,xss,安全,web安全

 查看源码通过iframe标签引入了一个网址但是打不开
我们可以自己写一个简单的放在 本地服务器上引用对应的url就行
同时需要打开php_exif开关

level15-ng-include属性

xsslabs,初学者靶场通关,xss,安全,web安全

 查看源码
看到src的参数在这儿显示了
还有ng-include
ng-include的用法:
ng-include 指令用于包含外部的 HTML文件。
包含的内容将作为指定元素的子节点。
ng-include 属性的值可以是一个表达式,返回一个文件名。
默认情况下,包含的文件需要包含在同一个域名下。

值得注意的是:
如果单纯指定地址,必须要加引号
加载外部html,script标签中的内容不执行
加载外部html中含有style标签样式可以识别
可以包含同一域名的 html 文件,那也就是说可以包含之前做过的有xss漏洞的文件,但是不能执行script中的代码.
?src='level1.php?name=<img src=1 οnerrοr=alert(1)>'    ​xsslabs,初学者靶场通关,xss,安全,web安全

 xsslabs,初学者靶场通关,xss,安全,web安全

 level16-空格实体转义

老方法先测试​

xsslabs,初学者靶场通关,xss,安全,web安全

xsslabs,初学者靶场通关,xss,安全,web安全

 发现script和/被替换成了&nbsp;(空白符)
尝试一下不带script和/的payload

xsslabs,初学者靶场通关,xss,安全,web安全

 查看源码发现空格也被替换了可以使用其他方法代替空格
在html换行可以代替空格
使用url编码将回车转换为%0d或者换行符%0a替代
<img%0dsrc=1%0dοnerrοr=alert(1)>xsslabs,初学者靶场通关,xss,安全,web安全

 成功弹窗
查看后台源码

xsslabs,初学者靶场通关,xss,安全,web安全

 对关键字进行了空白实体代替​

level17-参数拼接

xsslabs,初学者靶场通关,xss,安全,web安全

 这题图也没有点连接直接进下一关了
查看一下网页源码  ​xsslabs,初学者靶场通关,xss,安全,web安全

 从url框内看到是通过arg01和arg02两个参数进行传参传参之后对两个参数进行了拼接可以直接使用事件来触发
<embed>标签就是引入一个swf文件到浏览器端,并且它的src属性值没有添加引号,所以不用闭合
?arg01= onmouseover&arg02=alert(1)

xsslabs,初学者靶场通关,xss,安全,web安全

 由于图片加载不出来无法点击所以没办法使用onclick事件
onmouseover:(表示当鼠标移动到该标签上时就会触发执行某项动作)。

level18-参数拼接

与上一关一致​文章来源地址https://www.toymoban.com/news/detail-735569.html

到了这里,关于xss-labs初学者通关详解1-18的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【STM32】初学者必读STM32时钟系统详解

    目录 1 前言 2 时钟系统介绍 3 时钟源 3.1 系统时钟源 3.2 次级时钟源 3.3 时钟源特点 4 时钟 4.1 AHB总线时钟 4.2 APB1总线时钟 4.3 APB2总线时钟 5 时钟控制器 6 CubeMx配置时钟系统 6.1 选择单片机型号 6.2 选择时钟源 6.3 配置系统时钟 6.4 时钟系统初始化代码 7 结论         STM32的时

    2024年02月08日
    浏览(44)
  • 什么是SSH协议?初学者指南详解SSH协议

    SSH又称为“安全外壳协议”(Secure Shell),是一种加密的网络传输协议,提供了一个在网络中安全地远程连接到其他计算机和设备的方法。SSH协议通过使用加密技术创建安全的隧道,保障了数据在传输过程中的安全性和完整性。 在互联网通信时代的初期,通信内容都是明文传

    2024年04月12日
    浏览(28)
  • 【C语言】代码实现 扫雷 游戏及进阶功能(初学者详解)

    扫雷游戏的起源可以追溯到20世纪60年代,当时这款游戏是由IBM开发出来的。在80年代初,微软公司将其收归旗下,并将其作为Windows操作系统自带的一款游戏。自此以后,扫雷成为了Windows用户最喜欢的休闲游戏之一,也受到了全球范围内的玩家喜爱。 现在,我们使用C语言,来

    2024年01月20日
    浏览(40)
  • docker常用命令详解(图文结合纯干货,适用于初学者)

    docker最常用命令 1.docker 或 docker --help #查看docker自带的帮助信息(里面内容对初学者十分不友好) 启动类命令 systemctl start docker #启动docker systemctl stop docker #停止docker systemctl restart docker #重启docker systemctl status docker #查看docker状态 systemctl enable docker #将docker设为开机自启动 3.d

    2024年02月08日
    浏览(33)
  • 详解 matplotlib.pyplot ,Python 初学者真能看懂

    Matplotlib 是一个 Python 中的 2D 绘图库, pyplot 模块是一个方便使用 Matplotlib 的接口。 下面是 pyplot 模块中的五个重要的知识点: 【创建图形】: pyplot 模块提供了许多简单易用的函数来创建图形,如 plot、scatter、bar、hist 等。这些函数可以绘制不同类型的图形,例如散点图、折

    2024年02月02日
    浏览(38)
  • 【Git】git常用命令大全(初学者必看!!最强详解!!)

    目录 初学者在使用之前,需要对git有一个初步的认知 什么是git 常用命令 1、创建仓库 2、克隆远程仓库 3、查询文件状态 4、 添加文件到暂存区 5、 添加所有文件到暂存区 6、 提交暂存区文件到本地建的仓库 7、拉取远程仓库的变更 8、推送本地仓库的变更到远程仓库 9、 查看

    2024年02月10日
    浏览(33)
  • 【MySQL】MySQL视图详解,打通MySQL初学者任督二脉

    🧑‍💻作者名称:DaenCode 🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。 😎人生感悟:尝尽人生百味,方知世间冷暖。 📖所属专栏:重温MySQL 相信很多MySQL初学者对于其中视图的认知还是很模糊,然而MySQL视图的重要性不言而喻。无论是在学校考试还

    2024年02月16日
    浏览(31)
  • [网络安全]xss-labs 本地靶场搭建详细教程

    本文以phpstudy搭建xss-labs本地靶场环境 PhpStudy是一个PHP调试环境的程序集成包,集成最新的Apache、PHP、MySQL、phpMyAdmin、ZendOptimizer,安装后无须配置即可使用。 官网安装地址: PhpStudy Download 链接 安装完成后打开PhpStudy 网站配置如下: xss-labs 靶机下载地址: https://github.com/do0d

    2024年02月08日
    浏览(33)
  • web靶场——xss-labs靶机平台的搭建和代码审计

    目录 一、web靶场-xss-labs靶机平台的搭建 1、将下载好的压缩包放置php的WWW根目录下 2、配置网站 3、启动MYSQL和Nginx 4、完成后我们就可以在浏览器输入127.0.0.1:8088进入靶场 二、xss-labs靶场通关攻略 第一关: 1、输入代码进行测试:源代码 我们直接将参数插入标题试一试 第二关

    2024年02月04日
    浏览(44)
  • Groovy初学者指南

    本文已收录至Github,推荐阅读 👉 Java随想录 微信公众号:Java随想录 目录 摘要 Groovy与Java的联系和区别 Groovy的语法 动态类型 元编程 处理集合的便捷方法 闭包 运算符重载 控制流 条件语句 循环语句 字符串处理 字符串插值 多行字符串 集合与迭代 列表(List) 映射(Map) 迭代器

    2024年02月05日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包