第三关

xss-labs第三关_双引号

 

 

 老套路,有输入框进行输入随意值查看返回,然后在输入xss注入语句。

xss-labs第三关_双引号_02

 

 

 xss-labs第三关_双引号_03

 

 

 没结果,首先查看网页端源码进行分析。根据结果得出这次是真的过滤了尖括号。

xss-labs第三关_双引号_04

 

 

 那我们尝试第二关的方法,进行闭合value参数看看。

 

 

xss-labs第三关_双引号_05

 

 

 

 

 

 

依旧是没有结果,继续查看网页源码。我们可以发现,闭合value属性这个方法是可行的,但是后面执行<script>alert(1)</script>语句的尖括号还是被过滤了。

xss-labs第三关_javascript_06

 

这时我们可以换一个思路,首先xss的全名是Cross Site Scripting(跨站脚本攻击)。script标签只是为了达成xss攻击这个目的一个小小的手段,我们为了达成xss攻击这个可以有多个手段。比方说使用其他属性的语句,然后属性的值是javascript的伪协议(javascript:这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行)或者使用一些属性,属性里面运行alert(1)弹框语句。

可以构造如下的payload(ps:onmouseover 属性在鼠标指针移动到元素上时触发。)



' onmouseover=javascript:alert(1) '


 

或者构造

 

 



' onmouseover='alert(1)


都可以完成攻击。

xss-labs第三关_双引号_07

 

 

 

 攻击成功,查看下网页端的源码。成功闭合构造onmouseover属性

xss-labs第三关_javascript_08

 

 我们在查看后端源码分析。使用了htmlspecialchars函数过滤输入。

xss-labs第三关_单引号_09

 

 我们来看看这个函数的功能

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

预定义的字符是:

  • & (和号)成为 &
  • " (双引号)成为 "
  • ' (单引号)成为 '
  • < (小于)成为 <
  • > (大于)成为 >

过滤了一些符号,但是我们这边在闭合后使用其他属性语句突破,压根就没有使用尖括号。

总结:面对一些过滤的时候,我们可以换个思路使用其他标签或者属性来绕过从而达到xss攻击这个目的。