赞
踩
创建时间:2022年5月15日17:01:18
作者:在下小黄
存储区:URL
插入点:HTML
基本原理:就是通过给别人发送带有恶意脚本代码参数的URL,当URL地址被打开时,特定的代码参数会被HTML解析,执行,如此就可以获取用户的COOIKE,进而盗号登陆。
特点是:非持久化 必须用户点击带有特定参数的链接才能引起。
XSS反射型攻击,恶意代码并没有保存在目标网站,通过引诱用户点击一个链接到目标网站的恶意链接来实施攻击的。
<?php header ("X-XSS-Protection: 0"); // Is there any input? if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) { // Feedback for end user echo '<pre>Hello ' . $_GET[ 'name' ] . '</pre>'; } ?> ------------------------------------------------------------------------------------ array_key_exists() 函数检查某个数组中是否存在指定的键名,如果键名存在则返回 true,如果键名不存在则返回 false。 echo() 函数输出一个或多个字符串。 简单来说:简单来说就是,输入请求不为空的时候,直接原样输出!!
name
参数后没有防范措施,直接打印在屏幕上。(echo)<script>alert('xss')</script>
'<pre>Hello <script>alert('xss')</script></pre>'
然后输出到页面时,直接运行 <script>alert(1)</script>
这就是 XSS,原本这个地方应该是输入数据的,但是却变成运行代码了。<?php header ("X-XSS-Protection: 0"); // Is there any input? if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) { // Get input $name = str_replace( '<script>', '', $_GET[ 'name' ] ); // Feedback for end user echo "<pre>Hello ${name}</pre>"; } ?> ----------------------------------------------------------------------------------- str_replace() 函数以其他字符替换字符串中的一些字符(区分大小写),这里是过滤请求中的<script>
<scri<script>pt>alert('xss')</script>
<SCriPt>alert(/xss/)</ScRipt>
<IMG src=1 onerror=alert(document.cookie)>
<script>alert('xss')</script>
<?php header ("X-XSS-Protection: 0"); // Is there any input? if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) { // Get input $name = preg_replace( '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i', '', $_GET[ 'name' ] ); // Feedback for end user echo "<pre>Hello ${name}</pre>"; } ?> -------------------------------------------------------------------------------------- preg_replace():函数执行一个正则表达式的搜索和替换 (.*) 表示从头到尾匹配字符,表示贪婪匹配,(.*)s 从头到尾匹配s /i 表示不区分大小写 '/<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/i' 表示过滤了<script> 虽然<script>标签不管用了,但是可以使用其他标签绕过 输入<IMG src=1 onerror=alert(document.cookie)>
<script>
被过滤了<scri<script>pt>alalertert('xss')</scr</script>ipt>
script
做了过滤script
的方式。img
的 onerror
函数 ,意思是说,如果图片的地址是错误的,就执行alert(1)
img、body
等标签的事件或者iframe
等标签的src
注入恶意的js代码。<img src=1 onerror=alert(/xss/)>
<?php // Is there any input? if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL ) { // Check Anti-CSRF token checkToken( $_REQUEST[ 'user_token' ], $_SESSION[ 'session_token' ], 'index.php' ); // Get input $name = htmlspecialchars( $_GET[ 'name' ] ); // Feedback for end user echo "<pre>Hello ${name}</pre>"; } // Generate Anti-CSRF token generateSessionToken(); ?> ------------------------------------------------------------------------------------- htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。 预定义的字符是: & (和号)成为 & " (双引号)成为 " ' (单引号)成为 ' < (小于)成为 < > (大于)成为 > 虽然利用了htmlspecialchars()函数将用户的输入进行过滤,但是在特定情况下需要用户输入一些被过滤,会丢失原始数据。且htmlspecialchars本质也是黑名单过滤,没有绝对安全 简单来说:就是直接输出
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。