Pikachu靶场实战 xss篇

pikachu xss

  • xss
  • 反射型xss(get)
  • 反射型xss(post)
  • 存储型xss
  • Dom型xss
  • DOM型xss-x
  • xss之盲打
  • xss之过滤
  • xss之htmlspecialchars
  • xss之href输出
  • xss之js输出

xss

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

反射型xss(get)

Pikachu靶场实战 xss篇_第1张图片
输入测试代码查看是否有过滤,查看下源码。
Pikachu靶场实战 xss篇_第2张图片发现我们的测试代码直接在p标签中输出,直接使用但发现对长度有限制,定位输入框直接修改长度
在这里插入图片描述
成功执行
Pikachu靶场实战 xss篇_第3张图片

反射型xss(post)

Pikachu靶场实战 xss篇_第4张图片
先登陆 admin 123456
Pikachu靶场实战 xss篇_第5张图片
因为时post方法我们可以进行抓包来查看
Pikachu靶场实战 xss篇_第6张图片有一个message提交的参数是url编码,我们可以发送到decoder模块中解码后可以看到是我们提交的测试代码。
Pikachu靶场实战 xss篇_第7张图片将我们的payload进行URL编码并提交。
Pikachu靶场实战 xss篇_第8张图片可以看到我们的payload已经成功插入到p标签中,我们在浏览器中查看一下。
Pikachu靶场实战 xss篇_第9张图片Pikachu靶场实战 xss篇_第10张图片

存储型xss

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

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

Pikachu靶场实战 xss篇_第14张图片存储型xss,当每次点击存储型xss时就会弹窗,所以是持久型xss。

Dom型xss

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

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

Pikachu靶场实战 xss篇_第16张图片

DOM型xss-x

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

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

鼠标悬停在图片上就会弹窗
Pikachu靶场实战 xss篇_第18张图片

xss之盲打

xss盲打是一种攻击场景。我们输出的payload不会再前端进行输出,当管理员查看时就会遭到xss攻击。
Pikachu靶场实战 xss篇_第19张图片
提示中告诉我们管理地址是/xssblind/admin_login.php,登陆到后台时就会遭受攻击
Pikachu靶场实战 xss篇_第20张图片

xss之过滤

Pikachu靶场实战 xss篇_第21张图片
输入测试代码,返回的值和我们输入的不同,查看页面源码。
Pikachu靶场实战 xss篇_第22张图片可以看到他将我们的script过滤掉了。我们可以使用双写尝试绕过。

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

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

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

Pikachu靶场实战 xss篇_第23张图片
成功绕过
当script为过滤关键词时,可以尝试其他的payload,如

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

Pikachu靶场实战 xss篇_第24张图片还可以尝试编码绕过,可自行尝试一下。

xss之htmlspecialchars

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

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

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

' οnclick=alert(/xss/) '

Pikachu靶场实战 xss篇_第26张图片

xss之href输出

输入测试代码,查看下页面源码。
Pikachu靶场实战 xss篇_第27张图片
在这里插入图片描述可以看到过滤了 ’,“,<,> 这时候我们可以尝试使用伪协议绕过。

javascript:alert(/xss/)

Pikachu靶场实战 xss篇_第28张图片

xss之js输出

输入测试代码,查看下源码
Pikachu靶场实战 xss篇_第29张图片
Pikachu靶场实战 xss篇_第30张图片
输入的代码被生成再js中并赋值给$ms。既然我们的输入被带入到js中,可以闭合

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

Pikachu靶场实战 xss篇_第31张图片成功执行

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

你可能感兴趣的:(靶场实战,xss,安全,javascript,web,安全漏洞)