xss-labs1-13(记录一下)

目录

XSS漏洞

靶场实验

labs-1

labs-2

lab-3

lab-4

lab-5

lab-6

lab-7

lab-8

lab-10

lab-11

lab-12

lab-13


XSS漏洞

学名跨站脚本攻击,是一个通过js(javascript)代码作为攻击语句的漏洞。XSS通过将精心构造的代码(JS) 代码注入到网页中,并由浏览器解释运行这段JS代码,以达到恶意攻击的 效果。当用户访问被XSS脚本注入的网页,XSS脚本就会被提取出来。用户浏览器就会解析这段XSS代 码,也就是说用户被攻击了。用户最简单的动作就是使用浏览器.上网,并且浏览器中有javascript解释 器,可以解析javascript,然而浏览器不会判断代码是否恶意。也就是说,XSS的对象是用户和浏览器。

XSS分为3类,分别为反射型xss,存储型xss和基于的DOM的xss。(ps:个人感觉就是基于get和post的注入方式,具体信息可以去百度,有佬写的很清楚)对于XSS注入也可以简单理解成sql注入,只不过sql注入写入的是sql语句,而xss注入使用的是javascript语句,两者原理类似。

靶场实验

lab-1

下载好该靶场后,看到等级1的实验,有这么一个东西。

搞这东西之前得先清楚js的攻击语句是如何编写的, <script>alert(1)</script> 这是一个很平常的js语句,作用就是再浏览器上弹一个信息出来(弹个1)。可以通过这么一个简单的代码去验证xss注入是否存在。下面这个document.cookie就是通过alert 去得到相关网站的cookie(如果有xss漏洞的话)而xss漏洞主要就是用来进行网络钓鱼,攻击者可以通过xss漏洞,编一段js代码,诱导别人去点击,点击了这个恶意链接,你的电脑就会被别人所窃取(不太会复现,先搞靶场)

127.0.0.1/xss-labs/level1.php?name=test<script>alert(1)</script>通过该语句测试是否存在该漏洞。

直接成功。(ps:这里是练习靶场,所以通过js语句的编写,探测到xss漏洞并传入数据,就结束了)

lab-2

第二关可以看到有那么一个input输入框,尝试将刚刚的js语句输进去看看情况<script>alert(1)</script>

发现失败了,由于xss漏洞主要产生在用户和浏览器之间,因此可以右键屏幕,查看页面源代码看看情况

通过查看网页的源码,可以发现有东西似乎被过滤了,这个&lt和&gt就代表<>这两箭头,可以确定这里的源码对包裹script<>的两个箭头做了过滤,转换成了字符形式。因此可以尝试用js语句中的onclick进行绕过

这个onclick在js的作用中便是点击,然后触发一个事件。就是onclick后边写一些相应的代码,通过鼠标点击就会出现后面代码要展示的东西。 下面就是个例子,其中input便是创造一个可以输东西的输入框,而后面的onclick便是通过鼠标点击,页面会弹个4。(这里只是简单的构造来验证漏洞存在,实际环境中碰到真实的xss漏洞,如果想偷信息就要编写一下js代码了)

知道可以使用onclick绕过,那如何使用捏。这时候可以通过f12查看页面源码,发现在输入框输入的信息输入的形式,因此可以尝试此前讲过的万能密码的原理(sql注入的),来构造一条js语句,将onclick给传进去。修改的位置则是这里的value="test οnclick=alert(1)"(因为script语句是传到这里的)

value="test onclick=alert(1)"

由上面所说的,构造onclick的语法需要让后面alert为一个字符串出现,因此需要将alert(1)通过双引号括起来,变成οnclick="alert(1)",此时语句就变成下面这样

value="test onclick="alert(1)"

此时后面的alert构造好了,但是前面就多出来了个” 和之前sql万能密码的原理一样,要让其闭合,使得后面的onclick能够正常执行,便将前面的test闭合起来,使其语法正确。因此代码为

value="test" onclick="alert(1)"

输入该语句后,不会直接成功,因为这是个点击的事件,因此需要点一下这个框框

lab-3

由于是靶场,这里就直接通过上面讲的,输入'<"  然后去页面源码观察情况

可以发现这里过滤了<>,并且闭合形式是'' 所以直接构造语句查看  ‘onclick =’alert(1)

lab-4

和此前一样 发现是个双引号闭合,也对<>进行了过滤 直接构造语句try harder!"onclick ="alert(1)

ps(这个try harder!是靶场自带的,加不加都无所谓)

lab-5

同上判断情况,发现是双引号闭合

构造攻击语句find a way out!" onclick ="alert(1),提交后无法使用,查看源码发现这里似乎是对on进行了一个过滤输入on会替换o_n,尝试使用script,发现也被过滤。因此这里需要尝试使用其他语句来对其进行,可以尝试使用js中的伪协议。

js中超链接长这样,点击这个a(这里取名叫a),就会跳转到百度页面上。而xss便可对此进行利用,在真实环境上,可以构造这么一个恶意的网址,来进行网络钓鱼。为协议便是基于超链接的,在这个靶场上,可以通过js中的伪协议来对此xss漏洞进行验证。

<a href='javascript:alert(1)'> 这个代码便是js中一个基本的伪协议写法,通过修改href的值(一般href后面都跟一个正常地址)将其修改成javascript:url(构造的东西)  在,执行的时候,会先运行href里的代码,而href里是个javascript,探测到javascript后,会先执行javascript后面的url,也就是构造的东西,如果这个构造的东西返回不为空,则会将构造的数据放到前台上。

因此通过这个为协议去进行测试123"><a href='javascript:alert(1)'> 代码为左边那个,从上面图中可以看出,使用伪协议也需要一个基本的构造,要让href的数据跑出来单独执行,完成伪协议的使用。

点击多出来的这玩意,成功。

lab-6

双引号闭合,且没过滤> ,尝试使用语句

通过下面三张图,发现前面使用过的三种方法全部被过滤,script和on还有href都被过滤了,但不知道这个究竟是整个关键字过滤了还是其他过滤,可以尝试双写或大小写进行绕过

尝试使用大小写先进行绕过 123“ Onclick=”alert(1) 直接成功

lab-7

测试原理同上,不再过多赘述,测试到on的时候,发现源代码的on没了,script也是一样。因此考虑这里是对on这个关键字进行了过滤,此前也说过,可以尝试双写或大小写绕过,这里尝试大小写对其进行绕过。123" oonnclick="alert(1)

lab-8

碰到这种情况,老样子查看是'",发现源码无法对其进行判断是'还是”闭合,是以一个提交的方式提交上去的。而这里正好是个链接,可以通过js的伪协议进行判断  在输入框中输入:javascript:alert(1)

发现下面这个也被过滤了。此时输入一个百度的链接看看情况

这时发现百度链接没有被进行任何过滤,可以判断这里可能进行了一个白名单的过滤,只允许正确的url对其进行上传,因此需要构造一个和百度相关且正确的url出来。而此时,javascript又被过滤了,可以考虑将javascript:alert(1)进行编码,以编码的形式提交

构造语句:&#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#49;&#41;//http://www.baidu.com

其中,这一堆奇奇怪怪的字符就是编码前的javascript:alert(1) 但是又要满足网站中白名单的验证情况,因此需要在后面接上相关的百度网址。但是捏,直接这样拼接是无法使用的,这里不是以herf的方式提交,不会先去执行前面那个。浏览器会将这两个一起执行,这样当然是无法执行的,因此可以通过//(注释)将后面的百度注释掉,从而满足了白名单的限制,也可以通过前面的js语句利用xss漏洞。

lab-9

与上题步骤一样。

lab-10

发现图片上没有任何输入框,在url上输入<script>alert(1)<script>后,查看源码,发现源码提示可以通过windows.alert弹窗实现,而且发现下面的三个type类型为hidden(隐藏),因此可以尝试修改页面下的type,将三个type以此从hidden改成input(输入),查看是否有标签接收了传入的值,这里发现最后的sort接受到了这个值,其他两个更改了都没有。因此可以通过更改sort下的type来进行操作。

127.0.0.1/xss-labs/level10.php?t_link=&t_history=&t_sort=" type=type οnclick="alert(1)

在url上构建上述语句,因为以及测试出sort下可以进行传参,因此按照此前的拼接方法,先将前面闭合,然后输入type=type 先输入type的原因是为了让浏览器先认为这个类型不是个隐藏的类型,再通过onclick语句进行注入。 如果type不丢前面,这里不会注入成功,onclick语句执行的时候会将alert(1) 和type=type一起执行,无法成功得到输入框来确定xss漏洞。

lab-11

跳转后,首先点开页面源代码进行查看,发现这里有个ref 后面的数据是第10关的数据,可以发现这个东西就是referer,显示着数据是从第10关传来的。(这里可以先对此前的检测步骤进行检测,会发现都没用)因此便针对referer进行相关的修改。这里通过bp抓包对其进行修改

通过修改refer的值,将其修改成 123" οnclick="alert(1)" type="type  原理与之前的一样,由于type类型为隐藏类型,因此这里需要对其进行修改使其显现。这些双引号都是为了拼接语句。使其符合refer的格式。

修改完后方行数据包。点击这个框框

lab-12

12题和上面那题一样,通过这个ua以及形式,可以看出来这个是数据中的user-agent格式,俗称ua头,是来显示用户通过什么设备访问的,因此前面的各种测试都失败了后,可以尝试通过这玩意进行绕过。

123" οnclick="alert(1)" type="type

lab-13

此处传了个cook,再正常的各种测试都失败后,可以猜测此处为浏览器中的cookie,因此通过抓包,发现这部分的内容果然存在cookie下,因此更改相关的值进行进行查看

123" οnclick="alert(1)" type="type

1-13关完毕

  • 14
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值