XSS challenge通关笔记

XSS 概念及分类

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

XSS训练平台点这里

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

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

challenge1:

XSS challenge通关笔记_第1张图片

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

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

成功:
XSS challenge通关笔记_第2张图片

challenge2

直接使用challenge1中的代码试一下,发现没有弹框和提示,仅仅只有try agin;
XSS challenge通关笔记_第3张图片
我们打开源代码:
XSS challenge通关笔记_第4张图片
发现在value属性下没有使用闭合标签>使代码不能执行,我们加上闭合标签:

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

成功弹窗;

challenge3

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

challenge4

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

challenge5

XSS challenge通关笔记_第7张图片
原本想试下是不是会过滤了字母或者符号什么的,然后发现有长度限制,要去改长度限制,一般前端都可以改长度限制的,于是:

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

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

成功弹窗;

challenge6

XSS challenge通关笔记_第8张图片
随便输入一个字符tryagain,输入payload发现页面的查询框变成了空白:
XSS challenge通关笔记_第9张图片
这是为什么呢?
查看源代码发现value属性后显示:

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

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

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

点击search搜索框便会弹出:
XSS challenge通关笔记_第10张图片

challenge7

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

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

1 onmouseover=alert(document.domain);

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

challenge8

XSS challenge通关笔记_第12张图片
发现这里是制作一个链接使其弹出一个窗口,只需要在标签中添加一个JavaScript伪链接即可:
XSS challenge通关笔记_第13张图片
弹窗成功;

challenge9

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

challenge10

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

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

成功弹窗:
XSS challenge通关笔记_第15张图片

challenge11

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

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

并且对script进行了过滤,javascript那里虽然有script,但是可以用 制表符,回车符,换行符 来欺骗过滤器。payload中 script 中间插入 , ,空格等不可见字符对script进行分割,让正则匹配不到;
XSS challenge通关笔记_第17张图片

challenge12

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

``onmouseover=alert(document.domain);

弹框成功;

challenge13

XSS challenge通关笔记_第19张图片
可以发现,style和value属性值都是输入框的内容,而且会发现这里又过滤了双引号

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

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

challenge14

XSS challenge通关笔记_第20张图片
我直接看了提示这里过滤了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

XSS challenge通关笔记_第21张图片

challenge16

用上述payload先试一下:
XSS challenge通关笔记_第22张图片
发现\、< >被过滤了, js编码有很多种,所以这里绕过也有很多种:

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

XSS challenge通关笔记_第23张图片
弹窗成功;

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

你可能感兴趣的:(WEB漏洞攻击及防御)