xss-labs靶场1-5关

文章目录

  • 前言
  • 一、靶场需要知道的前置知识点
    • 1、什么是xss攻击?
    • 2、xss攻击分为几大类
      • 1、反射型xss
      • 2、存储型xss
      • 3、dom型xss
    • 3、xss攻击形成的条件
  • 二、xss-labs关卡1-5
    • 1、关卡1
    • 2、关卡2
    • 3、关卡3
    • 4、关卡4
    • 5、关卡5
  • 总结


前言

此文章只用于学习和反思巩固xss攻击知识,禁止用于做非法攻击。注意靶场是可以练习的平台,不能随意去尚未授权的网站做渗透测试!!!


一、靶场需要知道的前置知识点

  • 1、什么是xss攻击?
  • 2、xss攻击分为几大类
  • 3、xss攻击形成的条件

1、什么是xss攻击?

xss攻击是指攻击者通过插入恶意的xss代码到web页面,当受害者访问插有xss代码的web页面的时候,xss代码会被当作js脚本执行,从而让攻击者达到获取受害者利益的目的。通常xss攻击可以获取cookie,钓鱼、挂马等等。

2、xss攻击分为几大类

  • 1、反射型xss
  • 2、存储型xss
  • 3、dom型xss

1、反射型xss

反射型xss,也是非持久性xss攻击。一般在搜索框、url参数可以见到,攻击者通过注入恶意的脚本代码到如url参数上,然后诱导用户去点击访问,从而盗取用户的重要信息如cookie。因为反射型xss缺点比较多,是一次性的,而且还得利用社会工程学诱导用户点击自己植入xss恶意脚本代码的链接才能生效。

2、存储型xss

存储型xss,也是持久性xss攻击。一般在留言框、登录框可以见到。攻击者会把恶意代码存储到服务器,当用户去访问服务器的时候,服务器会加载已经存储好的恶意代码,从而达到攻击者获取用户信息的目的。

3、dom型xss

不经过后端,DOM-XSS漏洞是基于文档对象模型(Document Objeet Model,DOM)的一种漏洞,DOM-XSS是通过url传入参数去控制触发的,其实也属于反射型XSS。

3、xss攻击形成的条件

  • 1、可控参数
  • 2、无过滤输入输出
  • 3、服务器能解析js脚本带回web页面等等

二、xss-labs关卡1-5

1、关卡1

xss-labs靶场1-5关_第1张图片

发现url有参数name,有可控参数且在url展示一般是反射型xss,如果服务器没有对name参数过滤输入输出,就会造成xss攻击。
攻击语句为

<script>alert(1)</script>

xss-labs靶场1-5关_第2张图片
看源代码也是发现并没有对name参数输出进行过滤。
xss-labs靶场1-5关_第3张图片

2、关卡2

发现也是url有一个keyword参数,然后是可控参数。是反射型xss。

xss-labs靶场1-5关_第4张图片
提交上一关的攻击语句发现并没有用,我们F12审查元素,看看前端代码。或者直接看前端代码
xss-labs靶场1-5关_第5张图片
xss-labs靶场1-5关_第6张图片

<input name="keyword" value="">

发现输入的js代码没有被浏览器执行,h2标签内关键字符被实体化了。但是发现input标签没有过滤输出,这里我们把input进行闭合,构造payload让js弹窗成功执行。

攻击语句为

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

xss-labs靶场1-5关_第7张图片
看页面源代码发现参数在input标签没有被实体化,但是输出在web页面h2标签的keyword被实体化了。所以只能在input标签构造payload
xss-labs靶场1-5关_第8张图片

3、关卡3

第三关发现url也有可控参数wait,但是发现它无论输入什么值并没有被带回web页面,我们只能在搜索框下手了。但是发现搜索框输入">并没有被web页面执行。我们猜测是被过滤了,发现前端代码h2标签和input标签都把<>和双引号实体化输出了。
xss-labs靶场1-5关_第9张图片
xss-labs靶场1-5关_第10张图片

那么就不能用上一关的通过闭合input标签,或者是第一关直接在h2
标签script语句执行xss了
这里我们用onclick事件
xss-labs靶场1-5关_第11张图片
我们在input标签下手
我们要进行闭合value。发现单引号没有被闭合
攻击语句为

'οnclick='alert(1)

xss-labs靶场1-5关_第12张图片
这里攻击语句第二个单引号是为了构造出οnclick=‘alert()’,因为onclick的值要被双引号或者单引号引用。
注意
那么为什么不能直接通过οnclick=alert()在h2标签执行xss语句呢?因为h2标签是会把οnclick=alert()语句当作字符串文本输出,而不是当作js脚本执行。但是第一关我们就是通过h2标签插入script语句执行xss的?因为script语句是是标准的js代码,独立于html标签外,并不会当作字符串文本输出,而是当作js脚本执行。
看源代码也是发现输出参数被实体化
xss-labs靶场1-5关_第13张图片

4、关卡4

第四关也是发现url有可控参数keyword。这里我们有了经验,先看看可控参数有没有被实体化,我们提交’"<>看看是怎么回事
看前端代码发现input标签的value参数的<>符号不见了,h2标签输出的值也被实体化。
xss-labs靶场1-5关_第14张图片
那么还是用不了尖括号了,我们这里还是利用onclick事件,由于这里输入的input标签是双引号闭合
攻击语句为

"οnclick="alert(1)

xss-labs靶场1-5关_第15张图片
看源码也是发现参数<>被替换为空,输出参数被实体化。
xss-labs靶场1-5关_第16张图片

5、关卡5

发现第五关url也是有可控参数keyword,这里我们试一试提交<>"’
然后看前端代码发现h2标签的值被实体化,value参数貌似没有过滤。

xss-labs靶场1-5关_第17张图片
xss-labs靶场1-5关_第18张图片
因为这次value参数输出没有实体化,我们试一试">
发现script被过滤了。被替换成scr_ipt,所以script攻击语句用不了了,我们大小写试一下发现也不行,可能value参数也被大小写过滤。再试试onclick事件也不行,发现on被替换成o_n。
=
xss-labs靶场1-5关_第19张图片
xss-labs靶场1-5关_第20张图片
==所以之前所有方法都不行,那么这里就要利用标签了
xss-labs靶场1-5关_第21张图片
闭合input标签构造攻击语句为

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

为什么script可以用了呢,因为这里是把script替换为scr_ipt,不是替换javascript。这里是通过a标签,制作一个test超链接。点击test链接就会触发js弹窗
xss-labs靶场1-5关_第22张图片
点击test就行了。看源码也是发现script、on被替换了,输出参数被实体,输入参数被大小写过滤。
xss-labs靶场1-5关_第23张图片

总结

xss攻击分为反射型,存储型,dom型。前五关是反射型xss,xss能触发的原因是有可控参数,输入输出没有严格过滤、服务器能解析js脚本带回web页面。可以通过闭合标签构造payload。此文章是小白自己为了巩固xss攻击而写的,大佬路过请多指教!

你可能感兴趣的:(xss-labs靶场,xss,web安全,安全)