XSS challenge通关笔记

XSS challenge通关笔记

ps:小白一名,有问题请指教

XSS训练平台点这里

XSS(cross site scripts)
是指恶意攻击者利用网站没有对用户提交数据进行转义或者过滤不足的缺点,进而添加一些代码,嵌入到web页面中去,使别的用户访问都会执行相应的嵌入代码。

  1. DOM型
  2. XSS反射型->前端->后端->前端短链接
  3. XSS存贮型(评论留言框等)前端->后端->数据库->前端
    1. 手工:拿cookie
    2. 自动化xss:BeEF

challenge1:

在这里插入图片描述

将敏感字符试一下检查是否存在过滤,发现没有进行过滤直接输入:

<script>alert(document.domain)</script>

成功:
在这里插入图片描述

challenge2

直接使用challenge1中的代码试一下,发现没有弹框和提示,仅仅只有try agin;
在这里插入图片描述
我们打开源代码:
在这里插入图片描述
发现在value属性下没有使用闭合标签>使代码不能执行,我们加上闭合标签:

"><script>alert(document.domain)</script>

成功弹窗;

challenge3

在这里插入图片描述
我们发现第三关多了一个查询功能,我们输入dj查找,给出提示我们查找失败;
在这里插入图片描述
现在多一个参数p2,即有p1,p2两个参数,我们试一下抓包修改p2参数来注入代码;
在这里插入图片描述
将p2的参数Japan修改成script代码,forward得到这个界面:
在这里插入图片描述
成功;

challenge4

发现和关卡3一样的界面,打开源代码浏览一下,果然发现相比关卡3不一样的是多了一个隐含参数p3,如图:
在这里插入图片描述
forward成功;

challenge5

在这里插入图片描述
原本想试下是不是会过滤了字母或者符号什么的,然后发现有长度限制,要去改长度限制,一般前端都可以改长度限制的,于是:

在这里插入图片描述
我将maxlength改为了100,输入

"><script>alert(document.domain)</script>

成功弹窗;

challenge6

在这里插入图片描述
随便输入一个字符tryagain,输入payload发现页面的查询框变成了空白:
在这里插入图片描述
这是为什么呢?
查看源代码发现value属性后显示:

&gt;&lt;script&gt;alert(document.domain)&lt;=""

发现<>符号被HTML 特殊字符代替,说明输入内容被HTML实体编码;
这里可以在input标签里添加onclick属性,点击触发弹窗;

" οnclick="alert(document.domain)"

点击search搜索框便会弹出:
在这里插入图片描述

challenge7

在这里插入图片描述
老规矩还是先输入代码试一下发现不成功打开源代码查看:
在这里插入图片描述
发现并没有什么差别,我们再仔细查看一下value:

噢噢原来如此,是过滤了双引号,这就好办了,第一种方法是按照关卡6添加onclick属性照样可以弹框成功;
第二种方法是

1 onmouseover=alert(document.domain);

ps: onmouseover:事件会在鼠标指针移动到指定的元素上时发生。

challenge8


发现这里是制作一个链接使其弹出一个窗口,只需要在标签中添加一个JavaScript伪链接即可:
在这里插入图片描述
弹窗成功;

challenge9

在这里插入图片描述
查看源代码有隐藏属性,抓包
在这里插入图片描述
发现"<>字符都已经被过滤,百度一下euc-jp是什么,根据提示原来是要构造utf-7的编码;这里就需要用到IE7浏览器,但是我并没有IE7,这里就不展示弹窗结果了;

challenge10

老规矩直接在search之前的payload,查看源码:
在这里插入图片描述
发现domain被过滤了,第一反应就是双写绕过:

"><script>alert(document.dodomainmain)</script>

成功弹窗:
在这里插入图片描述

challenge11

首先试一下JavaScript代码发现script被过滤
在这里插入图片描述
在这里插入图片描述
行不通,换成之前的点击弹窗发现也已经被过滤( onclick和onmouseover)
在这里插入图片描述
果然,查看提示:
转义 script on… style 对这些字符串进行了转义
根据其错误提示可以想到用标签 制作超链接

"><a href="javascr&#09;ipt:alert(document.domain);">点击跳转</a>

并且对script进行了过滤,javascript那里虽然有script,但是可以用 制表符,回车符,换行符 来欺骗过滤器。payload中 script 中间插入 , ,空格等不可见字符对script进行分割,让正则匹配不到;
在这里插入图片描述

challenge12

在这里插入图片描述
一样是先尝试先前的payload,发现过滤了<>", 根据提示可以知道x00-,x20,<,>,",'都被过滤了,到了这我不知道怎么办了,参考了某位博主,原来 ` 还没被过滤,利用IE浏览器特性反引号解析为引号构造payload:

``onmouseover=alert(document.domain);

弹框成功;

challenge13

在这里插入图片描述
可以发现,style和value属性值都是输入框的内容,而且会发现这里又过滤了双引号

xss:expression(alert(document.domain));

这里也需要利用IE8,本人太懒就不再多演示;
但是这里提示是 style attribute涉及到有关CSS的知识,在CSS样式中利用expression实现javascript中的onmouseover或onmouseout事件;

challenge14

在这里插入图片描述
我直接看了提示这里过滤了url/script/eval/expression,直接这样过滤可以插入注释符绕过:
xss:expr\0ession(alert(document.domain));
xss:expr/**/ession(alert(document.domain));
到这里我先总结引号被过滤的几种情况:
1. 添加属性(onmouseover或onmouseout事件以及expression)触发弹窗
2. "<>都被过滤时可以构造编码
3. 利用IE浏览器反引号翻译成双引号的特性

challenge15

根据提示这里过滤了document.write(),两种解决办法

16进制编码   \\x3cscript\\x3ealert(document.domain);\\x3c/script\\x3e
Unicode编码  \\u003cscript\\u003ealert(document.domain);\\u003c/script\\u003e

在这里插入图片描述

challenge16

用上述payload先试一下:
在这里插入图片描述
发现\、< >被过滤了, js编码有很多种,所以这里绕过也有很多种:

Unicode编码     \u003cimg src=x onerror=alert(document.domain)\u003e
八进制    \\74img src=x onerror=alert(document.domain)\\76

在这里插入图片描述
弹窗成功;

本人第一次写博客哈哈哈不要各位大佬不要嫌弃(如果有幸刷到)有问题多指教
在这里插入图片描述

发布了5 篇原创文章 · 获赞 5 · 访问量 205

猜你喜欢

转载自blog.csdn.net/qq_43571759/article/details/104448466
今日推荐