csxiaoqiang 2020-03-05
注入的本质就是:把用户的输入的数据当作代码执行。
xss注入的关键:1、第一个是用户能够控制输入
2、原本程序要执行的代码,拼接了用户输入的数据
xss主要拼接的是什么?
sql注入拼接的是操作数据库的sql语句。xss拼接的是网页的html代码。我们一般会拼接出合适的html代码去执行恶意的js语句。
xss能做什么?
盗取cooike、获取内网ip,等等。应为达到各种各样的效果需要比较复杂的代码,所以xss平台应哟个而生,{xsspt.com}xss平台大大方便了xss攻击,只需要引入一个平台就可以实现功能。
xss的类型
1、反射型xss(你提交了数据成功实现了xss。但是这是对你这次访问产生了影响,并非持久性攻击)
2、储存型xss(你提交了数据成功实现了xss。并且存入了数据库,别人访问这个页面的时候就会自动出发)
3、dom型xss(较复杂)
怎么检测是否存在xss?
1、一般方法是让浏览器弹窗(alert)经典的弹窗语句:<script>alert(5)</script>
2、一般证明xss是不是存在,就是在正常页面传参然后构建参数让他弹窗就是存在xss了
xss真的执行恶意代码的实际上是js语句,有三种类型
1、<script></script>(这个是定义Js的标签)
2、javascript:alert(1)经典代码<a href=JavaScript:alert(1)>text</a>javascript实际上是一个伪协议
伪协议不同于互联网上的协议,如http://,https://,ftp://,伪协议只有关联应用能够用,比如 php:// tencent://(关联QQ)
JavaScript:伪协议实际上是声明了url的主体是任意的JavaScript代码
3、事件也是可以执行JS的:
例如: onerror=alert(1) 在加载文档或图像时发生错误。
该句的意思就是在加载文档或图像时发生错误然后会执行alert(1)
类似的事件有很多
常用的有 onerror、onload(成功加载执行)oninput (有输入框,输入的时候触发)
1.XSS主要拼接的是什么?
(总结:xss就是拼接恶意的HTML)
SQL注入拼接的是操作数据库的SQL语句。XSS拼接的是网页的HTML代码,一般而言我们是可以拼接出合适的HTML代码去执行恶意的JS语句
2.xss真的执行恶意代码的实际上是JS语句,那么我们一般需要构建<script></script> (这个是定义Js的标签)
但是也是有其他方法可以执行的
靶场地址:http://59.63.200.79:8002/xss/index.php
先判断输出点,向搜索框输入123
说明有2个输出点
然后尝试弹窗
然而没有弹窗
查看源代码
发现第一个输出点的尖括号被转义了(这种HTML的实体编码是专门用来防止XSS的)
再来看第二个输出点
发现没有对尖括号进行转义,但是输入的数据在双引号里面,则只会被认为是一个字符串,而不会被当做代码执行。
所以接下来可以对双引号进行闭合。
发现双引号被转义了。然而在前端中,单引号可以将双引号闭合,不妨试一试。
发现输入的数据不见了,则说明数据被当做HTNL代码执行了
输入的’123变成了如上图所示,后面的红圈处是浏览器的容错机制,所以是不需要的
然后可以运用事件oninput(当你输入时触发弹窗)。可将’oninput=alert(1)//输入到搜索框。
然后输入任意数据时,触发弹窗。