学逆向论坛

找回密码
立即注册

只需一步,快速开始

发新帖

2万

积分

41

好友

1157

主题
发表于 2021-3-25 11:27:08 | 查看: 2428| 回复: 0
                                                                 黑盒:xss挑战解题
  • 第1题
  • 第2题
  • 第3题
  • 第4题
  • 第5题
  • 第6题
  • 第7题
  • 第8题
  • 第9题
  • 第10题
  • 第11题
  • 第12题
  • 第13题
第1题  我这里使用的是本地xsschallenge,你也可以玩在线版的,地址
1: 打开xsschallenge,发现长这样

XSSchallenge(1-13题)

XSSchallenge(1-13题)

2: 点击一下图片,来到了第一题

XSSchallenge(1-13题)

XSSchallenge(1-13题)
3: 把test替换为
<sCr<scrscRiptipt>ipt>OonN\'\"<>
  来进一步检查到底有哪些东西会被替换

XSSchallenge(1-13题)

XSSchallenge(1-13题)

会发现文本没有被过滤,那就直接上xss
4:再次修改test的内容为
<script>alert(/xss/)</script>
  然后就通过第一关了
点击“确定”进入第2关

XSSchallenge(1-13题)

XSSchallenge(1-13题)

补充:一个作弊的方式,如何一口气通关所有关卡
在控制台输入javascript:alert(/xss/)

XSSchallenge(1-13题)

XSSchallenge(1-13题)
第2题  首先看到第二题长这个样子

XSSchallenge(1-13题)

XSSchallenge(1-13题)

1:先来万能模板试一把,把URL里的test替换为如下内容
URL里的内容
http://10.3.139.51/xsschallenge/level2.php?keyword=test
  被替换的test的内容
<sCr<scrscRiptipt>ipt>OonN\'\"<>
  可以观察到传进去的内容没有被过滤,只是变成了value的值,那么手动修改payload,让value闭合就行了

XSSchallenge(1-13题)

XSSchallenge(1-13题)

2:构造payload
 "><script>alert(/xss/)</script>
  通关

XSSchallenge(1-13题)

XSSchallenge(1-13题)

第3题  来一个<script " 'Oonn>

XSSchallenge(1-13题)

XSSchallenge(1-13题)

“检查元素”发现内容点奇怪,查看页面源代码

XSSchallenge(1-13题)

XSSchallenge(1-13题)

发现左右尖括号被编码了,但是单引号没有被转码!
输入以下内容'onmouseover='alert(/xss/)
第一个单引号是闭合前面的单号,第二个单引号是为了闭合后面的单引号,构造出事件驱动,此时“查看页面源代码”

XSSchallenge(1-13题)

XSSchallenge(1-13题)

当你把鼠标放在搜索框中时,会出现弹窗

XSSchallenge(1-13题)

XSSchallenge(1-13题)

第4题

XSSchallenge(1-13题)

XSSchallenge(1-13题)
  来一个<script " 'Oonn>
接着查看页面源代码

XSSchallenge(1-13题)

XSSchallenge(1-13题)

发现跟第3题没啥区别,把单引号换成双引号就OK
输入以下内容"onmouseover="alert(/xss/)
查看页面源代码

XSSchallenge(1-13题)

XSSchallenge(1-13题)

当你把鼠标放在搜索框时,nice

XSSchallenge(1-13题)

XSSchallenge(1-13题)

第5题

XSSchallenge(1-13题)

XSSchallenge(1-13题)
  来一个<script " 'Oonn>
接着查看页面源代码

XSSchallenge(1-13题)

XSSchallenge(1-13题)

下面来改造一下测试代码<script script " 'Oonn>
发现跟上一步的结果差不多,仍然是大写变小写,关键字中间过滤(过滤一次),没有过滤单双引号

XSSchallenge(1-13题)

XSSchallenge(1-13题)

重新构造一下payload,使用伪协议的方式来构造xss
"><a href = "javascript:alert:alert(/xss/)">click me</a>
  页面变成了这个样子

XSSchallenge(1-13题)

XSSchallenge(1-13题)

查看一下页面源代码

XSSchallenge(1-13题)

XSSchallenge(1-13题)

鼠标点击“click me”按钮,成功

XSSchallenge(1-13题)

XSSchallenge(1-13题)

第6题

XSSchallenge(1-13题)

XSSchallenge(1-13题)

来一个<script " 'Oonn>
接着查看页面源代码

XSSchallenge(1-13题)

XSSchallenge(1-13题)

发现没有做大小写过滤,没有过滤单双引号,只过滤了关键字
尝试第5题中的伪协议
"><a href = "javascript:alert:alert(/xss/)">click me</a>
  发现“click me”按钮不是一个链接

XSSchallenge(1-13题)

XSSchallenge(1-13题)

查看页面源代码,发现href被过滤了

XSSchallenge(1-13题)

XSSchallenge(1-13题)

记得前面没有过滤大小写,修改一下payload
"><a hREf = "javascript:alert:alert(/xss/)">click me</a>
  发现“click me”变成超链接了,有戏

XSSchallenge(1-13题)

XSSchallenge(1-13题)

鼠标点击一下,成功了

XSSchallenge(1-13题)

XSSchallenge(1-13题)

同样还是可以通过大小写策略,使用事件驱动方式触发xss
"Onmouseover="alert(/xss/)

XSSchallenge(1-13题)

XSSchallenge(1-13题)

综上,根据只要绕过大小写的策略,你可以写出如下payload
 1. "> <Script>alert(/xss/)</script>
 2. "> <img Src=666 OnError=alert(/xss/)>
 3. "><a hREf = "javascript:alert:alert(/xss/)">click me</a>
 4. "Onmouseover="alert(/xss/)
 ……
第7题

XSSchallenge(1-13题)

XSSchallenge(1-13题)

来一个<script " 'OOnn>
接着查看页面源代码

XSSchallenge(1-13题)

XSSchallenge(1-13题)

发现:
1:script被过滤了,on还剩一个,猜测只做一次关键字过滤
2:单双引号没有被过滤
那么复写关键字两次就行了,so easy
代码可以抄上一题的,复写两次就行,举个例子
"Oonnmouseover="alert(/xss/)

XSSchallenge(1-13题)

XSSchallenge(1-13题)
第8题

XSSchallenge(1-13题)

XSSchallenge(1-13题)

来一个<script " 'Oonn>
接着查看页面源代码

XSSchallenge(1-13题)

XSSchallenge(1-13题)

首先考虑伪协议尝试绕过
javascript:alert(/xss/)
  当鼠标放在“友情链接”上时,发现左下角的URL不对劲

XSSchallenge(1-13题)

XSSchallenge(1-13题)

问题不大,对标签页属性进行16进制ASCII编码,再次尝试绕过
javascript:alert(/xss/)
  当鼠标放在“友情链接”上时,左下角显示正常

XSSchallenge(1-13题)

XSSchallenge(1-13题)

成功过关

XSSchallenge(1-13题)

XSSchallenge(1-13题)

第9题

XSSchallenge(1-13题)

XSSchallenge(1-13题)

既然仍然是友情链接,先尝试上一题的答案
javascript:alert(/xss/)
  结果被提示链接不合法

XSSchallenge(1-13题)

XSSchallenge(1-13题)

那我就先写一个正确的链接
左下角果然提示正常

XSSchallenge(1-13题)

XSSchallenge(1-13题)

猜测一下,把payload里面的弹窗改为百度
javascript:alert('http://baidu.com')
  左下角貌似正常

XSSchallenge(1-13题)

XSSchallenge(1-13题)

顺利通过

XSSchallenge(1-13题)

XSSchallenge(1-13题)

第10题

XSSchallenge(1-13题)

XSSchallenge(1-13题)

把URL栏里面的keyword替换为<script " 'Oonn>

XSSchallenge(1-13题)

XSSchallenge(1-13题)

接着查看页面源代码:

XSSchallenge(1-13题)

XSSchallenge(1-13题)

发现,除了我们输进去的代码被二次编码了以外,页面中还有三个隐藏的元素,并且隐藏的元素的值为空。那么首先考虑能不能搞一下这三个元素,方式是通过手动传参。于是URL栏里的地址尝试下面的三个
10.3.139.102/xsschallenge/level10.php?t_link=1
10.3.139.102/xsschallenge/level10.php?t_history=1
10.3.139.102/xsschallenge/level10.php?t_sort=1
  最终发现,只有第三个URL能够赋值,接着再次把第三条URL修改
10.3.139.102/xsschallenge/level10.php?t_sort=<script " 'Oonn>
  查看页面源代码,如下

XSSchallenge(1-13题)

XSSchallenge(1-13题)

有戏,接下来就是填字游戏了
【如果直接复制下面代码执行失败,请尝试手动写入】
10.3.139.102/xsschallenge/level10.php?t_sort=click me!" type="button" οnclick="alert(/xss/)
  再来看一下页面源代码,不错,高度和谐

XSSchallenge(1-13题)

XSSchallenge(1-13题)

点一下“click me”按钮,顺利过关

XSSchallenge(1-13题)

XSSchallenge(1-13题)

第11题

XSSchallenge(1-13题)

XSSchallenge(1-13题)

把URL栏里面的keyword替换为<script " 'Oonn>
接着查看一下页面源代码,发现跟第10题相似,那就先按照第10题的思路试试

XSSchallenge(1-13题)

XSSchallenge(1-13题)

那么隐藏元素走一波
10.3.139.102/xsschallenge/level11.php?t_link=<script " 'Oonn>
10.3.139.102/xsschallenge/level11.php?t_history=<script " 'Oonn>
10.3.139.102/xsschallenge/level11.php?t_sort=<script " 'Oonn>
10.3.139.102/xsschallenge/level11.php?t_ref=<script " 'Oonn>
  发现第三条有结果

XSSchallenge(1-13题)

XSSchallenge(1-13题)

那么再玩一次填字游戏,尝试第3题的思路
10.3.139.102/xsschallenge/level11.php?t_sort="οnmοuseοver='alert(/xss/)'"
  查看页面源代码,又凉了

XSSchallenge(1-13题)

XSSchallenge(1-13题)

那么再回过头来搞搞"t_ref"字段,其实查一下文件源代码发现那四行隐藏元素的内容是这样写的:
<input name="t_link"  value="'.'" type="hidden">
<input name="t_history"  value="'.'" type="hidden">
<input name="t_sort"  value="'.htmlspecialchars($str00).'" type="hidden">
<input name="t_ref"  value="'.$str33.'" type="hidden">
  所以可以放弃第三行了,使用Hackbar搞一下第四行

XSSchallenge(1-13题)

XSSchallenge(1-13题)

查看页面源代码,有戏,跟第10题的套路一样了,那么可以直接拿第10题的答案来套

XSSchallenge(1-13题)

XSSchallenge(1-13题)

修改一下Referer字段,然后就过关了。

XSSchallenge(1-13题)

XSSchallenge(1-13题)

XSSchallenge(1-13题)

XSSchallenge(1-13题)

第12题

XSSchallenge(1-13题)

XSSchallenge(1-13题)

先来查看一下页面源代码

XSSchallenge(1-13题)

XSSchallenge(1-13题)

看到第20行写有浏览器的指纹,啥也别说了,先搞第20行

XSSchallenge(1-13题)

XSSchallenge(1-13题)
  首先按F12召唤“查看元素”,然后刷新页面,就会看到网络数据,当你用鼠标选中第一条数据时,右边会显示出详细通信内容,点击一下“重发”按钮,就能重新编辑数据包了

XSSchallenge(1-13题)

XSSchallenge(1-13题)

把指纹部分改成测试代码<script " 'Oonn>

XSSchallenge(1-13题)

XSSchallenge(1-13题)

发送完数据之后,来查看一下页面源代码,发现还是那个样,显示的还是指纹信息

XSSchallenge(1-13题)

XSSchallenge(1-13题)

那就接着使用“查看元素“吧,有戏。

XSSchallenge(1-13题)

XSSchallenge(1-13题)

使用上一题的答案click me!" type="button"https://img-blog.csdnimg.cn/2020080716325411.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDI4ODYwNA==,size_16,color_FFFFFF,t_70" border="0">
看起来是成功了,但是为什么页面没有按钮呢???

XSSchallenge(1-13题)

XSSchallenge(1-13题)

再来看看”检查元素”,payload设置正常

XSSchallenge(1-13题)

XSSchallenge(1-13题)

看一下“预览”,点击按钮无果

XSSchallenge(1-13题)

XSSchallenge(1-13题)

  此路不行,另觅他法,不就是改包嘛!!!

XSSchallenge(1-13题)

XSSchallenge(1-13题)

走BurpSuite代理,BurpSuite开启截断,然后“Forward“,顺利出现按钮,点一下,过关

XSSchallenge(1-13题)

XSSchallenge(1-13题)

第13题

XSSchallenge(1-13题)

XSSchallenge(1-13题)

首先查看一下页面源代码

XSSchallenge(1-13题)

XSSchallenge(1-13题)

猜测,第20行应该是cookie,应该是从它下手,根据上一题的惨痛教训,这次直接使用BurpSuite。劫持会话更改cookie

XSSchallenge(1-13题)

XSSchallenge(1-13题)

XSSchallenge(1-13题)

XSSchallenge(1-13题)


温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的认可,还可以获得学币奖励,请尊重他人的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
论坛交流群:672619046

小黑屋|手机版|站务邮箱|学逆向论坛 ( 粤ICP备2021023307号 )|网站地图

GMT+8, 2024-4-20 07:31 , Processed in 0.108782 second(s), 39 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表