Pikachu靶场实战 xss篇

xss

跨站脚本(Cross-Site Scripting)是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种。它允许恶意用户将代码注入网页,其他用户在浏览网页时就会受到影响。恶意用户利用xss代码攻击成功后,可能层到很高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。
xss攻击可以分为三种:放射型、存储型和DOM型。

反射型xss(get)

在这里插入图片描述
输入测试代码查看是否有过滤,查看下源码。
在这里插入图片描述发现我们的测试代码直接在p标签中输出,直接使用<script>alert(/1/)</script>但发现对长度有限制,定位输入框直接修改长度
在这里插入图片描述
成功执行
在这里插入图片描述

反射型xss(post)

在这里插入图片描述
先登陆 admin 123456
在这里插入图片描述
因为时post方法我们可以进行抓包来查看
在这里插入图片描述有一个message提交的参数是url编码,我们可以发送到decoder模块中解码后可以看到是我们提交的测试代码。
在这里插入图片描述将我们的payload进行URL编码并提交。
在这里插入图片描述可以看到我们的payload已经成功插入到p标签中,我们在浏览器中查看一下。
在这里插入图片描述在这里插入图片描述

存储型xss

存储型xss又称持久型xss,攻击脚本将脚本永久的放在目标服务器的数据库或文件中,具有很高的隐蔽性。
攻击方式:常见于论坛、博客和留言板,攻击者在发帖的过程中,将恶意脚本连同正常信息一起注入帖子的内容中。
在这里插入图片描述
输入测试代码,查看是否有过滤。
在这里插入图片描述在这里插入图片描述测试代码直接输出在了p标签中,可以直接输入

payload,<script>alert(/xss/)</script>

在这里插入图片描述存储型xss,当每次点击存储型xss时就会弹窗,所以是持久型xss。

Dom型xss

HTML DOM树
在这里插入图片描述
输入测试代码
在这里插入图片描述
显示的内容和我们的输入的有所不同查看页面源码
在这里插入图片描述getElementById获取标签id为text的值给str,str通过字符串拼接到a标签中。所以我们要闭合前面的标签。

payload ‘><img src=x onerror=alert(/xss/)>

在这里插入图片描述

DOM型xss-x

点击请说出你的伤心往事就会弹出一句话
在这里插入图片描述
查看下页面源码
在这里插入图片描述domxss函数,使用window.location.search获取url的赋值值给str,经过url解码,取出的内容赋值给txss,将txss中的 “+” 替换为 “空格” 赋值给xss,最后将xss拼接到a标签中。和上面的方法相同,payload需要闭合标签。

'><img src=x onmouseover="alert(/xss/)">

鼠标悬停在图片上就会弹窗
在这里插入图片描述

xss之盲打

xss盲打是一种攻击场景。我们输出的payload不会再前端进行输出,当管理员查看时就会遭到xss攻击。
在这里插入图片描述
提示中告诉我们管理地址是/xssblind/admin_login.php,登陆到后台时就会遭受攻击
在这里插入图片描述

xss之过滤

在这里插入图片描述
输入测试代码,返回的值和我们输入的不同,查看页面源码。
在这里插入图片描述可以看到他将我们的script过滤掉了。我们可以使用双写尝试绕过。

<scri<script>pt>alert(/xss/)</scri</script>pt>

在这里插入图片描述
都过滤掉了,尝试大小写绕过

<SCRIPT>alert(/xss/)</sCRIpt>

在这里插入图片描述
成功绕过
当script为过滤关键词时,可以尝试其他的payload,如

<img src=x onmouseover="alert(/xss/)">

在这里插入图片描述还可以尝试编码绕过,可自行尝试一下。

xss之htmlspecialchars

PHP htmlspecialchars() 函数
htmlspecialchars() 函数把预定义的字符转换为 HTML 实体。
预定义的字符是:

  • & (和号)成为 &
  • " (双引号)成为 "
  • ’ (单引号)成为 ’
  • < (小于)成为 <
  • .> (大于)成为 >
用法:htmlspecialchars(string,flags,character-set,double_encode)
示例:
<?php
$str = "This is some <b>bold</b> text.";
echo htmlspecialchars($str);
?>

我们输入测试代码,查看页面源码
在这里插入图片描述
在这里插入图片描述可以看到<,>,“都做了转码,唯独”’"(单引号)没有进行转码,可以使用单引号构造payload。

' οnclick=alert(/xss/) '

在这里插入图片描述

xss之href输出

输入测试代码,查看下页面源码。
在这里插入图片描述
在这里插入图片描述可以看到过滤了 ’,“,<,> 这时候我们可以尝试使用伪协议绕过。

javascript:alert(/xss/)

在这里插入图片描述

xss之js输出

输入测试代码,查看下源码
在这里插入图片描述
在这里插入图片描述
输入的代码被生成再js中并赋值给$ms。既然我们的输入被带入到js中,可以闭合

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

在这里插入图片描述成功执行

人生漫漫其修远兮,网安无止境。
一同前行,加油!

猜你喜欢

转载自blog.csdn.net/qq_45924653/article/details/107387482