XSSchallenge:1-13 过关练习

前言:

xsschallenges是一个专对于XSS漏洞练习的靶场,包含了各种绕过。适合小白进行练习,比如我自己。

此链接是xsschallenge在线靶场:欢迎来到XSS挑战 (tesla-space.com)

Level 1

第一关使用get请求方式,直接在URL上进行注入命令

<sCr<ScRiPt>IPT>OonN'"\/(hrHRefEF)</sCr</ScRiPt>IPT>
    //终极测试代码
    使用终极测试代码,查看有无过滤

输入终极测试代码后,查看页面源代码,发现毫无过滤,直接使用简单的弹窗命令
image-20230830204306552
image-20230830204233493

<script>alert('Zeus')</script>

image-20230830204531526

Level 2

还是照常,先使用终极测试代码,查看被过滤条件

<sCr<ScRiPt>IPT>OonN'"\/(hrHRefEF)</sCr</ScRiPt>IPT>

与第一关不同的是,该输入内容被放入input 标签中,但是任何参数都没有被过滤。
可以考虑闭合input 标签,构造弹窗命令
image-20230830204728234
使用"> 闭合value,在闭合input标签,再加上简单的弹窗命令

"><script>alert('Zeus')</script>

image-20230830205106775

Level 3

继续使用 终极测试代码,进行检查被过滤条件

<sCr<ScRiPt>IPT>OonN'"\/(hrHRefEF)</sCr</ScRiPt>IPT>

查看页面源代码,查看被过滤的条件有什么

可以发现
value 是 单引号闭合
尖角号		被实体化成	&lt;
双引号		被实体化成	&quot;

image-20230830205242859
由于尖角号被过滤掉了,就不能使用尖角号来构造弹窗代码了。
可以使用 事件响应 进行弹窗操作。

事件类型说明
window 事件对windows对象触发的事件
Form 事件HTML 表单内触发的事件
Keyboard 事件键盘事件
Mouse 事件鼠标事件
Media 事件由多媒体触发的事件
'onkeydown='alert(/Zeus/)
    
//  代码输入后,在输入框内 键盘按键按下,进行弹窗操作。
// 第一个单引号是为了闭合value,第二个单引号是为了跟后面的单引号配对,查看页面源代码可以看到。

image-20230830211020328

Level 4

还是先尝试终极源代码,查看页面源代码被过滤的条件

不难发现

尖角号			被过滤
其他的都没有被过滤。

image-20230830211320265
那还是和Level 3过关代码一致,只不过单引号要换成双引号

"οnkeydοwn="alert(/Zeus/)
   代码输入后,在输入框内 键盘按键按下,进行弹窗操作

image-20230830211628435

Level 5

使用终极测试代码,查看页面源代码,检查被过滤的条件

可以看出

关键字		    	被过滤了一次
大小写转化		   被过滤
on事件			被过滤了一次

可以看出超链接href 没有被过滤
这一关可以使用 JavaScript伪协议 进行弹窗操作

image-20230830211850117

使用 JavaScript伪协议 进行弹窗,需要闭合input 标签,构造 a标签

因为script 被过滤了一次,所以我们可以对关键字的字母进行转码,来绕过过滤。
"><a href='javas&#x63;ript:alert(/Zeus/)'>click me!</a>
    点击 'click me' 弹窗成功 
    
 字母 [c] 十六进制转换为 [&#x63;]

image-20230830212848932
image-20230830212933761

Level 6

继续使用终极测试代码,查看页面源代码,检查被过滤的条件

<sCr<ScRiPt>IPT>OonN'"\/(hrHRefEF)</sCr</ScRiPt>IPT>
    // 终极测试代码
不难发现
on事件		被过滤
其他都没有过滤
 
那我们就尝试简单弹窗代码
    "><script>alert(/Zeus/)</script>
 结果发现
    关键字		被过滤一次
    
结合第一次的过滤条件,我们可以使用 大小写转换进行绕过, 也可以使用其它方法绕过欧~

image-20230830214612893

大小写转换 绕过
"><sCRipt>alert(/Zeus/)</sCRipt>

image-20230830215546657

Level 7

第一步,使用 终极测试代码,观察页面源代码,检查被过滤条件。

不难发现

关键字			被过滤一次
双写			 被过滤一次

那我们就可以利用 双写 绕过进行弹窗操作

image-20230830215730111

"><scrscriptipt>alert(/Zeus/)</scrscriptipt>

image-20230830222140071

Level 8

还是尝试使用终极测试代码,通过页面源代码查看被过滤的条件

不难发现

尖角号			被实体化
大小写			被过滤
双引号			被过滤
关键字			被过滤一次

添加友情链接后,将鼠标放到友情链接,左下角显示的为路径,说明代码有误。

image-20230830224104882
image-20230830222827779

会发现通过输入框输入的代码,会上传到href超链接中 
那我们可以先尝试使用 正确的网址,看能否使用
发现是可以跳转的,点击友情链接,将直接跳转到百度

image-20230830223403238
image-20230830223454617

根据被过滤的条件,和href超链接,我们可以使用 JavaScript伪协议 来实现弹窗操作
因为关键字还被过滤了一次,所以我们需要将script进行转码

javas&#x63;ript:alert(/zeus/) 
    c ---十六进制转换------ &#x63; 
  发现是可以跳转的,说明成功了,点击友情链接,进行弹窗操作

image-20230830223914597
image-20230830224011710

Level 9

继续使用终极测试代码,通过页面源代码来查看被过滤的条件

可以发现

尖角号			被实体化
双引号 		被实体化
大小写			被修改

通过不同的代码输入,发现传递给href的值,都显示成 您的链接不合法?有没有!

image-20230831084540151

因为是a标签 所以我们先尝试使用 JavaScript伪协议 进行实验,能否看出些端疑

javascript:alert(/zeus/)

发现行不通,我们通过源代码看一眼,
可以发现 代码是没有问题的,但还是 链接不合法。

image-20230831085226601
image-20230831103724756

因为和第八题都有友情链接,那我们还是先输入一个正确的网址地址,看能否有其它不同地方。

http://www.baidu.com

发现是可以进行跳转的,那我们就不妨想一下,将正确的网址多次测试,看有什么效果

image-20230831090021434

/http://www.baidu.com/		// 第一次测试
	页面不提示 链接不合法了

image-20230831112916436

/http://www.baidu 		// 第二次测试

发现不完整的Baidu 网址,页面回显的也不是 链接不合法
    那我们不妨想一下,是不是http://  的原因

image-20230831113038987

http://			// 第三次测试

发现页面没有回显内容,那我们去页面源代码查看。
    
可以发现
    此处并不是之前所显示的 您的链接不合法
那我们就可以将 JavaScript伪代码 进行改造

image-20230831113225300
image-20230831113253492

javascript:alert(/zeus/)JavaScript伪代码 整体来判断,只有括号里的内容是可以进行修改。其它都不能够修改。
    那我们将伪代码修改为如下形式,进行测试
    
javascript:alert(/http:///)
    // 结果发现 script 关键字被修改了一次,那我们还是将其中的字符进行16进制编码转换,照常转化字符c 变成 &#x63;

image-20230831113748862

javas&#x63;ript:alert('http://')
                      
可以发现,成功绕过,此处括号里内容不能用/ 进行包含,会与http进行冲突,需要改用单引号。
    注:双引号被过滤

image-20230831151426760

Level 10

第十关发现是没有输入框的,不过从URL地址看,该页面的传输方式还是GET方式

我们查看页面的源代码。
可以发现,3个input标签被隐藏了,不过我们可以按下F12,将hidden修改为text,输入框就显示出来了

image-20230831152712015
image-20230831152935331

因为有三个变量,我们要尝试这三个变量是否可以传递参数。
改过三次测试,只有第三个 t_sort 可以进行传参

没有 Hackbar 工具可以从网页上下载破解版,或者直接在URL上进行测试

第一次测试,通过元素,查看页面源代码,发现value 没有收到参数

image-20230831164450526
image-20230831164541718

第二次测试,发现还是没有收到参数

image-20230831164826777

第三次测试
可以发现 value 可以收到参数传递

那我们的突破口就是第三个变量

image-20230831164934248

使用 终极测试代码,通过源代码,判断被过滤的条件

<sCr<ScRiPt>IPT>OonN'"\/(hrHRefEF)</sCr</ScRiPt>IPT>
    
不难发现
    尖角号<>			被过滤
    
    这一关算比较简单了

image-20230831165236736

构造一个事件相应
" onmouseover='alert(/Zeus/)' type="text
onmouseover事件:鼠标移动到元素的上方触发代码。

image-20230831170550977

Level 11

第十一、十二、十三关都是同一个类型的。
和第十关一样没有输入框,还是查看页面源代码
可以发现比第十关多了一个变量t_ref
image-20230831225004165
还是先测试每个变量能否传递参数
最后发现t_sort 是可以传递参数的
image-20230831225218884
那我们就先尝试第十关过关代码,试试效果

<sCr<ScRiPt>IPT>OonN'"\/(hrHRefEF)</sCr</ScRiPt>IPT>

不难发现
尖角号			被实体化
双引号			被实体化

尖角号被实体化不能构造代码
双引号 被实体化不能闭合input标签

所以只能寻求其他办法,这一关比上一关多出来一个 t_ref 的变量
ref 我们不妨想到referer,referer 是http 的请求字段,是当前URL的上一个URL字段
那我们就利用bp进行抓包,尝试是否和猜想一致。
那我们重新从第十关进入第十一关。
然后将抓到的包,发给重发器(快捷键:ctrl+r 或 右键)
image-20230901092627741
Referer是上一个URL的地址
image-20230901090156793
我们试着修改Referer 内容,看能否发生改变

可以看到,的确如我们所想

t_ref 接收到了参数的传递

image-20230831231247613

我们在从t_ref变量 中测试万能代码一次

<sCr<ScRiPt>IPT>OonN'"\/(hrHRefEF)</sCr</ScRiPt>IPT>
 
 不难发现,只有尖角号 被过滤掉了

image-20230901090102156

点击Render ,可以发现页面的确进行了修改
因为在Render 界面无法执行弹窗操作 
那我们就要利用bp的抓包,放包了。

image-20230901090810115

使用 事件相应,进行弹窗操作

" onmouseover='alert(/Zeus/)' type="text

先修改Referer 内容,再点击Forward 进行放包。

image-20230901103249979
image-20230901091031179

Level 12

直接进入正题。

查看第十二关页面源代码。

页面源代码t_ua变量,就可以想到User-Agent,正好value的值就是User-Agent。

image-20230901091354931
所以我们就可以跟第十一关的步骤一样:
先使用重发器,进行测试,判断t_ua 变量是不是User-Agent ,再进行代码输入,看页面是否进行了修改。然后在使用bp的抓包,放包,进行弹窗操作。
或者直接使用bp的抓包,放包,进行弹窗操作。

将数据包发给重发器

使用终极测试代码,查看被过滤的条件
<sCr<ScRiPt>IPT>OonN'"\/(hrHRefEF)</sCr</ScRiPt>IPT>

尖角号		被过滤

image-20230901093019997

使用 事态响应 进行弹窗
" οnkeydοwn='alert(/Zeus/)' type="text
// onkeydown :一个HTML元素事件属性,用于在用户按下键盘上的键时触发相应的JavaScript函数或代码。

可以发现,页面的确发生了改变,那我们就利用bp进行抓包,放包,确认弹窗操作

image-20230901093645751
第一步,修改User-Agent 内容,再点击Forward 进行放包。
image-20230901103310239
image-20230901093927592

Level 13

步骤:
查看页面源代码 → 判断变量能否传参 →利用重发器,判断页面能否进行接受代码传递 → 利用bp抓包、放包,执行弹窗操作。
因为和第十一关、第十二关同一类型。
第十三关使用的是Cookie 传参。
所以就直接判断过滤条件了。这里需要注意的是,value的值 是由user 进行传递的,所以我们需要再将代码输入到user里
image-20230901103324414

判断过滤条件
<sCr<ScRiPt>IPT>OonN'"\/(hrHRefEF)</sCr</ScRiPt>IPT>

可以看出,
单引号被过滤了

image-20230901103223843

" οnkeydοwn='alert(/Zeus/)' type="text
    
    页面发生了改变,这时使用bp进行。

image-20230901103526177
image-20230901103634449
image-20230901103658448

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值