打靶归来(pikachu)【xss】

跨站脚本攻击(xss)

1.简介

     跨站脚本攻击,简称css,但为了与层叠样式表区分开,在安全领域叫xss。

     XSS 攻击,通常指黑客通过“HTML注入”篡改了网页,插入了恶意的脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。在一开始,这种攻击的演示案例是跨域的,所以叫做“跨站脚本”。但是发展到今天,由于 JavaScript的强大功能以及网站前端应用的复杂化,是否跨域已经不再重要。但是由于历史原因,XSS这个名字却一直保留下来。
     XSS 长期以来被列为客户端 Web 安全中的头号大敌。因为 XSS 破坏力强大,且产生的场景复杂,难以一次性解决。现在业内达成的共识是:针对各种不同场景产生的XSS,需要区分情景对待。即便如此,复杂的应用环境仍然是XSS滋生的温床。

      我的理解就是将用户向param提交的数据改为一段可执行的HTML代码,如

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

       提交以后就发现alert命令在当前页面执行

2.分类

类型概述
反射型 XSS  反射型 XSS只是简单地把用户输入的数据“反射”给浏览器,反射型 XSS只是简单地把用户输入的数据“反射”给浏览器。
存储型 XSS  存储型 XSS 会把用户输入的数据“存储”在服务器端。这种 XSS 具有很强的稳定性。
DOM Based XSSDOM Based XSS从效果上来说也是反射型 XSS,简单来说DOM Based XSS就是通过修改页面的 DOM 节点形成的 XSS。

    反射型XSS与存储型XSS的区别在于“数据是否保存在服务器端”。

3.实操(以pikachu为例)

3.1:反射型XSS
  3.1.1:反射型xss(get)

      打开界面,在输入框中输入<script>alert('xni')</script>,发现输入框中命令显示不完整。

猜测是对输入字符数目进行了限制,查看源代码发现猜测正确,直接在查看器中更改。

更改后就可以输入完整字符,提交代码得到xss命令执行

3.1.2:反射型xss(post)

      打开后先看右上角提示,登录进去

       

登进去看到了一个搜索框,提交代码。

出现xss弹窗,执行成功

-GET和POST方式最主要的区别:

     GET以URL方式提交

     POST通过表单数据进行提交

3.2:存储型XSS

        在留言板上输入bu试试,发现留言被后台存储

输入payload,命令直接被存储

3.3:DOM型xss

       DOM型xss

  在做题之前我们先弄清楚DOM是什么东西。JavaScript HTML DOM (w3school.com.cn)icon-default.png?t=N7T8https://www.w3school.com.cn/js/js_htmldom.asp

          

     简单来说,   DOM就是通过JavaScript对HTML进行更改控制的接口。

   我们先在输入框中输入一些字符,前端显示what do you see?

查看界面源代码,Ctrl F查找what do you see?的位置what do you see?

红框选中的就是我们需要输入的地方(输入一串合法字符替代"+str+",并且整个语句闭合)

输入 ' οnclick="alert(xss)”>(构成语句闭合,并且弹出xss弹窗)

     DMD型xss-x

3.4:xss盲打

       盲打是指前端无法看到输入的xss内容,只有在后台才能看到。

直接输入代码' οnclick="alert('xss')">,发现前段只有一句:谢谢参与,阁下的看法我们已经收到!

        我们点击右上角的提示,发现了后台的进入地址,进去后在提示中找到了昵称和密码,登录进去看看。

登陆后弹出窗口,后台已经被攻击,确定以后就可以看见后台数据

3.5:xss过滤

后台过滤了一些特殊字符或字母时
    特殊字符:可以编码为浏览器可以识别的字符(浏览器能够识别并执行)
    字母:可以通过大小写的转换进行绕过

<SCRIPt>alert(xss)</SCRIPT>

这道题我们先尝试一下有哪些字符被过滤了

<scrpit>    

说明scrpit被过滤了,我们换成大写字母试试(<SCRIPt>alert(xss)</SCRIPT>)

显示只有小写字母被过滤了,大写字母绕过成功。

3.6:xss之htmlspecialchars

  htmlspecialchars()函数用于将一些预定义的字符转换为 HTML 实体。能够防止这些特殊字符在 HTML 中被浏览器错误地解释,避免了跨站脚本攻击(XSS)等安全问题。

&(和号)成为&amp
"(双引号)成为&quot
'(单引号)成为&#039
<(小于)成为&lt
‘>’(大于)成为&gt


ENT_ COMPAT -默认。仅编码双引号。
ENT QUOTES -编码双引号和单引号。
ENT NOQUOTES -不编码任何引号。

我们先输入一串特殊字符并查看源码

htmlspecialchars函数对单引号不进行处理

构造闭合

' onclick='alert(111)'

3.7:xss之href输出

   <a>标签的href属性本身并不直接执行JavaScript代码,不过在讨论的是<a>标签的href属性与XSS的关系时,更常见的是通过href属性中的javascript:伪协议来执行JavaScript代码。

    我们打开先看一下提示

   

    提示说明是a标签中的herf,我们可以使用

javascript:alert(1) 

3.8:xss之js输出

  先看提示,在输入框中输入tmac

尝试构造闭合

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

  • 11
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值