pikachu靶场练习通关加知识点总结

pikachu靶场练习

文章目录



前言

这是我的靶场练习第一篇,写的比较少,希望大家多担待。

一.暴力破解

Burte Force(暴力破解)概述:
“暴力破解”是一攻击具手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。 为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作。
理论上来说,大多数系统都是可以被暴力破解的,只要攻击者有足够强大的计算能力和时间,所以断定一个系统是否存在暴力破解漏洞,其条件也不是绝对的。 我们说一个web应用系统存在暴力破解漏洞,一般是指该web应用系统没有采用或者采用了比较弱的认证安全策略,导致其被暴力破解的“可能性”变的比较高。 这里的认证安全策略, 包括:
1.是否要求用户设置复杂的密码;
2.是否每次认证都使用安全的验证码(想想你买火车票时输的验证码~)或者手机otp;
3.是否对尝试登录的行为进行判断和限制(如:连续5次错误登录,进行账号锁定或IP地址锁定等);
4.是否采用了双因素认证;
…等等。

1.1 基于表单的暴力破解


这是第一关
在这里插入图片描述
直接抓包,爆破即可

1.2验证码绕过(on sever)

在这里插入图片描述
在这里插入图片描述
同上直接抓包即可,后台发送的验证码默认是有24分钟的有效期,所以我们有24分钟的爆破时间,但是要是后台了验证码的过期时间被设置为1分钟那么就无法爆破了。
这是因为验证码是存在于服务器的session里面的,而session默认是24分钟才会被清除。

1.3验证码绕过(on client)

(on client)
在这里插入图片描述
同上,直接抓包,爆破即可。
但是我们可以对验证码做一下探讨
在这里插入图片描述
在这里我们在数据包中修改了验证码,但是返回的结果没有提示验证码错误。
这是因为这里的验证码只拦截了前端的页面,而没有拦截发送的数据包,从而可以直接修改数据包来达到绕过验证码,

1.4tokon防爆破

在这里插入图片描述
通过抓包,我们发现在post包的内容中,多了一个token的值。
在这里插入图片描述
在这里可能有人不知道什么是token,那么我们来了解一下什么是token。
什么是token?

1、Token的引入:Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,在这样的背景下,Token便应运而生。

2、Token的定义:Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。

3、使用Token的目的:Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。
参考:https://www.jianshu.com/p/24825a2683e6
所以,后端会生成一个token返回给客户端,当客户端进行请求时,就会同时携带该token,与服务端的token来比对,一样就接受,不一样就丢弃。
但是,用token来防止暴力破解是不行的,这是因为token存在于前端,可以被很容易的捕获。
通过测试发现每个数据包的token在变化,所以使用pitchfork进行爆破。

用例题来示例:
在这里插入图片描述
在这里插入图片描述
将token设置成变量。
在这里插入图片描述
在这里插入图片描述

第 一个变量直接导入字典即可,(目录不能有中文,不然无法导入)
第二个变量,就需要设置成上面的形式。
同时线程数,也需要设置成一个。
最后爆破即可。

二、xss

xss概述

XSS(跨站脚本)概述
Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:
1.反射性XSS:
对于反射型xss,交互的内容一般不会存储于数据库中(即服务器中),是一次性的,会根据用户输入,实时返回相应的内容,一般出现在查询类的页面中。
2.存储型XSS:
存储型的xss会把与服务器交互的内容存储在数据库中(即后台服务器中),永久存储,一般出现在留言板和注册等页面,会把用户输入的内容存储在数据库中。
3.DOM型XSS:
不与后台服务器交互数据,而是通过DOM数来操作前端的代码,在输出的时候会产生的问题,一次性的也属于反射型。

DOM:文档对象类型

    在这里我们提到了DOM,那么什么是DOM呢?
    DOM就是js可以通过DOM树来操纵HTML的接口,js通过DOM提供的方法对HTML标签进行修改,删除等操作,来改变页面布局。由于HTML是由于各种标签来构成的,所以j就可以通过修改标签来改造页面。
      

XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。
XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。
形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。
因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:
  输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
  输出转义:根据输出点的位置对输出到前端的内容进行适当转义;

xss形成的原因:

攻击者将自己构造的js代码,插入到服务器端,然后用户在访问的时候,服务器就会将带有该js代码的页面返回给客户端,客户端的浏览器再执行插入的js代码,从而达到相应的攻击效果。
(一方面是插入时的过滤不当,和返回给客户时的转义不当,这两方面构成了xss)

xss漏洞的测试流程:

1.在目标站点找到输入点,比如查询接口,注册,留言板等可以与页面交互的地方。
2.开始手测,先输入一组"特殊字符+唯一的识别字符",点击提交后,看页面是否会对提交的内容进行处理(过滤和转义等)如果是原封不动的返回来,那么可能就存在xss了。
3.通过搜索到输入的唯一识别字符,在结合唯一字符的前后愈发来确认是否可以执行构造xss的条件(构造闭合),来插入要执行的代码。(可以通过查看页面源码来查看)
3.提交的脚本代码(以及各种绕过姿势),看是否可以执行成功,执行成功就说明有xss漏洞。
在这里插入图片描述

2.1反射型xss(get)

我们在测试xss的时候在这里插入图片描述

我们在测试xss的时候,最开始最好先输入一些特殊的字符来确认哪些字符会被过滤以及转义,然后定位到相应的位置来看看该如何构造payload。

在这里插入图片描述

在这里我们插入了一个弹框。
在这里插入图片描述

然后弹出了相应的内容。

2.2反射型xss(post)

在成功登陆之后,就会出现一个输入框。同样直接插入即可。
在这里插入图片描述

2.3.存储型xss

在这里插入图片描述

可以看到这是一个留言板,会存储我们写下的内容。
当我们插入相应的payload后。在这里插入图片描述

可以看到我们输入的payload已经插入到数据库中。除非在数据库中删除该xss,否则会一直生效。

2.4 DOM型xss

在这里插入图片描述

可以看到我们在插入了'><img src="#" onmouseover="alert('xss')">,这句话之后就弹出了我们想要的内容。
在这里插入图片描述
我们先通过 "> 闭合了herf标签,然后再插入相应的payload.

2.5 DOM型xss-x

在这里插入图片描述在这里插入图片描述

和上面一样,闭合href标签,使用onclick属性,弹出xss。

2.6xss之盲打

所谓盲打就是插入的内容,不会在前端显示,所以我们不能在前端看到相应的反馈,而是将payload插入到后台,如果后台没有对xss进行过滤,那么后台就会被插入,可以获得管理员的cookie等。
在这里插入图片描述

2.7 xss过滤

在这里插入图片描述这里的过滤条件很简单,使用大小写即可绕过,但是还需要闭合前面的 ’ ,
所以payload为<SCript>alert(xss1)</SCript>
在这里插入图片描述

xss一些简单的绕过技巧

一.字符转换
1.将大小写混合,例如:Ipt>
3.使用注释,例如:<scri pt>alter(1)</scri pt>
二.字符编码
将字符编码成像HTML编码,hex编码,URL编码等
但是要注意,不同的标签能认识不同的编码,要注意编码在输出点是否会被正常的识别和翻译,不然就算绕过waf,也是没有意义的。像

2.8 xss之htmlspecialchars

常见的转义字符:
在这里插入图片描述对htmlspecialchars方法的解释:
htmlspecialchars会对一些符号编码成HTML编码。从而防止xss注入。
在这里插入图片描述拿该例题来说,使用的是默认类型,所以可以使用单引号,从而可以来闭合前面的标签。
所以可以使用on事件来绕过。
在这里插入图片描述在这里插入图片描述要合理的使用各种事件标签来进行绕过。

2.9 xss之href输出

ctrl + F可以快速定位元素
在这里插入图片描述直接使用js伪协议,来进行插入。payload:javascript:alert(1)
在这里插入图片描述

所以在href标签处,我们最好只限定HTTP和HTTPS两种协议。

javascript伪协议

转载:[https://www.cnblogs.com/forforever/p/12711197.html

1.什么是伪协议

伪协议不同于因特网上所真实存在的协议,如http://,https://,ftp://,
而是为关联应用程序而使用的.如:tencent://(关联QQ),data:(用base64编码来在浏览器端输出二进制文件),还有就是javascript:
我们可以在浏览地址栏里输入"javascript:alert(‘JS!’);",点转到后会发现,实际上是把javascript:后面的代码当JavaScript来执行,并将结果值返回给当前页面。(不用使用

将javascript代码添加到客户端的方法是把它放置在伪协议说明符javascript:后的URL中。这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行。如果javascript:URL中的javascript代码含有多个语句,必须使用分号将这些语句分隔开。这样的URL如下所示:

 javascript:var now = new Date(); "<h1>The time is:</h1>" + now;

当浏览器装载了这样的URL时,它将执行这个URL中包含的javascript代码,并把最后一条javascript语句的字符串值作为新文档的内容显示出来。这个字符串值可以含有HTML标记,并被格式化,其显示与其他装载进浏览器的文档完全相同。

在浏览器打开javascript:URL的时候,它会先运行URL中的代码,当返回值不为undefined的时候,前页链接会替换为这段代码的返回值。

javascript URL还可以含有只执行动作,但不返回值的javascript语句。例如:

1 javascript:alert("hello world!")

装载了这种URL时,浏览器仅执行其中的javascript代码,但由于没有作为新文档来显示的值,因此它并不改变当前显示的文档。

通常我们想用javascript:URL执行某些不改变当前显示的文档的javascript代码。要做到这一点,必须确保URL中的最后一条语句没有返回值。一种方法是用void运算符显式地把返回值指定为underfined,只需要在javascript:URL的结尾使用语句void 0;即可。例如:下面的URL将打开一个新的空浏览器窗口,而不改变当前窗口的内容:

 javascript:window.open("about:blank"); void 0;

如果这个URL没有void运算符,window.open()方法的返回值将被转换成字符串并被显示出来,当前窗口将被如下所示的文档覆盖。

2.10 xss之js输出

在这题中的输出点是js标签内。

其中的ms就是输出的变量。且用’ ‘括起来,表示字符串,我们需要过滤掉’ ’
观察代码发现,我们可以通过闭合

所以我们可以用下面的payload来插入。

'</script><script>alert(1)</script>

前面的'<script>是用来闭合掉前面的script标签的,后面在构造一个弹框。

构造后的代码为:

<script>
    $ms=''</script><script>alert(1)</script>';
    if($ms.length != 0){
        if($ms == 'tmac'){
            $('#fromjs').text('tmac确实厉害,看那小眼神..')
        }else {
//            alert($ms);
            $('#fromjs').text('无论如何不要放弃心中所爱..')
        }

    }

在这里插入图片描述

三.CSRF

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值