ToB企服应用市场:ToB评测及商务社交产业平台

标题: xss-基于Pikachu的学习 [打印本页]

作者: 鼠扑    时间: 2024-5-19 02:57
标题: xss-基于Pikachu的学习
XSS毛病-跨站脚本攻击

XSS的原理

跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表(Cascading Style Sheets, CSS)的缩写肴杂,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户欣赏该页面时,嵌入Web里面的Script代码会被执行,从而到达恶意攻击用户的目标。XSS攻击针对的是用户层面的攻击!
XSS的分类

  1. 攻击流程:
  2. 1. 攻击者发送带有XSS恶意的脚本链接给客户(该链接是正常服务器存在注入点的链接,且带着我们注入的内容)
  3. 2. 客户点击了恶意链接并访问了正常服务器
  4. 3. 服务器将XSS与页面信息返回客户端
  5. 4. 客户端解析后请求恶意服务器
  6. 5. 攻击者读取用户信息
复制代码
常见的html标签以及过滤

XSS过滤绕过总结 - 随风kali - 博客园 (cnblogs.com)
CTF-赛题

Pikachu Xss 反射型(GET)

本想直接输入弹窗代码,让他弹窗的,发现长度有了限制,然后就看看是不是前端有限制。同时抓包也发现自己所写的东西被直接嵌入在html的代码当中。
  1. [/code][align=center][img]https://img2023.cnblogs.com/blog/3439569/202405/3439569-20240501191326382-756884850.png[/img][/align]
  2. [align=center][img]https://img2023.cnblogs.com/blog/3439569/202405/3439569-20240501191325693-1443484285.png[/img][/align]
  3. F12审查元素,发现简直是前端限制了输入的长度,我们可以举行更改为长度100,然后再插入代码
  4. [align=center][img]https://img2023.cnblogs.com/blog/3439569/202405/3439569-20240501191325098-314804954.png[/img][/align]
  5. 成功了,成功弹窗 1
  6. [align=center][img]https://img2023.cnblogs.com/blog/3439569/202405/3439569-20240501191324464-2140857394.png[/img][/align]
  7. [size=4]Pikachu Xss 反射型(POST)[/size]
  8. 这一题就是先登录,登录可以参考暴力破解登录,登录后就是一个注入点,可以直接尝试注入
  9. [code]
复制代码
然后就得到了这个admin用户的cookie值

Pikachu Xss 存储型

这一题打开就是一个留言框,由前置知识了解到,这些留言板可以看成存储型Xss注入的注入点,我们可以写下恶意代码,当其他用户访问这个留言板,我们的恶意代码会直打仗发。

接下来我插入代码:
  1. [/code]接下来我们革新网站看看会发生怎么个事
  2. [align=center][img]https://img2023.cnblogs.com/blog/3439569/202405/3439569-20240501191321544-2116249967.png[/img][/align]
  3. 我们的cookie信息被触发了,这就是[b]存储型的Xss[/b]
  4. [size=4]Pikachu Xss DOM型[/size]
  5. 首先让他弹窗一下吧,我先试试,发现不行,回显what do you see?
  6. [code]
复制代码

DOM范例了解到主要是js代码,所以我们cirl + u 查看源码,搜索what do you see,快速定位

里面有一些提示,payload也是直接告诉我们了,所以我们需要去分析这一串代码
他是将我们输入的字符串,拼接在a标签前面,最后输出what do you see
我输入的payload是将a标签闭合,然后用img标签去触发xss
  1. '><img src=1 onerror=alert("xss");>
复制代码
完整的回显如下:
  1. <a target="_blank" href='https://www.cnblogs.com/'><img src=1 onerror=alert("xss");>'what do you see?</a>
复制代码
Pikachu Xss DOM型(xss-x)

首先输入代码:
  1. [/code]回显是一个超链接
  2. [align=center][img]https://img2023.cnblogs.com/blog/3439569/202405/3439569-20240501191319872-1526358909.png[/img][/align]
  3. 点击emo语句之后,就出现了释怀语句
  4. [align=center][img]https://img2023.cnblogs.com/blog/3439569/202405/3439569-20240501191319445-1073243664.png[/img][/align]
  5. 因为是DOM型,我们就用这个释怀语句,去源代码处搜索一下,到底怎么个事儿。
  6. 果然发现了js代码,代码逻辑就是点击了emo语句后,他会执行我们输入的字符串和emo语句的拼接,这时候就是闭合语句,执行xss注入。
  7. [align=center][img]https://img2023.cnblogs.com/blog/3439569/202405/3439569-20240501191318969-1451528763.png[/img][/align]
  8. 我们注入的payload如下:
  9. [code]' onclick="alert('hhhhhhhhh')">
复制代码
留意这里alert是由双引号包裹,而alert里面的内容则是单引号,这俩得不一样,我也不太清楚为什么

Pikachu Xss (过滤)

这道题试了试,被过滤了,然后参考html的标签,过滤的各种绕过
paylaod:
  1. <details open ontoggle="alert('xss');">
  2. <input onfocus="alert('xss');">
  3. <img src=1 onerror=alert("xss");>
  4. <svg onload=alert("xss");>
  5. <select onfocus=alert('xss') autofocus>
  6. <iframe onload=alert("xss");></iframe>
  7. <video><source onerror="alert('xss')">
复制代码

Pikachu Xss (htmlspecialchars)

输入 payload尝试一下:
  1. '><img src=1 onerror=alert("xss");>
复制代码

回显是一个超链接,那我们就打开源码举行查看,搜记录这个关键词

打开后就是看不懂的一堆代码,开始去搜htmlspecialchars这个函数方法

很符合这个标题,并且发现了单引号并没有过滤。所有就有了下面的payload
  1. ' onclick='alert(1)’
复制代码

但是接下来我又尝试了如下的:
  1. ' onclick='alert("xss")
复制代码
也是成功了,我也是有点晕,这个双引号怎么就可以用了,也是不太懂。
Pikachu Xss (href输出)
  1. '><img src=1 onerror=alert("xss");>
复制代码
还是老套路代入,发现一个超链接,开始源代码搜索;

发现都被过滤掉了,这道题的提示如下:

这里增补一点儿java的伪协议的知识
java伪协议

"javascript:" 协议是一种能够在 URL 中嵌入 JavaScript 代码并运行的协议。当欣赏器遇到一个包含 "javascript:" 的 URL 时,它会将后面的代码提取出来并在当前页面环境中执行。这就意味着我们可以通过 URL 来调用 JavaScript 函数或者执行一些 JavaScript 代码块。
将javascript代码添加到客户端的方法是把它放置在伪协议阐明符javascript:后的URL中。这个特殊的协议范例声明了URL的主体是恣意的javascript代码,它由javascript的表明器运行。如果javascript:URL中的javascript代码含有多个语句,必须使用分号将这些语句分隔开。
接下来回到标题,让我们用伪协议的方式去尝试一下xss的注入
  1. javascript:alert("xss")
复制代码

Pikachu Xss (js输出)

我输入了一个:
  1. haha
复制代码
然后查看源代码,发现自己输入的被代入到js代码当中

我们的输入的内容被直接看成变量
我们可以将其闭合,然后注释掉后面,所以payload:
  1. ';alert('xss');//
复制代码

成功注入。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4