xss-labs环境搭建

level1

image.png

  • 第一关当中,看见下面有文字提示,显示payload的长度:4
  • 然后在url当中的test也是长度4,猜测是这里,我们随便改改这个
    image.png
  • 发现随便输入123456,payload长度就变成6了,所以这里就是payload的位置
  • 在这里写入语句
    1
    <script>alert('123')</script>
    image.png
  • 成功了,点确定就进入level2

level2

image.png

  • 这里猜测和level1一样,但是改在输入框当中了
    image.png
  • 发现语句在引号当中,这样就不能被执行了
  • 需要让它执行,就在前面加">,目的是让value参数结束
    1
    "><script>alert('123')</script>
    image.png

level3

image.png

  • 看起来和level2差不多
  • 输入一样的内容发现不行
    image.png
  • 查看html代码,发现这次value的值是用单引号的
  • 把前面改成单引号试试
    image.png
  • 发现还是不行,输入的<>都被编码成了html字符,这里是使用了htmlspecialchars()函数
  • 所以我们可以尝试其他不用这些符号的语句
    1
    keyword=' onfocus=javscript:alert('123')%20
  • onfocus的作用是当点击输入框的时候会触发指令
  • '的作用是闭合value的值
  • %20是url编码的空格,用于与后面语句隔开
    image.png

level4

  • 看起来又和前面一样,尝试再来一次
    image.png
  • 发现和前面不一样的是,这次是双引号
  • 把单引号改成双引号就行
    image.png

level5

image.png

  • 用相同的方法发现不行,onfocus中间被奇怪的符号隔开了,用<script>也是这样
  • 应该是这几个关键词被过滤了,那就有其他的关键词
  • <a>是超链接,应该可以用
    image.png

level6

image.png

  • 用相同的方法,发现href也被过滤了
  • 那尝试一下大小写吧
    image.png
  • 立马就成功了

level7

image.png

  • 相同的方法,发现中间的很多字符消失了
  • 猜测是被识别过滤了
  • 尝试双写绕过
    image.png

level8

image.png

  • 这题和之前看起来有一点点不一样,有个友情链接的超链接,点了发现是404
    image.png
  • 用查看器一看,发现超链接的目标就是输入框的内容
  • 那么就在输入框当中输入语句
    image.png
  • 发现script还是被过滤了,前面用过的都被过滤了
  • 所以尝试用编码绕过
  • 这里使用Unicode编码,使用Unicode在线转换工具
    image.png
    image.png
  • 通过unicode编码绕过了过滤机制

level9

  • 看起来和上一题一样,输入语句,发现不合法
    image.png
  • 这里一直没搞明白,就去看看源代码
    image.png
  • 在源代码中,看见有一个过滤机制,strpos()用法
  • 用于检测是否包含指定字符,这里是检测是否包含http://
  • 我们只需要在背后加上http://,并且用//放前面注释掉它就行
    1
    &#106;&#97;&#118;&#97;&#115;&#99;&#114;&#105;&#112;&#116;&#58;&#97;&#108;&#101;&#114;&#116;&#40;&#39;&#49;&#39;&#41;//http://
    image.png

level10

image.png

  • 这一关和前面的都不一样,没有输入框也没有按钮
  • 用查看器看,发现多了几个参数
    image.png
  • 尝试一下能不能通过get传递到服务器
    1
    xss-labs/level10.php?keyword=well done!&t_link=1&t_history=2&t_sort=3
    image.png
  • 发现t_sort的参数发生了变化,变成我们设定的数字
  • 我们就可以在这里插入我们的语句
    image.png
  • 发现尖括号又被过滤了,那么只能使用能在尖括号当中的语句了
  • 如果是用上面用过的onfocus的话,没有输入框,难以触发
  • 所以我们应该需要将内容显现出来,然后添加触发按钮
    1
    t_sort=" type="text" onclick="alert('1')
    image.png
    image.png

level11

  • 和上题一样,通过查看器发现多了一个参数
    image.png
  • ref猜测是referer,再看后面的值,基本确定就是referer
  • 所以我们在传递referer当中插入我们的代码就行
    1
    " type="text" onclick="alert('1')
    image.png

level12

  • 同样发现有一个特殊的参数
    image.png
  • 通过t_ua这个名字,以及后面的参数,猜测应该是user agent
    image.png

level13

image.png

  • cook猜测是cookie信息
    1
    user=" type="text" onclick="alert('1')
  • 前面需要加user=,表示cookie信息当中的用户
    image.png