pikachu靶场-xss

pikachu靶场-xss_第1张图片

XSS漏洞攻击原理

跨站脚本攻击是指恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。

一般XSS可以分为如下几种常见类型:

1.反射性XSS;

2.存储型XSS;

3.DOM型XSS;

XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。

  1. 反射型xss(get)

看到xss输入框,直接跟看到后台要试万能密码一样去试xss一句话

pikachu靶场-xss_第2张图片

限制了输入内容的长度

f12,选择输入框,把最大长度改为100

pikachu靶场-xss_第3张图片

再次输入代码

pikachu靶场-xss_第4张图片

或者直接在网址栏修改

pikachu靶场-xss_第5张图片
  1. 反射型xss(post)

给了提示为post形式

打开提示给了账号密码

进入界面,输入账号密码admin/123456

pikachu靶场-xss_第6张图片

登录成功后的界面

pikachu靶场-xss_第7张图片

打开bp进行抓包

输入test点击submit

pikachu靶场-xss_第8张图片

它会在界面回显你输入的内容,所以可能存在xss漏洞

对message进行修改

payload:

pikachu靶场-xss_第9张图片

payload自动进行了url编码,我们对其进行url编码(也就是对以上的payload进行两次url编码)

pikachu靶场-xss_第10张图片

在浏览器中打开response

pikachu靶场-xss_第11张图片
  1. 存储型xss

存储型xss又称持久型xss,攻击脚本将脚本永久的放在目标服务器的数据库或文件中,具有很高的隐蔽性。

攻击方式:常见于论坛、博客和留言板,攻击者在发帖的过程中,将恶意脚本连同正常信息一起注入帖子的内容中。

pikachu靶场-xss_第12张图片

输入payload:

pikachu靶场-xss_第13张图片

每次打开都会显示弹窗,所以为存储型xss

pikachu靶场-xss_第14张图片

  1. DOM型xss

输入测试代码

"'<>script

pikachu靶场-xss_第15张图片

通过what do you see找到script

获取ID为text的值传参给str,str拼接到a标签里面,需要把前面的标签给闭合

设置payload为

'>
pikachu靶场-xss_第16张图片
  1. DOM型xss-x

pikachu靶场-xss_第17张图片

点击右侧的按钮,就会弹出一句话

找到下面的源码

使用window.location.search获取url的赋值值给str,经过url解码,取出的内容赋值给txss,将txss中的 “+” 替换为 “空格” 赋值给xss,最后将xss拼接到a标签中。和上面的方法相同,payload需要闭合标签。

'>

需要点击“有些”蓝色文字,显示上面图片那一行

鼠标悬停在这个图片上就会弹出xss

pikachu靶场-xss_第18张图片

  1. xss之盲打

xss盲打是一种攻击场景。我们输出的payload不会再前端进行输出,当管理员查看时就会遭到xss攻击。

pikachu靶场-xss_第19张图片

一样输入payload

登录后台模拟管理员查看信息

pikachu靶场-xss_第20张图片

看到xss弹出,因为我用的公共靶场,所以弹得1

pikachu靶场-xss_第21张图片

弹了两次框,可以看到我们写的xss也在里面

pikachu靶场-xss_第22张图片
  1. xss之过滤

pikachu靶场-xss_第23张图片

输入测试的语句

回显如下

pikachu靶场-xss_第24张图片

过滤掉了script和<>

尝试双写script和大小写绕过(双写无效)

pikachu靶场-xss_第25张图片
  1. xss之htmlspecialchars

pikachu靶场-xss_第26张图片

PHP htmlspecialchars() 函数

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

预定义的字符是:

  • & (和号)成为 &

  • " (双引号)成为 "

  • ’ (单引号)成为 ’

  • < (小于)成为 <

  • .> (大于)成为 >

用法:htmlspecialchars(string,flags,character-set,double_encode)

示例:
bold text.";
echo htmlspecialchars($str);
?>

输入测试payload

pikachu靶场-xss_第27张图片

可以看到<>被转义

只有'(单引号)未被转义

可以直接利用单引号构造payload

#' onclick='alert(1)'
pikachu靶场-xss_第28张图片

点击蓝色链接成功弹窗

  1. xss之href输出

pikachu靶场-xss_第29张图片

输入进行测试,没法弹窗,查看源代码被转义

pikachu靶场-xss_第30张图片

尝试伪协议绕过

javascript:alert(/xss/)
pikachu靶场-xss_第31张图片

成功弹窗

  1. xss之js输出

pikachu靶场-xss_第32张图片

输入测试一下

查看源代码

pikachu靶场-xss_第33张图片

首先要用’;闭合掉当前的语句,然后插入新语句,然后再用//注释掉老语句遗留下来的’;

payload:

';alert(1);//
pikachu靶场-xss_第34张图片

成功弹窗

你可能感兴趣的:(pikachu,网络安全,xss,前端,安全,web安全,ctf)