XSSchallenge:1-13 过关练习

文章目录

  • 前言:
  • Level 1
  • Level 2
  • Level 3
  • Level 4
  • Level 5
  • Level 6
  • Level 7
  • Level 8
  • Level 9
  • Level 10
  • Level 11
  • Level 12
  • Level 13

前言:

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

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

Level 1

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

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

输入终极测试代码后,查看页面源代码,发现毫无过滤,直接使用简单的弹窗命令
XSSchallenge:1-13 过关练习_第1张图片
XSSchallenge:1-13 过关练习_第2张图片

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

XSSchallenge:1-13 过关练习_第3张图片

Level 2

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

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

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

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

XSSchallenge:1-13 过关练习_第5张图片

Level 3

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

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

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

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

XSSchallenge:1-13 过关练习_第6张图片
由于尖角号被过滤掉了,就不能使用尖角号来构造弹窗代码了。
可以使用 事件响应 进行弹窗操作。

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

XSSchallenge:1-13 过关练习_第7张图片

Level 4

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

不难发现

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

XSSchallenge:1-13 过关练习_第8张图片
那还是和Level 3过关代码一致,只不过单引号要换成双引号

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

XSSchallenge:1-13 过关练习_第9张图片

Level 5

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

可以看出

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

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

XSSchallenge:1-13 过关练习_第10张图片

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

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

XSSchallenge:1-13 过关练习_第11张图片
XSSchallenge:1-13 过关练习_第12张图片

Level 6

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

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

XSSchallenge:1-13 过关练习_第13张图片

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

XSSchallenge:1-13 过关练习_第14张图片

Level 7

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

不难发现

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

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

XSSchallenge:1-13 过关练习_第15张图片

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

XSSchallenge:1-13 过关练习_第16张图片

Level 8

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

不难发现

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

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

XSSchallenge:1-13 过关练习_第17张图片
XSSchallenge:1-13 过关练习_第18张图片

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

XSSchallenge:1-13 过关练习_第19张图片
XSSchallenge:1-13 过关练习_第20张图片

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

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

XSSchallenge:1-13 过关练习_第21张图片
XSSchallenge:1-13 过关练习_第22张图片

Level 9

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

可以发现

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

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

XSSchallenge:1-13 过关练习_第23张图片

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

javascript:alert(/zeus/)

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

XSSchallenge:1-13 过关练习_第24张图片
XSSchallenge:1-13 过关练习_第25张图片

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

http://www.baidu.com

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

XSSchallenge:1-13 过关练习_第26张图片

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

XSSchallenge:1-13 过关练习_第27张图片

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

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

XSSchallenge:1-13 过关练习_第28张图片

http://			// 第三次测试

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

XSSchallenge:1-13 过关练习_第29张图片
XSSchallenge:1-13 过关练习_第30张图片

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

XSSchallenge:1-13 过关练习_第31张图片

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

XSSchallenge:1-13 过关练习_第32张图片

Level 10

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

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

XSSchallenge:1-13 过关练习_第33张图片
XSSchallenge:1-13 过关练习_第34张图片

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

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

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

XSSchallenge:1-13 过关练习_第35张图片
XSSchallenge:1-13 过关练习_第36张图片

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

XSSchallenge:1-13 过关练习_第37张图片

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

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

XSSchallenge:1-13 过关练习_第38张图片

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

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

XSSchallenge:1-13 过关练习_第39张图片

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

XSSchallenge:1-13 过关练习_第40张图片

Level 11

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

IPT>OonN'"\/(hrHRefEF)IPT>

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

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

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

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

t_ref 接收到了参数的传递

XSSchallenge:1-13 过关练习_第45张图片

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

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

XSSchallenge:1-13 过关练习_第46张图片

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

XSSchallenge:1-13 过关练习_第47张图片

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

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

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

XSSchallenge:1-13 过关练习_第48张图片
XSSchallenge:1-13 过关练习_第49张图片

Level 12

直接进入正题。

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

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

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

将数据包发给重发器

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

尖角号		被过滤

XSSchallenge:1-13 过关练习_第51张图片

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

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

XSSchallenge:1-13 过关练习_第52张图片
第一步,修改User-Agent 内容,再点击Forward 进行放包。
XSSchallenge:1-13 过关练习_第53张图片
XSSchallenge:1-13 过关练习_第54张图片

Level 13

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

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

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

XSSchallenge:1-13 过关练习_第56张图片

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

XSSchallenge:1-13 过关练习_第57张图片
XSSchallenge:1-13 过关练习_第58张图片
XSSchallenge:1-13 过关练习_第59张图片

你可能感兴趣的:(web安全)