一个XSS靶场练习记录

 

首先,传送门:

http://xss.fbisb.com/yx/level1.php?name=test

 

其次,挑选合适的浏览器,我用的火狐。Chrome会阻断掉你的XSS注入。

 

level1:

  一个XSS靶场练习记录_第1张图片

产看下源码(ctrl + u):





欢迎来到level1


欢迎来到level1

欢迎用户test

payload的长度:4

看其中的一段script,alert函数被重新定义(赋值),它的功能就是将window.location.href修改为level2的地址。话句话说,我们只要能执行alert函数,就可以跳进下一关。

 

当然了,你可以把script中href的值“level2.php?keywork=test”,粘贴赋值修改当前网页的url,也就跳到下一关了。(虽然显得吃的有点多,但你很擅长)。

 

来看第一关,修改url中name的参数:

             一个XSS靶场练习记录_第2张图片

网页中的显示,也相应的修改。(联系前面的知识,很明显,这属于反射型的XSS)

 

直接写脚本:name=

                                            一个XSS靶场练习记录_第3张图片

没有对输入进行任何过滤,脚本执行成功,下一关。

 

level2:

      一个XSS靶场练习记录_第4张图片

有一个输入框,而输入框的value正是其上文本的内容。换成脚本:

                一个XSS靶场练习记录_第5张图片

发现输入的内容被完完整整的显示了出来。看源码:

一个XSS靶场练习记录_第6张图片

后台过滤了<>符号,对其进行了实体化。但是我们发现了另一个可搞的地方。input标签的value值,正是我们的输入内容,且没有过滤。

 

修改payload:">

 

提前将input标签闭合,让 欢迎来到level11

欢迎来到level11

没有找到和good job!相关的结果.

payload的长度:9

其中多了一个input,它的value很有趣,就是第10关的url。看input的name为ref,也能猜到这个东西是refer。

 

很早之前写的,可以简单瞅下,不瞅也没事,多听我嘚啵嘚。

 

https://huayuquan.github.io/page/XFF_Referer.html

 

我们经常说的“抓包”,准确点说应该叫做“截获报文”。其中有referer段,其值为访问的来源。举个例子,你从Three six zero网页上访问了four three nine nine。如果你截获这个包,包里的referer值就是three six zero的地址。

 

回到题目上来,我们仍旧按照level10的思路给几个参数试试(包括新的t_ref)。

 

t_link=something&t_history=something&t_sort=something&t_ref=something

 

可以看到:

                    

t_sort的value还是从url中获得了,那就继续呗,上次怎么搞的,继续搞,抓崩它,搞心态,你擅长。

 

payload:" type="text" οnclick=alert() "

 

结果没想到,被反蹲了:

怎么可能被你抓两次呢。人家把"实体化了。

 

你是不是以为我上面讲refer是随便说的,haaa。

 

尝试下哈,hackbar:

一个XSS靶场练习记录_第38张图片

给个refer,随便写点什么看看效果。(等会抓包)

 

                             一个XSS靶场练习记录_第39张图片

t_ref获得了字段参数,看看它有没有实体化引号。

                                          一个XSS靶场练习记录_第40张图片

                   

No~,呵呵。现在可以把level10的payload给refer了。

 

一个XSS靶场练习记录_第41张图片

 

用Burpsuite抓个包:

                     一个XSS靶场练习记录_第42张图片

发现报文中的referer字段,修改此字段的值和上面的效果是一样的。

 

一个XSS靶场练习记录_第43张图片

 

level12:

一个XSS靶场练习记录_第44张图片

看源码:

一个XSS靶场练习记录_第45张图片

这个东西熟悉吗?对,就是UA,猜测到t_ua的值是获取报文中的User-Agent(用户代理,我不贴传送门了,动手去查查吧。)字段,直接抓包吧。看着直观一点:

 

一个XSS靶场练习记录_第46张图片

user-agent字段和value值一模一样,还可以看到,这次的referer字段是上关我们的paylaod(无关紧要了)。来修改user-agent的值:

一个XSS靶场练习记录_第47张图片

我们修改了UA,页面中的value也相应的变化了。OK,可以注入,但是这时你直接用上面的payload的出现了这个东西:

一个XSS靶场练习记录_第48张图片

页面的效果是:

一个XSS靶场练习记录_第49张图片

被禁止掉了,服务器干的。正常情况下UA是客户端的表示,但是我们修改后的东西,显然不太可爱。让服务器认为自己可能受到了攻击,ban掉了。那你怎么pick嘞?

 

你就把正常的该怎么给怎么给,然后继续写你的payload嘛。

 

UA的payload:

Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0" type="text" οnclick=alert() "

 

                                  一个XSS靶场练习记录_第50张图片

出现了。

 

level13:

                   一个XSS靶场练习记录_第51张图片

瞅源码:

           一个XSS靶场练习记录_第52张图片

前两个题分别是UA和Referer,按照我们有依据的猜,这个肯定就是cookie了。你看那个诱惑的名字t_cook,还有略带挑衅的value “call me maybe?”。

 

那就call它吧。直接抓包:

一个XSS靶场练习记录_第53张图片

你会看到cookie字段里面有个user参数的值是和页面的value一致的,call me maybe。

 

如果前面两个你还可以直接用hackbar给个参数试试,这个就必须抓包了。不然怎么可能想的到,cookie里面还有个user呀~,糟老头子。

 

尝试修改cookie内容:

一个XSS靶场练习记录_第54张图片

 

cookie注入:user=" type="text" οnclick=alert() "

                   一个XSS靶场练习记录_第55张图片

我们看到输入框它,它,它来了它来了,它迈着......:

                一个XSS靶场练习记录_第56张图片

 

点击过关,下一关。

 

level14:

一个XSS靶场练习记录_第57张图片

这一关涉及到文件上传方面,但是这个功能已经不能用了(2019.9做的测试),也没得演示。可能是这个功能被好多玩家恶意利用,已经超过了网管的能力,不得已取消了吧。(我瞎猜的,别当真。)

 

直接进入下一关吧(别问我怎么进下一关,最开始就告诉你那个吃的有点多的方法了。抬头!把你上面url里面的14改成15)。

 

level15:

一个XSS靶场练习记录_第58张图片

这一关,我认为它涉及到的就是文件包含的相关内容。源码里面:

                一个XSS靶场练习记录_第59张图片

ng-include使用了AngularJS,他通过新的属性和表达式扩展了 HTML。而include的功能就是将其他html文件包含进来,例如我们包含的文件是前几关的页面,再使用前几关的paylaod就可以通过。

 

遗憾的是......,这个功能点也出了问题。看下一个吧。(想练习这一块的,去找文件上传和文件包含的内容)

 

level16:

http://xss.fbisb.com/yx/level16.php?keyword=test

 

url中的参数,在页面显示。这和最开始几关的情形差不多,看看这次有什么幺蛾子。

一个XSS靶场练习记录_第60张图片

 

直接注入经典脚本:

一个XSS靶场练习记录_第61张图片

 

script被过滤了,替换成了空格(注意空格和空字符串是不同的两个概念)。

一个XSS靶场练习记录_第62张图片

调整大小写仍旧,复写也是不可能的。因为替换后,你的“scrscriptipt”会成为“scr ipt”。

 

换句话说,script不能用,不过我们前面还有a和img呢?鉴于a中也有javascript,这次我们选择img,用事件来触发。

 

paylaod:keyword=

 

什么都没显示:

                      一个XSS靶场练习记录_第63张图片

(黑人问号脸)看源码:

它把空格实体化了,How can that?

 

这里的绕过技巧设计到url编码:

一个XSS靶场练习记录_第64张图片

我们找个能代替space的字符,比如%0A是换行。我们知道html文件中:



<
html
>
<
html
>

是没有什么不同的,唯一的不同之处就是,下面那个看的难受,影响心情,仅此而已。

 

修改payload:keyword=

 

                            一个XSS靶场练习记录_第65张图片

 

level17(从这里以后都涉及到flash,可以不用看了。我也不懂,尤其19和20关。):

一个XSS靶场练习记录_第66张图片

看到url中有两个参数arg01和arg02,看源码:

embed标签的src最后的值和参数值相同,尝试修改arg02的值。

                               

源码也修改了。

 

payload修改参数:arg02= οnclick=alert()

 

我的浏览器没有安装flash,插件显示不出来。正常的情况下应该是这个样子的:

                             一个XSS靶场练习记录_第67张图片

成功后点击那个插件,就可以进入下一关。

 

level18:

和level17如出一辙,不再演示。

 

level19

这里就有些不同了,你所有的输入都会被放进src中,包括引号也会被实体化。这里涉及到的是flash xss,需要反编译flash去修改源码,鉴于flash快退休,及我的flash显示不了的问题,就略过吧。(这些都是借口,明明他自己也不会!大猪蹄子!)

 

level20和level19相似,同样的,放弃了。

 

至于21关:

       一个XSS靶场练习记录_第68张图片

 

对,结束的很突兀。就和这篇文章一样。

 

再见。

 

 

你可能感兴趣的:(信息安全)