XSS代码分析-和简单的过滤,学习笔记

准备工作:

PHP环境

XSS的概念

跨站脚本(Cross-site scripting,简称为:CSS, 但这会与层叠样式表(Cascading Style Sheets,CSS)的缩写混淆。因此,跨站脚本攻击缩写为XSS)是一种网站应用程序的安全漏洞攻击。

类型:

反射型,DOM型,存储型

反射型:

首先了解PHP中的$_GET 和 $_POST

简单来讲,就是用来传参数的,对应GET或者POST请求

使用方法

$get = $_GET['xss'];
$post = $_POST['xss']; #XSS为接收值

构造反射型XSS漏洞

我们就用 GET请求举例子

简单来说就是:

    if(isset($_GET['xss'])) {
        $xss = $_GET["xss"];
        echo 'name:',$xss;
    }#获取一个GET值为,并且赋值给变量$xss

通过 echo来输出 GET请求的值,没有任何过滤的情况下,可以执行Javascript代码

通过简单的代码,我们可以构造一个简单的前端,xss常出现的搜索界面

尝试输入Hello

echo会将GET参数返回,所以产生xss漏洞;

 

XSS存储型:

我们先不用数据库,直接用txt文件的方式存储,一般存储型的,都是存储数据库上的

简单的代码还原存储型xss

出现地方:评论区,资料上传等

老规矩:

    // 使用get取值
    if(isset($_GET['comments']))
    {
        $comments = $_GET['comments'];
        $login = fopen('xss.txt','a');  //打开xss.txt文件
        fwrite($login, $comments."\r\n");//将get请求的写入xss.txt
        fclose($login);//关闭文件
        $url = "xsscc.php";
        echo "<meta http-equiv='refresh' content ='0.1;url=$url'>";
    }
    if(file_exists('xss.txt')){ //判断文件xss.txt是否存在
        $read = fopen("xss.txt",'r'); //打开xss文件 "r"表示只读
        while(!feof($read)){
            echo fgets($read) . '</br>';//输出read的值
        }
        fclose($read);
    }

代码解释:就是讲接收到的GET值,写入txt文件中,然后通过while输出txt的所以内容

最后:

我们输入的内容都会存储,显示页面上

最后输入:

<script>alert('xss')</script>

 

每次打开都会弹窗,这就是xss存储型的特点

如何防御:

利用PHP的函数

htmlentities()

将内容转换为HTML实体

例如我们的xss反射型

    if(isset($_GET['xss'])) {
        $xss = $_GET["xss"];
        echo 'name:',htmlentities($xss);
    }

 这样我们输出的就直接是 

<script>alert('xss')</script>

结束

DOM型也是差不多的,这里就不演示了,真实环境当中,

xxs漏洞会加很多过滤

需要自己一步步探索

需要完整源码的可以私 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值