xss靶场解析


xss靶场解析

第一关:

get型xss漏洞

image-20210502092945171

  1. 根据地址拦确定,提交的参数是name

  2. 构造name的payload

    ?name=<script>alert(1)</script>

    image-20210502093123164

  3. 所以这一关没有进行任何的防护措施

第二关

很显然这次的注入点应该是在表单里

  1. 表单是有自己的标签的

image-20210502093605691

  1. 我们需要先把input标签闭合才能执行我们自己的标签
"><script>alert(1)</script>

image-20210502093912217

还有另一种方法

既然form有自己的标签,那么我们直接利用标签的属性进行弹窗

  • 构造payload
"onclick="alert(1)

image-20210502094410387

第三关

image-20210502094803444

很显然这里的‘<’’>’是被编译过的,因此没办法使用标签,那么,就用属性来做了

同样注意到这里value的闭合方式是’’.

payload

'onclick='alert(1)

image-20210502095021729

第四关

image-20210502095248422

  1. 看这里,就很显然,输入的和实际进去的不一样<>全都没了。。。

  2. 那么试一下双写,没用。。。。。。。

  3. 不搞了,属性试试

payload

" onclick="alert(1)

image-20210502095644563

所以,本关就是过滤了尖括号

第五关

image-20210502100122792

  1. 这次正常的脚本和事件注入,都不行

  2. 输入后,看一下源代码

image-20210502100219866

on变成了o_n

image-20210502100311875

ri变成了r_i

这两标签不能用了,那用其他的吧

such as:

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

image-20210502100513142

image-20210502100605210

点击一下图片就会弹窗

第六关

image-20210502100825953

  1. 继续用<href>标签试试

也没啥用

image-20210502101340299

太优秀了啊!!!

  1. 那么试一下大小写
"><SCRIPT>alert(1)<SCRIPT>

image-20210502102030375

第七关

  1. 输入
"><script>alert(1)</script><"

image-20210502102437575

直接连script给整没了。。。

"><href a="javascript:alert1()

image-20210502102644271

  1. 根据sql的经验,使用嵌套的方式试试吧

字符串里面的script被替换成“=”,但是标签里面的script被替换成空

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

image-20210502103932091

那么,这里就是双写

第八关

  1. 输入

    a = javascript:alert(1)

image-20210502104623789

这里又是被转换了。。。

  1. 如果是
"><href a="javacript:alert(1)

image-20210502105336456

狠毒啊!!!

image-20210502105449460

  1. 看一下源代码吧。。。

这里基本上把能用的标签都转换了,

  1. 这里还有个函数
htmlspecialchars:

 		把预定义的字符 "<" (小于)和 ">" (大于)转换为 HTML 实体:

这个函数是把没有经过处理的函数进行html实体编码

尝试先对构造的payload进行html实体解码,再试试

javascript:alert(1)

html编码
&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3a;&#x61;&#x6c;&#x65;&#x72;&#x74;&#x28;&#x31;&#x29;

image-20210502111021552

第九关

  1. 继续按第八关的做法,发现不行

image-20210502111317672

  1. 看一下源代码

image-20210502111533152

  1. 他这里做了一下选择

意思是,如果语句中有http://才能通过,那么我们加上,同时还要满足脚本语句,尝试把,http加入到alert()里面

&#x6a;&#x61;&#x76;&#x61;&#x73;&#x63;&#x72;&#x69;&#x70;&#x74;&#x3a;alert('http://')

image-20210502112345257

ok

第10关

  1. 没有表单,尝试在url中输入,but,不行

image-20210502112721206

  1. 看一下页面源代码

有几个隐藏的标签

image-20210502112815141

  1. 尝试利用这几个隐藏的标签,完成xss

image-20210502113104795

没反应,看下源代码

image-20210502113246123

没变化,可能不是这个

换成t_history也没变化

那么就只有t_sort

?t_sort=<script>alert(1)</script>

image-20210502113407530

在这里他把我们所有的<>都搞没了

尝试事件注入吧

由于是隐藏标签,构建payload时:

t_sort=2" onclick="alert(2)" type="text"

先利用text标签让他显示出来,再点击执行js代码

image-20210502115136024

第11关

  1. 看一下源代码

image-20210503083406640

  1. 同样是一些隐藏的标签,直接试一下,从t_ref能不能执行注入

没啥用,还是在t_sort执行吧

image-20210503083929798

还是没用

image-20210503084012148

标签没有被做过任何处理,但还是没有执行成功,所以,注入点不在这里。。。。

试了几个其他的都没啥用。。。

  1. 最后看一下源代码

image-20210503084324493

原来这里获取3个值,t_sort试了不行,那么就只有gttp_referer,这里只做了一个过滤,所以利用bp抓报吧

不让用尖括号,就用属性值!

image-20210503085404180

注意:

Referer字段必须与上面的字段接着。。。

GET /xss/level11.php HTTP/1.1
Host: 192.168.220.12
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:88.0) Gecko/20100101 Firefox/88.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Cookie: PHPSESSID=5r7fmn7mb96g512gv1p4jn20b2
Upgrade-Insecure-Requests: 1
Pragma: no-cache
Cache-Control: no-cache
Content-Length: 0
Referer:  2" onclick="alert(1)" type="text"
  1. 构造payload
Referer: 1" onclick="alert(1)" type= "text"

image-20210503103303703

OKK!!

第12关

  1. 查看源代码,那么估计处这次的注入点应该是User-Agent

image-20210503104549806

那么类似于上一关试一试

  1. 构造payload
1" onclick="alert(1)" type="text"

image-20210503104901873

  1. 点击一下完成xss

image-20210503104828286

第14关

  1. 查看源代码

image-20210503104950911

这里人家都说了是他,那么,就不尝试其他的了

  1. 抓包,改cookie

image-20210503105328405

注意遵循原cookie的格式

这里改变了属性,只要鼠标移上去就会触发

image-20210503105435511

第14关

不知道干啥

image-20210503105831766

源代码,也是啥也没给

估计是啥也不让做,先过了

第15关

  1. 查看源代码

image-20210503110041349

这个东西可以看一下这个教程

菜鸟教程

  1. 由于找不到注入点,试一下看看源代码

image-20210503110916437

这里找到了注入点

ng-include 指令用于包含外部的 HTML 文件。而且只能包含同一级目录的。

在15关我们可以包含第一关的页面(xss简单) 同时还注意到他对注入的字符串进行了html实体编码

?src='level1.php'

image-20210503111738101

由于实体编码,就采用事件注入吧

构造payload

?src='levael1.php?name=<input onclick=alert(2)>'

image-20210503113619450

OKK

第16关

  1. 试探一下

image-20210503113851633

发现script没了

  1. 可能不简单,看一下源代码

image-20210503114053975

过滤了空格,/,script

尝试其他的标签

?keyword=<input%0Aonclick=alert(1)>

image-20210503120502298

第17关

查看源代码

image-20210503121216312

这个标签的解释:

image-20210503120752248

根据地址栏发现注入点,但是不清楚怎么处理,看一下源代码

image-20210503121544119

直接利用事件注入就可以

onmouseover=javascript=javascript:alert(1)

image-20210503122659416

火狐看不到图,我换成了google

第18关

和17题类似,看一下源代码做了什么处理

image-20210503131643512

好像是没啥变化??

使用17题的payload

image-20210503132105811

过了

第19关

试一下18关的代码

没用。。。。

看下源代码

image-20210503133340170

和之前不一样,这里需要闭合这个双引号,不然就以为只是一个属性,之前是不需要闭合的

由于经过了htmlspecialchars处理,双引号也在被处理的范围//

参考

Flash产生的xss问题主要有两种方式:
 1.加载第三方资源
 2.与javascript通信引发XSS。

由于各种浏览器,都看不到注入的结果是啥,先暂停一下,之后再弄。。


文章作者: 尘落
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 尘落 !
评论
  目录