安全-反射性xss基础注入

目录

题目

代码分析

注入过程及思路

1、第一次注入

2、第二次注入

3、第三次注入

4、第四次注入


题目

<?php
header('X-XSS-Protection: 0');
$xss = isset($_GET['xss'])? $_GET['xss'] : '';
$xss = str_replace(array("(",")","&","\\","<",">","'"), '', $xss);
echo "<img src=\"{$xss}\">";
?>

代码分析

1、下面代码是运用了三目运算符对get是否传到参数进行了判断,并将传到的参数对xss变量进行赋值

$xss = isset($_GET['xss'])? $_GET['xss'] : '';

2、下面代码是通过正则表达式,将get上传的参数进行了过滤,将" ( ", " ) ", " & ", " \\ ", " < ", " > ", " ' "这些符号进行了替换,替换结果为空

$xss = str_replace(array("(",")","&","\\","<",">","'"), '', $xss);

3、通过get传参,进行打印<img>标签注入的结果

echo "<img src=\"{$xss}\">";

注入过程及思路

1、第一次注入

 

注入语句:

?xss=1"%20onerror="javascript:alert(1)

思路:

先闭合前面<img>标签的双引号",通过onerror函数进行弹窗。

失败原因:

上传参数中存在(),由于()被正则表达式过滤,使得()被替换成了空,因此弹窗失败。

2、第二次注入

 

注入语句:

?xss=1"%20onerror="javascript:alert%281%29

思路:

想通过对()进行urlcode编码的方式绕过正则表达式的过滤,实现弹窗,不使用其他编码是因为都被正则表达式过滤掉了,因此只能使用urlcode编码。

失败原因:

在url地址栏中,通过用urlcode对()编码,在手动敲下Enter的瞬间,url地址栏会将%28和%29解码为(),此时,上传的参数还没有进入到程序当中,因此()被过滤掉了,所以弹窗失败。

3、第三次注入

注入语句:

?xss=1"%20onerror="javascript:alert%25281%2529

思路:

想通过对%28和%29的%将进行urlcode编码,这样在url地址栏解码后就是alert%281%29,此时参数不再是()就会进入到程序当中,从而实现弹窗。

失败原因:

onerror是javascript的函数遵循的javascript的语法,在javascript的语法当中,符号是不能进行编码的,因此%28和%29是无法解码的,因此弹窗失败。

4、第四次注入

 

注入语句:

?xss=1"%20onerror=location.href="javascript:alert%25281%2529

思路:

通过增加一个location函数和一个javascript的伪协议,将location后面的"javascript:alrt%25281%2529成为变量,在javascript的语法当中变量是可以编码的,因此弹窗成功。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

努力学IT的小徐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值