Pikachu靶场实战 xss篇

   日期:2020-07-17     浏览:94    评论:0    
核心提示:pikachu xssxss反射型xss(get)反射型xss(post)存储型xssDom型xssDOM型xss-xxss之盲打xss之过滤xss之htmlspecialcharsxss之href输出xss之js输出xss跨站脚本(Cross-Site Scripting)是一种针对网站应用程序的安全漏洞攻击技术,是代码注入的一种。它允许恶意用户将代码注入网页,其他用户在浏览网页时就会受到影响。恶意用户利用xss代码攻击成功后,可能层到很高的权限(如执行一些操作)、私密网页内容、会话和cookie等各

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)


输入测试代码查看是否有过滤,查看下源码。
发现我们的测试代码直接在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>

成功执行

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

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服