DVWA---XSS (存储型)

服务端代码 LOW
在这里插入图片描述

trim(string,charlist)函数移除字符串两侧的空白字符或其他预定义字符。charlist可选。规定从字符串中删除那些字符。如果被省略,则移除以下所有字符:

    "\0" - NULL
    "\t" - 制表符
    "\n" - 换行
    "\x0B" - 垂直制表符
    "\r" - 回车
    " " - 空格

stripslashes(string) 数删除由 addslashes() 函数添加的反斜杠。单个反斜杠则去除,两个反斜杠为一个反斜杠。mysqli_real_escape_string对字符串特殊符号n r ‘ “ 等进行转义。
最终未对用户输入数据进行xss检测编码,直接写入到数据库中,于是造成存储型xss漏洞。
在这里插入图片描述
在这里插入图片描述

对name字段进行了长度限制,解决方法
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

服务端代码 medium
在这里插入图片描述

以上代码我们重点关注两行:

$message = htmlspecialchars( $message )
 $name = str_replace( '< script>', '', $name )

Message由于使用了htmlspecialchars方法对用户输入数据进行编码转换,因此不存在xss漏洞。
但是name由于仅仅用了str_replace方法把< script>替换为空,于是我们有以下三种方法来绕过:
非< script>标签:

<img src=0 onerror=alert(/xss1/)>

在这里插入图片描述
在这里插入图片描述

大小写转换:

<Script>alert(/xss2/)</sCript>

在这里插入图片描述
双重< script>标签:

<sc<script>ript>alert(/xss3/)</script>

在这里插入图片描述

服务器代码 high
在这里插入图片描述

$message = htmlspecialchars( $message ); 

所以message不存在漏洞

$name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $name ); 

preg_replace执行一个正则表达式的搜索和替换,此时可以使用别的标签< img> < a> < iframe>等,比如刚刚使用过的< img>,构造payload :<img src=0 onerror=alert(/xss/)>
在这里插入图片描述

服务端代码 impossible
在这里插入图片描述

都是用了htmlspecialchars函数,不存在漏洞。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值