DVWA靶场练习(深入xss漏洞的理解)第二章

直接开始打靶场

XSS Challenges (by yamagata21) - Stage #5 

该靶场是一个日本安全人员研究的靶场

首先随便输入点东西抓个包看看

 发现了一个可控参数p1

p1就是我可控的参数

完成传输参数之后代码是这个

 

############

在这里说一下基本的思路

1."> 逃逸出input标签,插入js代码执行js代码

2."    逃逸出value属性,插入时间,通过触发事件执行js代码

现在我们来测试一下

输入">name

我们可以很明显的看见,我们输入的内容已经逃逸出了input框

再看下代码确实是这样的 

那么我们只需要输入代码"><script>alert(document.domain);</script>

在输入框中的时候,我们发现了控制长度的属性,那么我们先修改一下 

把maxlength=15改成长的就ok了

还有一种方法就是抓包了

 完成这一关

下一关

XSS Challenges (by yamagata21) - Stage #6

 老规矩判断直接输入">name

查看输入后的代码 

<input type="text" name="p1" size="50" value="" &gt;name"="">

很明显我的<已经被过滤了成了一个实体  &gt

但是我的"还是可以用的

那么就使用我们的第二个口诀

1."> 逃逸出input标签,插入js代码执行js代码

2."    逃逸出value属性,插入事件,通过触发事件执行js代码

我们构造一个value属性,插入对应的事件

所以我们构造一个属性

xss" οnmοuseοver="alert(document.domain)"

完成第六关

<input type="text" name="p1" size="50" value="xss" οnmοuseοver="alert(document.domain)" "="">

这个是我们构造的句子

第七关

老样子写入"<name查看

全部被过滤掉

<input type="text" name="p1" size="50" value=&quot;&gt;name>

"被改成了&qout     >被改成了&gt

在这种情况下,本来已经是不存在xss注入了,但是程序员的代码写的有问题,我们输入一个空格试试

输入xss name返回结果代码可以看到

No results for your Query. Try again: <input type="text" name="p1" size="50" value=xss name>

那么我们可以直接写入代码

xss οnmοuseοver=alert(document.doman)

好的直接进入我们的第八关

XSS Challenges (by yamagata21) - Stage #8

########

重点内容

老样子先随便输入一点东西看看反馈了什么东西

我们这里输入了name

页面反馈了 这个

尝试输入">xss

可以看到我们的代码被过滤掉了

URL: <a href="&quot;&gt;xss">&quot;&gt;xss</a>

像上一题一样输入一些特别字符

">name ;:xss

方法并不奏效

URL: <a href="&quot;&gt;name ;:xss">&quot;&gt;name ;:xss</a>

我们这里说到一个伪协议的使用

使用前提

1.能插入新的标签

2.回显位置在URL中

真协议:用来传输数据的协议

伪协议:

1.JavaScript:

2.php:

那么这样的话我们很好理解,使用伪协议然后触发伪协议的事件

JavaScript:alert(document.domain);

这个是本节课的重点

##############

下一关靶场10

直接讲方法

我们输入了"<script>alert(document.domain);</script>

可以看到返回的结果是

No results for your Query. Try again: <input type="text" name="p1" size="50" value=""<script>alert(document.);</script>

方法一

注意观察只有domain被过滤掉了那么这种情况下,我们需要利用到我们SQL注入一个方法绕过这个waf

我们使用双写的方法绕过,他会吧domain换成空,那么我们写dodomainmian,让他过滤掉domain之后会自动补齐一个domain即可完成绕过

方法二

base64编码

将alert(document.domain);

编码成

YWxlcnQoZG9jdW1lbnQuZG9tYWluKTs=

但是服务器无法识别base64编码

那么我们需要一个JavaScript中一个一个函数,atob函数,他可以将base64解码

那么问题又来了,如何去执行这个解码过后的函数呢

我们需要一个JavaScript中的函数,eval函数,他可以执行()中的语句

拼接代码即可完成

eval(atob("YWxlcnQoZG9jdW1lbnQuZG9tYWluKTs="))

 再次拼接代码

"><script>eval(atob("YWxlcnQoZG9jdW1lbnQuZG9tYWluKTs="))</script>

###########

十一关

思路两种

1.不使用script标签,  不使用事件    不使用style

2.伪协议绕过  JavaScript   

在十一关中JavaScript标签会被过滤成Javaxcript

方法一不使用JavaScript标签,把JavaScript标签替换成base64编码

###########

提供两种

'> <object data="data:text/html;base64PHNjcmlwdD5hbGVydChkb2N1bWVudC5kb21haW4pPC9zY3JpcHQ+"></object>


<iframe src="data:text/html;base64PHNjcmlwdD5hbGVydCgieHNzlik8L3NjcmlwdD4="> </iframe>

方法二绕过waf过滤

一些常见的字符

实体名称

&nbsp:  空格

&lt;   

&NewLine;   回车

实体编号

空格  %#09;

把这些加入在关键词中即可绕过关键词

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值