Cross-Site Scripting-pikachu

反射型xss(get)

在输入框里输入kobe,返回一段文字和图片

在这里插入图片描述

直接输入xss的payload,发现没法继续输入,可能前端存在长度限制

在这里插入图片描述

我们有两种方法,绕过限制

方法一:直接修改前端代码

将原来的maxlength=20修改为100

在这里插入图片描述

成功弹窗了

在这里插入图片描述

方法二:修改url

先输入一段payload

在这里插入图片描述

由于这是get请求,所以,payload会直接存在url地址栏里

所以直接构造url

http://IP地址/pikachu/vul/xss/xss_reflected_get.php?message=%3Cscript%3Ealert(%27xss%27)%3C/script%3E&submit=submit#

成功弹窗

在这里插入图片描述

反射型xss(post)

登录框输入admin/123456

在这里插入图片描述

直接输入payload

在这里插入图片描述

成功弹窗

在这里插入图片描述

get和post请求方法之间的区别

HTTP(超文本传输协议)是一种用于传输网页的协议,它定义了客户端与服务器之间请求和响应的格式。在HTTP中,有两种常见的请求方法:GET和POST。它们的主要区别如下:

  1. 数据传输方式

    • GET:通过URL传递数据,数据附加在URL之后,以?分隔,参数之间以&连接。例如:http://example.com/page?name=value&name2=value2
    • POST:通过请求体(request body)传递数据,数据不会显示在URL中。
  2. 数据大小限制

    • GET:由于数据附加在URL上,因此受到URL长度限制,不同浏览器和服务器对URL长度有不同的限制。
    • POST:理论上没有数据大小限制,因为它通过请求体传输数据。
  3. 安全性

    • GET:由于数据在URL中可见,因此不安全,不适合传输敏感信息。
    • POST:数据在请求体中,对用户不可见,相对更安全。
  4. 幂等性

    • GET:幂等的,意味着多次执行相同的GET请求,结果相同,不会改变服务器状态。
    • POST:非幂等的,可以改变服务器状态,比如提交表单。
  5. 缓存

    • GET:可以被缓存,浏览器和服务器可以缓存GET请求的结果。
    • POST:默认不被缓存,因为POST通常用于修改服务器状态。
  6. 历史记录

    • GET:在浏览器的历史记录中会留下记录。
    • POST:在浏览器的历史记录中不会留下记录。
  7. 书签

    • GET:可以被书签,因为URL包含了所有信息。
    • POST:不能被书签,因为数据不在URL中。
  8. 重播

    • GET:可以通过点击浏览器的后退按钮重播。
    • POST:通常不能通过后退按钮重播,因为POST请求改变了服务器状态。

总的来说,GET方法适合请求数据,而POST方法适合提交数据。在实际应用中,应根据需要选择合适的方法。

存储型xss

输入payload

在这里插入图片描述

弹窗了

![在这里插入图片描述

发现输入了越多次的payload,留言会增加,弹窗的次数也会增加
说明我们的数据被存储起来了,这就是存储型的xss

在这里插入图片描述

DOM型xss

什么是DOM呢?

网页的DOM(Document Object Model)是一个编程接口,它将网页转换为一个可操作的树状结构,使得开发者可以通过脚本来访问和修改网页的内容、结构和样式。

输入payload

在这里插入图片描述

打开F12,我们发现没有实现攻击效果的原因,字符串

在这里插入图片描述

找到网页js代码

在这里插入图片描述

根据这个闭合的条件,构造payload

<a href=' "+str+"'>
srt = ' οnclick="alert('xss')">
<a href=' " ' onclick="alert('xss')">' " '

弹窗了
在这里插入图片描述

DOM型xss-x

payload和上一关一样

’ οnclick=“alert(‘xss’)”>

xss之盲打

对着留言框输入payload,然后提交
!在这里插入图片描述

提示我们需要登录后台
http://IP地址/pikachu/vul/xss/xssblind/admin_login.php
在这里插入图片描述

输入账号密码admin/123456
在这里插入图片描述

实现攻击效果

在这里插入图片描述

xss之过滤

在这里插入图片描述

在这里插入图片描述

随便输入个123,看看前端效果

在这里插入图片描述

既然存在字符的过滤,那么我们可以换一个payload


<a href="" onclick="alert('xss')">

在这里插入图片描述

xss之htmlspecialchars

在这里插入图片描述

针对于这个双引号闭合,构造新的payload

在这里插入图片描述

' οnclick='alert("xss")

在这里插入图片描述

xss之href输出

在这里插入图片描述

在这里插入图片描述

查看页面源代码,这里给进行了html编码

在这里插入图片描述

利用JavaScript 代码段

javascript:alert(1)

在这里插入图片描述

xss之js输出

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

输入payload没有反应

在这里插入图片描述

查看页面源代码

在这里插入图片描述

这里前面有一个< scirpt >标签了,导致对应关系出问题了,我们要想办法闭合掉第一个标签

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

成功弹窗

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值