Pikachu靶场-xss详解


XSS-跨站脚本漏洞目录

跨站脚本漏洞概述

Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:
1.反射性XSS;
2.存储型XSS;
3.DOM型XSS;

XSS漏洞一直是web漏洞中比较危害大的漏洞,在OWASP TOP10的排名一直处于前三的江湖地位。
XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。
形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。
因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:
输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
输出转义:根据输出点的位置对输出到前端的内容进行适当转义;
XSS 漏洞可以进行钓鱼攻击、用户cookie获取、前端js挖矿,甚至可以结合浏览器自身漏洞对用户主机进行远程控制

跨站脚本漏洞类型及测试流程

1.跨站脚本漏洞类型
(1)反射型xss
交互的数据一般不会存在数据库,一次性,一般出现在查询页面
(2)存储型xss
交互的数据会存在数据库中,永久性存储,危害较大,一般出现在注册、留言板等页面
(3)Dom型xss
不与后台进行交互,是一种通过dom操作前端代码输出的时候产生的问题,也是属于一次性的。
2.测试流程
要先了解XSS的测试流程,首先我们需要先了解XSS的攻击流程。
最主要的就是因为程序对输入和输出的控制不够严格,导致脚本输入后,在前端被当成有效代码解析执行当作危害。
那么,我们的测试流程也就有思路了
(1)我们首先在目标站点找到输入点,比如查询接口,留言板之类的。
(2)输入一组特殊的字符+唯一识别字符,来看它源码,是否有对应的处理
(3)通过搜索定位到唯一字符后,结合唯一字符前后语法是否可以构成执行js的条件,也就是构造闭合
(4)提交构造的脚本代码以及各种绕过姿势,看看是否能执行,如果行,就说明存在XSS漏洞。

反射型XSS(post&get)

我们通过Picachu靶场来看看,xss到底是什么。
在这里插入图片描述
根据我们前面的测试流程,我们首先输入一些特殊字符和唯一识别字符,我们来看看。
在这里插入图片描述
我们在输入框输入以后,点击提交
在这里插入图片描述
根据我们的思路,来看一下页面的源码
通过输入唯一识别字符,我们能看到我们输入的东西被输出到了P标签中
在这里插入图片描述
我们输入的东西好像被原封不动的输出出来了,那么,假如我们输入一段java script的代码,它还是会原封不动的输出嘛?
我们来试试
我们在输入框输入一段Java Script的代码
在这里插入图片描述
点击提交
在这里插入图片描述
没错,那这就说明存在XSS漏洞,这就是一个反射型的XSS。
我们来看它的源码
在这里插入图片描述
我们输入的东西被原封不动的输出了出来。

存储型XSS

存储型的XSS与反射型的XSS一样,但它是将脚本存在了后台储存起来,构成更持久的危害,也称为永久性xss
话不多说,我们用实例来看
在这里插入图片描述
按照惯例,在留言框中输入特殊字符+唯一识别
在这里插入图片描述
提交之后,发现它会一直存在在那里
在这里插入图片描述
然后,我们接着输入一段Java script的代码,来看看效果如何。
在这里插入图片描述
提交之后,发现弹窗,当我们刷新页面的时候,会发现࿰

### Pikachu靶场中的SQL注入类型教程 #### 数字型SQL注入 当应用程序未正确过滤用户输入且该输入被用于构建SQL查询的一部分时,可能会发生数字型SQL注入。如果参数是整数形式,则攻击者可以尝试通过改变这个数值来观察应用行为的变化从而判断是否存在漏洞[^2]。 对于Pikachu靶场而言,在某些情况下,向URL或表单提交的数据中附加特殊字符(如`'`),会触发数据库错误提示,这表明可能存在SQL注入风险[^3]。 ```sql ?id=1 AND 1=1 -- 正常显示页面内容 ?id=1 AND 1=2 -- 页面返回异常或者空白页 ``` #### 字符型SQL注入 字符型SQL注入通常发生在字符串类型的参数上。在这种场景下,可以通过在合法数据之后追加恶意构造的SQL片段来进行测试。例如: ```sql username=admin' OR '1'='1 password=a' OR 'a'='a ``` 这些命令利用了逻辑运算符OR使得条件永远成立,进而绕过身份验证机制[^1]。 #### 联合查询注入 为了进一步探索数据库结构,即所谓的“爆库”,可以采用UNION SELECT语句组合两个SELECT查询的结果集。此方法适用于已知目标站点存在可利用的SQL注入点,并希望从中提取额外的信息的情况。比如获取其他表格的名字、列名等敏感资料。 ```sql ?search=test'+union+select+null,table_name,null+from+information_schema.tables--+HTTP/1.1 Host: example.com ``` 上述例子展示了如何从MySQL内置的信息模式(information_schema)读取有关现有表的信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值