loading...
XSS靶场实战一(1-10关)
Published in:2022-01-13 | category: CTF | 靶场

记录一下学习和打XSS靶场的一些思路和经验
当前靶场来源于GithubXSS-labs

0x01


看到url有参数可以尝试利用,修改参数,直接插入XSS语句

0x02



尝试将XSS语句插入输入框,发现没有效果,原因是这关插入的是在标签里,而第一关是在标签外。标签中的内容会直接输出不会被解析,需要加入”>完成闭合后再执行XSS语句。

1
><script>alert(1)</script>#


后面的#是为了注释掉>

0x03


使用上一关的payload,发现不行,打开F12查看。

发现是过滤了双引号,可以使用单引号闭合,发现html对value的内容进行了实体化编码

可以使用点击事件,构造payload
‘onclick=’alert(1)’

0x04


使用第三关的payload发现不行,查看源码

不仅对<>括号进行了过滤,而且还进行了htmlspecialchars()函数过滤。尝试不添加<>并根据input标签构造payload。

0x05


尝试上一关的payload,F12查看,发现这关对on进行了过滤,尝试大小写,仍然不行。

试试最原始的方法插入>查看结果

发现没有屏蔽掉>闭合,尝试构造payload

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


发现有个类似超链接的>,尝试点击。

0x06


尝试使用上一关的payload,结果当然是失败的,看看失败原因

发现对href进行了过滤,使用大小写混合,尝试一下结果。

1
/><a hREf='javascript:alert(1)'>


0x07


使用第六关的payload发现没有效果,F12查看内容

发现是过滤了href、script字符

在偶然的尝试中发现通过复写html事件的敏感字符可以绕过,尝试插入复写的XSS的payload

1
"/><scrSCRIPTipt>alert(1)</scrSCRIPTipt>

onclick等html事件也可以绕过

0x08


输入123,点击按钮,发现跳转到名为123的页面,实际上就是url的跳转。
试试使用

1
javascript:alert(1)

发现系统过滤了script字符,使用复写,发现也被过滤了

试试将payload编码

成功弹窗

0x09


继续使用上一关的百度链接,发现返回错误提示

尝试随便输入字符123

仍然不行,尝试加入http或者https,发现http可以生成链接https不行

查看源码发现加入了php的strpos函数,该函数的作用是对该字符串进行目的字符的搜索,若搜索不到则出现错误页面。
payload仍然使用上一关进行unicode编码,

尝试在unicode编码后的payload加入http://

发现可以成功转成我们想要的payload,但是有一个http的阻挡,仍然不成功。只需在http前面加入一个//

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

0x10


这关发现好像没有可以注入的点,打开F12,查看有参数keyword,尝试从url注入。同时发现了隐藏的输入框,并附带各自的参数。



尝试输入参数变量,查看页面返回的结果。

1
http://192.168.1.106/xss-labs/level10.php?keyword=123&t_link=1&t_history=2&t_sort=3


发现sort变量的3被填入页面,猜测可能是sort有注入点,尝试插入XSS语句

1
http://192.168.1.106/xss-labs/level10.php?t_sort=3"onclick="alert(1)"

但是好像没有变化,可能是隐藏属性影响了语句的执行,因为需要通过点击,但是页面是不显示输入框,所以无法点击,在url后面写入 type=text

点击输入框

Prev:
靶场实战之BugKu(WEB)
Next:
文件上传靶场二(13-21关)
catalog
catalog