首页 > 技术文章 > xss-games 各level的 write-up

cjz12138 2020-11-15 17:03 原文

xss-games 各level的 write-up

level1:直接即可

level2:在 基础上需要添加"> 进行闭合后通过

1597287013377

level3:源代码将我们输入的尖括号进行了转义处理(采用htmlspecialchars函数)

1597287081317

改用鼠标点击事件'onclick ='alert(2)点击后出现弹窗

level4:源代码看出它直接将尖括号过滤掉了

1597287947026

我们"onclick="alert(1)或者 "onmouseover="onclick=alert(1) 先对语句进行闭合后执行alert

1597288060330

level5本关将替代成<scr_ipt>

1597288505957

可以看php源代码 发现它是将keyword(我们输入的东西)全部转成小写后进行替代,而尖括号没有替代

1597288555382

1597288663274

">< a h ref ='javascript:alert(1)'/>构造这样后通关。

level6

1597289010239

本题替换了许多关键字 但是没有对keyword 大小写判断

直接">< a hRef ='javascript:alert(1)'>绕过即可

level7

1597290103447

关卡对各种字符替换成了空格 并且对大小写也进行了判断

采用">< scrscriptipt>alert(1)< /scrscriptipt>闭合后 重复写 通关

level8

源代码在level7多了将1597372082802引号过滤 没办法闭合

采用hackbar 中html编码将 javascript:alert(1)编码即可

1597371720007

level9

源代码在level8的基础上 用strpos()函数对我们的输入限制要有http://字段 ,其他均与level8一致

可以将我们要的内容编码后加上 //http://www.baidu.com (注释掉后面的网页绕过)

1597372509841

level10

1597373628363

源代码尝试后发现我们输入的keyword参数 直接变成了字符串展示出来 对我们来说没有用处

发现下面还有三个参数 一个个在url中赋值后 发现只有t_sort会被写入到html中

1597373957366

随后对第三个参数xss

level12

源代码显示一共四个参数 keyword会被显示为字符串,考虑其他几个

能显示的只有t_sort 但是这次它用htmlspecialchars()进行了保护

看到t_ua 显示的是http头的user-agent信息

可以burpsuite抓包后 修改user-agent信息,进行xss攻击

1597375322815

level13

13关和十二关代码大致相同,只是第三个参数变成了http报文头的cookie

我们还是需要抓包来修改cookie的头进行攻击

1597376142625

1597376131058

level15

1597384850301

在源代码中有弹窗脚本"ng-include"(相当于include)

关于指令ng-include

  1. ng-include 指令用于包含外部的 HTML 文件
  2. 包含的内容将作为指定元素的子节点。
  3. ng-include 属性的值可以是一个表达式,返回一个文件名。
  4. 默认情况下,包含的文件需要包含在同一个域名下。

思路是:让它包含level1.php文件后构造payload,利用img标签路径错误出发onerror时间来alert

 `'level1.php?name=test'` 

level16

源代码看出和常规一样对script / 等进行替换, 对空格也进行了替换

输出方式用

标签,作用是将文本居中对齐

1597386480350

1597386614210

输入的时候用空格做语义分隔会被转义

采用%0a(相当于回车)进行语义分隔,由于它对/也进行了替换,我们采用不用闭合标签的方法< a> < img>

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

payload2: <a%0Ahref="javas%0Acript:alert(1)">

xxs-games总结

攻击方法:

  1. 用< script>alert(1)< /script>
  2. onclick=alert(1)点击后出现弹窗
  3. < a href ='javascript:alert(1)'>生成链接
  4. 将xss代码用hackbar编码后插入
  5. 修改user-agent、referer、cookie头信息
  6. 用\\ x3c表示< 用 \\x3e表 >(对于<>被过滤)

防御方法:

  1. 采用htmlspecialchars()函数对标签转义(针对1,用onclick)

  2. 采用直接将尖括号空格等过滤掉(用2)

  3. 将< script>替换<scr_ipt>(用3)

  4. 大小写替换(用关键词重复写)

  5. 用strpos()输入限制'http://'等 (用增加注释的方法绕过)

推荐阅读