XSS进阶一

实验来源:合天网安实验室

预备知识

 1、攻击原理:恶意浏览者构造巧妙的脚本恶意代码 通过网站功能存入到网站的数据库里面,如果程序没有经过过滤或者过滤敏感字符不严密就直接输出或者写入数据库,合法用户在访问这些页面的时候 程序将数据库里面的信息输出, 这些恶意代码就会被执行。

      2、XSS漏洞的分类

      本地利用漏洞,这种漏洞存在于页面中客户端脚本自身;

      反射式漏洞,这种漏洞和类型A有些类似,不同的是Web客户端使用Server端脚本生成页面为用户提供数据时,如果未经验证的用户数据被包含在页面中而未经HTML实体编码,客户端代码便能够注入到动态页面中;

      存储式漏洞,该类型是应用最为广泛而且有可能影响到Web服务器自身安全的漏洞,骇客将攻击脚本上传到Web服务器上,使得所有访问该页面的用户都面临信息泄漏的可能,其中也包括了Web服务器的管理员。

      3、了解点php和javascript,下面给出了学习网址。

http://www.w3school.com.cn/js/index.asp

http://www.w3school.com.cn/php/php_syntax.asp

实例一、热身运动,不设防

 关键代码:
  1. <?php    
  2.     echo $_GET['name'];  
  3. ?>  
解析:echo就是php的输出函数,那么这里就是输出URL上字段为name的值,如https://www.baidu.com/?name=test,$_GET['name']的值就是test,直接上图

简单分析:首先javascript代码一般要放在<script>和</script>两个标签之间,当然放在HTML的事件属性也可以(如:<button onclick="javascript:location.href='test.php'" type=”button“ >按钮</button>),alert()函数就是弹出一个简单对话框来提示(警告)用户,带有一个确定按钮。那么php的echo输出之后,对应的网页的源代码为<script>alert('XSS')</script>,结果当然就如图所示啦

任务一

根据实例一的代码提示,下面哪个语句能成功:  【单选题】  题目已完成,2 

【A】javascript:alert(1)【B】<script>alert(1)</script>【C】avascript:alert(1);【D】;<script>alert(1)</script>分析:A的话要放在HTML属性才能生效,直接输出肯定不能的; B完全没问题,如果要输出字符串的话alert里面的参数要加单引号或双引号; C比第一个还少一个j更加不行; D应该是可以的,对应网页源码是; <script>alert('XSS')</script> ,多了个分号而已,下图为证

实例二、小写不行,就大写吧

      关键代码:


这里是将<script>和</script>替换成空字符,其中/是正则的开始结束,但不是^$的开始结束的意思,\ / 就是转义/,我们像第一个一样输入<script>alert('XSS')</script>试试,看看<script>和</script>都过滤掉了吧



我们稍微改一下<scripT>alert('XSS')</scRipt>,这就不能被替换掉了吧


任务二

根据实例二的代码提示,下面哪种方式能成功:  【单选题】  题目已完成,2 

【A】Javascript:alert(1)【B】<SCRIPT>alert(1)</SCRIPT>【C】Javascript:alert(1);【D】;<SCRIPT>alert(1)</SCRIPT>A,C明显不行,B全大写是可以的,D也跟上一题一样,D如下

实例三、大写小写都不行,看你怎么办?

      关键代码:


加个i参数的话就忽略大小写了,这样的话我们就不能用<script>,</script>标签了,我们要考虑其他标签啦,img有个onerror属性,试试<img src=1 onerror=alert(1)>,src就是图片的来源,赋值为1,肯定会出错啊,onerror就是一旦出错就会触发,所以就会调用alert(1),弹出对话框。

任务三

根据实例三的代码提示,下面哪种方式能成功:  【单选题】  题目已完成,2 

【A】<img src=1 onerror=alert(1)>【B】javascript:alert(1)【C】对<SCRIPT>alert(1)</SCRIPT>进行base64编码【D】对javascript:alert(1)进行base64编码A:上面已说过,B明显不可以,D就更加不可以了D首先base64编码看下图, 在本地测试了,直接输出来了啊

猜你喜欢

转载自blog.csdn.net/Laputa_Net/article/details/80033610
xss
今日推荐