XSS—存储型xss

xss =>跨站脚本攻击=>前端代码注入=>用户输入的数据会被当做前端代码执行。

原理:使用者提交的XSS代码被存储到服务器上的数据库里或页面或某个上传文件里,导致用户访问页面展示的内容时直接触发xss代码。 输入内容后直接在下方回显,回显的地方就是我们插入的内容的地方。 每当有用户访问包含恶意代码的页面时,就会触发代码的执行,从而达到攻击目的。有别于反射型XSS编写一次代码只能进行一次攻击的特点,存储型XSS的恶意脚本一旦存储到服务器端,就能多次被使用,称之为“持久型XSS”。

存储型XSS比反射型XSS的危害更大,在于它不需要构造特殊的URL,用户访问的是一个正常的URL也可以被攻击;另一方面,它持久化在服务端,影响的范围可以比反射型XSS更广。 

一个重要条件是,web应用中的用户之间有一定的交互,而非各玩各的。比方说,博客、论坛等,这种互相访问的系统才是存储型XSS生长的土壤。其次,在web系统中要找到可以存储到数据库的输入位置,诸如表单、文本框之类的元素,在这些元素中进行正常的操作,让恶意脚本被当成普通输入数据存入数据库。当然,要使用web应用没有过滤的标签、事件,否则输入数据被过滤之后,能够引起XSS的代码就被破坏了。 

 XSS-labs

第二关

打开题目

XSS—存储型xss_第1张图片

 看一看源代码

XSS—存储型xss_第2张图片

 





欢迎来到level2


欢迎来到level2


没有找到和test相关的结果.







payload的长度:4


从源码来看,它的功能就是通过点击“搜索”按钮,将输入框内的内容以get方式提交给服务器上的level2.php,经过服务器的动态处理之后又会将参数keyword的值插入到

标签之中以及添加到标签中的value属性的值内。 

尝试输入 发现没有注入成功

XSS—存储型xss_第3张图片

看一下源码

XSS—存储型xss_第4张图片

 



欢迎来到level2


欢迎来到level2


没有找到和<script>alert()</script>相关的结果.







payload的长度:24


 发现和之前不一样的地方,

没有找到和test相关的结果.

没有找到和<script>alert()</script>相关的结果.

 发现在h2标签中<>被转义了,但是value中的还是一样

上网查了一下,发现能php函数能转义的是htmlspecialchars(因为这个函数可以预防xss)

XSS—存储型xss_第5张图片

那我们就可以想办法绕过这个函数来进行xss注入了。通过了解 这个函数我们可以通过闭合标签的方式来进行绕过

闭合标签就是

这样的 也有单闭合标签 

这里只做大概介绍 所以要想进行xss注入,只需要将属性的标签闭合就可以了,输入 ">  ​就可以了

 XSS—存储型xss_第6张图片

 存储型xss会在搭好皮卡丘靶场之后进行注入

 

 

你可能感兴趣的:(xss,前端)