freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

XSS-LABS解析
Deutsh 2022-09-29 17:00:43 109731
所属地 江西省

Level2

通过输入信息提交查看源码发现提交的信息会被双引号括住,于是想到闭合前后语句

<input name=keyword value="2">

11.png
首先闭合前面

2">后为 <input name=keyword value="2"><script>alert(1)</script>>

在闭合后面

<"后为 <input name=keyword value="2"><script>alert(1)</script><"">

成功payload

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

image.png

Level3

根据输入看源码,发现输入的内容还是会被嵌入HTML标签中,所以直接尝试Level2中的payload,发现无法触发,此时观察源码,发现<>被转义过滤

12image.png
于是尝试构造onclick事件进行触发触发

成功payload

1' onclick=alert(1)//

1' onclick='alert(1)

13image.png

Level4

进行常规的<script>alert(1)</script>测试时,通过看源码,发现<>被直接过滤掉

14image.png
我们可以直接采用上题的payload即可,稍微改一下闭合即可

成功payload

1" onclick="alert(1)

15image.png

当然也可以采取另外一个事件 onmouseovser当鼠标移动到图片时便会执行

1" onmouseover="javacript:alert(1)
16image.png

Level5

该题开始依旧尝试<script>alert(1)</script>,根据得到的源码可以看出对script进行了过滤

17image.png

于是尝试和前2题类似的事件触发进行尝试try harder!" onclick="alert(1),发现依旧对o进行了过滤

18image.png

遂构造并利用a标签的href属性执行javascript:伪协议

javascript:这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行

成功payload

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

19image.png

Level6

依旧最初尝试,<script>alert(1)</script>,发现script依旧被过滤,且和上一题的过滤方式一致。

接下来尝试事件onclick
20image.png

可以看出on事件依旧被过滤,且和上次的方式一致

然后尝试<a href=

21image.png
果然,还是熟悉的过滤方式

成功payload

于是尝试通过大小写绕过

"><a HrEf="javascript:alert(1)成功绕过

22image.png

Level7

依旧最初尝试,<script>alert(1)</script>,发现源码中script全部被过滤掉
23image.png

于是首先想到的便是双写,果然成功绕过

成功payload

move up!"><scrscriptipt>alert(1)</scscriptript>//

24image.png

Level8

依旧最初尝试,<script>alert(1)</script>,发现源码中script依旧被scr_ipt转义

25image.png

观察拼接后的源码后,决定转换思路,之前基本都是在<input>标签内进行构造,这次通过观察发现<input>标签中较难构造且过滤严格,遂决定在“友情连接”处的href标签里进行构造,还是老方法,伪协议这次就不用闭合了直接用即可 javascript:alert(1)发现依旧被过滤

26image.png

成功payload

于是决定尝试进行HTML编码

javascript:alert(1)

编码后 &#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3a;&#x61;&#x6c;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29;

成功

27image.png

Level9

本题与上一题的结构类似,所以第一想到的也是在“友情连接”处的href标签中进行构造,但是当直接拼接进javascript:alert(1)时查看源码发现该代码已被过滤判为不合法URL不予拼接

28image.png

这里很有趣,https://www.baidu.com和www.baidu.com都都被判为不合法URL http://www.baidu.com 就合法了。。。可见该靶场以有年头


所以这里我们将合法的URL与编码后的javascript:alert(a)进行拼接

此处由于不熟悉如何拼接正常URL和编码后的javascript:alert(a),所以导致开始拼接方式错误无法执行

错误拼法

  • 编码后
    http://www.baidu.com&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3a;&#x61;&#x6c;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29;

  • 编码前
    www.baidu.comjavascript:alert(a)

正确拼法

  • 编码后
    &#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3a;&#x61;&#x6c;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29;//http://www.baidu.com

  • 编码前
    javascript:alert(1)//http://www.baidu.com

成功payload

&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3a;&#x61;&#x6c;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29;//http://www.baidu.com

29image.png

Level10

本题没有直接看是没有提交框input的,故尝试在GET参数部分尝试拼接经典的<script>alert(1)</script>并查看源码,不出以外的被转义编码了

30image.png

期间也尝试了类似于事件、href标签之类的发现都被过滤了,于是觉得拼接的地方可能不是这里,此时注意到了下面的input标签,但由于其type="hidden"表明是一个隐藏表单,所以不会显示处提交栏,此时我们尝试在GET请求的参数中携带t_link``t_history``t_sort看看是否可以为其value赋值,果然经过尝试,只有t_sort赋值成功

view-source:http://172.16.12.153:83/level10.php?keyword=1&t_sort=1

31image.png

故决定在此进行构造

成功payload

接着在此处尝试<script>alert(1)</script>,发现<>没有被转义编码,而是直接过滤了

32image.png

所以表示此处不能拼接<>进行闭合,故尝试事件的构造触发,直接尝试onclick,但由于onclick需要被点击触发,而作为隐藏表单时,是没有提交框的,所以我们首先想到的是修改type="text"

1"&t_sort=1" type="text" onclick="alert(1)

33image.png
成功

34image.png

Level11

本题同样看见隐藏提交表单,与上题一样尝试是否可以GET进值,发现无效

35image.png

其余的依旧被过滤,由于可能靶机有点小问题:t_ref的value多次提交都没有值,遂查了一下,重新启动了一下虚拟机,t_ref中才出现值,可以看出t_ref隐藏表单提交中的值为Referer的值
36image.png

原GET请求中是没有显示的提交Referer这个参数的

37image.png

需要我们手动添加,我们添加Referer并添加一个值做一个测试

38image.png

发现,果然,Referer处的值会被就是隐藏表单提交的值

于是我们在此处进行构造即可

成功payload

Referer:1" type="text" onclick="alert(1)

39image.png

Level12

由于上题构造的位置出现在Referer处,所以我们这次直接提交请求查看返回的HTML

40image.png

果然看出这次出现在了t_ua参数处,由后面的值可以判断出是直接获取了UA的值

成功payload

User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0" type="text" onclick="alert(1)

41image.png

Level13

我们继续直接提交观察隐藏表单,发现这次出现了一个新的input项t_cook,根据名称我们猜测为**cookie**
42image.png

放到Reperter模块,果然此次请求后会返回Set-cookie,复制其中的cookie,带上cookie我们再次发出请求,果然出现在**t_cook**的value

43image.png

成功payload

按照上次的直接构造即可

cookie:user=call+me+maybe%3F" type="text" onclick="alert(1)

44image.png

Level14

本题看网上师傅说考察的是exif xss漏洞,一般利用于文件上传的地方,最经典的就是头像上传,上传一个图片,该图片的exif元数据被修改为xsspayload,成功利用弹框

但由于原网站已经失效,所以没法尝试了,遗憾

45image.png

Level15

见本网站的文章

XSSLab-level15 | De4tsh

Level16

本题上来还是一如既往的先看源码,由于没有发现什么有用处或可疑的字段,故接着老实尝试<script>alert(1)</script>,发现script被转义,于是转去尝试构造事件<img src=x onerror=alert(1)>,通过源码看出貌似有戏,因为只有空格被转义了,关键字并没有

46image.png

于是想到做sqlab时可以用%0a代替空格,故作尝试,果然成功触发XSS

成功payload

<img%0asrc=x%0aonerror=alert(1)>
47image.png

# 网络安全 # web安全
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 Deutsh 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
WEB安全相关
Deutsh LV.5
欢迎来我的博客 www.shtwo.top
  • 45 文章数
  • 36 关注者
File Structure 基础 && PUTS 流程分析
2023-01-30
Linux 堆内存结构分析(中)| PWN
2022-12-30
Canary补充 - TLS && Canary原始值在内存中的位置
2022-12-21
文章目录