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

xss刷题网站2 https://xss.haozi.me/

一个非常可爱的网站。这是网站界面,题目序号是十六进制,一共19道题。
xss.haozi 思路总结 0x00-0x12_第1张图片

0x00

直接输入

0x01

先闭合textarea框再实现

0x02

在input框中,先引号闭合,再输入onmouseover="alert(1)">
太强了,在input code中输入是实时反馈的,强推这个网站。

0x03

题目过滤了(),利用反引号`绕过
反引号可以替代单双引号

0x04

题目过滤了()`,利用字符编码绕过

0x05

html注释有两种格式,


这道题过滤了 --> 可以构造-!>

0x06

过滤了以auto/on开头,以=结尾的字符串,并且忽略大小写,可以利用换行符绕过正则

onmouseover
=alert(1)

0x07

过滤了尖括号之间的字符,忽略大小写。
可以利用浏览器的兼容性,右尖括号可以不用写。

0x08

题目将替换为/* 坏人 */
又是利用换行绕过正则


0x09

正则表达式要求输入文本必须包含网址,闭合src参数,写onload参数。
https://www.segmentfault.com" onload=alert(1)>
也可以先闭合script标签,然后注释掉后面
https://www.segmentfault.com">//

0x0A

要求包含网址和上题一样,另外将常用符号转换成了编码形式。
答案是https://[email protected]/j.js
这里实际上,是把www.segmentfault.com当成了登录后面网址的用户名,
xss.haozi 思路总结 0x00-0x12_第2张图片
这里xss.haozi.me/j.js文件内存放着alert(1);
(在xss注入中属于引入漏洞页面)

0x0B

这里将输入转换为大写输出。
构造aaa但并不对,html不区分大小写,而js区分大小写。
应构造html代码:未通过
通过

0x0C

和上题一样,添加了对script的过滤。利用双写绕过。
构造:

0x0D

过滤了符号,
先用换行绕过//注释,再用–>忽略后面的引号和括号。

alert(1)
-->

0x0E

特殊符号绕过,ſ经过toUpperCase函数会变成S。
构造<ſcript src="https://www.segmentfault.com.haozi.me/j.js">

0x0F

闭合console.error,再添加alert
');alert(1);//
构造结果是

0x10

闭合data赋值,然后分号,换行都可以
1;alert(1)

0x11

针对过滤做的一点变通
"过滤为\\",但目的达成,闭合了前面的双引号,然后执行了语句,并用//注释了后面的语句.
");alert(1)//

0x12

完整代码是")

  • 换行符和可以绕过正则,因为正则为读取一行字符串进行检测。
  • html兼容性可以让一些标签缺少某些标签,或参数时仍然运行。
  • url中的@可以让前面的文字变成登录名。如[email protected]。这时登录的是百度。
  • html不区分大小写,而js区分大小写
  • //为单行注释,换行可以绕过。
  • 一些特殊符号可以用来绕过大小写检测,如ſ经过toUpperCase函数会变成S。
  • 你可能感兴趣的:(ctf)