pikachu注入练习(xss-3)

1.XSS盲打

 

 打开pikachu  xss盲打这一部分,我们发现在输入后,并没有为我们返回东西。似乎数据存入了数据库中,我们尝试在输入框中输入弹窗的js代码

 

 提交后发现依然没有执行,说明代码没有在前端执行,然后我们根据右面提示,登录数据库查看一下

 

 输入账号密码后我们进入数据库果然,代码在这里执行了,成功弹窗,这种漏洞的危害是很大的,我们如果将js代码修改成获取数据库界面的cookie值的话,攻击者就可以登录数据库界面了查看用户信息了。

2.xss过滤

这一关顾名思义,有注入基础的都会遇到这种问题,当我们在输入的过程中,网页编写者通过过滤掉我们注入代码的信息,来阻止我们对网页的攻击,类似将我们<> ' " script过滤掉的情况,点开我们pikachu的xss过滤这一关,我们试着输入一些关键信息

 

 

 

 发现我们输入的有些部分被过滤掉了,接着我们尝试绕过过滤

 

 

 

 我们将script部分改为大写,发现代码没有被过滤掉并执行了。说明页面虽然进行了过滤但是并没有完全解决问题。下图是我找的一些绕过的方法

 

 3.xss之specialchars()

首先我们要了解这个函数,如图所示,这个函数可以将我们输入的字符转义,从而避免被攻击

 

 现在我们打开pikachu对应的关卡联系,按照以往输入一些字符,点击提交发现下面生成了一个类似a标签的按钮,我们查看一下源码

 

 

 

 

 

 可以发现我们输入的部分除了第一位的单引号留了下来,剩下的都被转义了,我们可以利用这个单引号做文章,我们在输入框中输入如下字符,其中我们用s'将前面的href闭合,然后后面让他弹窗

 

 结果当然是成功弹出窗口,我们可以得知,确实他使用了htmlspecialchars()函数对输入进行了转义,但是他使用的是默认方法,并没有转义单引号,仍然存在着漏洞

 

 4.xss之href输出与js输出

我们还是按常理输出,然后点击查看源码发现,这次的输出是在href中,但是这次代码将单引号也进行了过滤,是不是这样就没漏洞了呢,当然不是,输出在a标签里的href属性,可以使用js协议来执行js,

 

 

 

 我们来写这样一个payload进行试验 javascript:alert(1111) 可以看到这个payload里面是没有任何特殊符号的,输入后成功弹窗。

 

 总结:在面对herf输出的时候,我们除了使用htmlspecialchars进行转义之外,因为href常是一个超链接,所以我们限制输入必须为http或者https开头。

js输出

我们在js输出模块下测试 查看源码

 

 

 

查看发现,他将我们输入的字符存到了js代码里面然后进行判断,我们可以根据代码写一个闭合  x'</script><script>alert('xss')</script>

 

这段代码前面x'闭合了我们的输入 用</script>闭合了代码中的上一个标签,后面就是我们写的js的代码了

 

 

 

 

 

 

 

 果然,在输入我们写的闭合之后,代码执行并弹窗。另外,js输出是不能用htmlspecialchars进行转义的,因为js不会去翻译转义后的字符,所以我们对js的输出点应该使用\对特殊字符进行转义。

posted on 2020-04-04 16:07  匠心a  阅读(332)  评论(0编辑  收藏  举报

导航