pikachu靶场全关卡讲解

目录

Burte Force(暴力破解)

 基于表单的暴力破解

验证码绕过(on server)

验证码绕过(on client) 

token防爆破?

XSS(跨站脚本)

反射型xss(get) 

​编辑

 反射性xss(post)

存储型xss

​编辑​编辑

DOM型xss

​编辑

DOM型xss

xss盲打

xss之过滤

 xss之htmlspecialchars

 xss之href输出

xss之js输出

通过xss获取用户cookie值

xss钓鱼演示

CSRF(跨站请求伪造)

CSRF(get)

CSRF(post)

Sql Inject(SQL注入)

 在进行下面的题目类型之前,我们需要了解一下SQL Inject漏洞手工测试,这个才是我们通过练习SQL注入真正要学会的

基于union联合查询的信息获取( select )

通过information_ schema拿下数据库

数字型注入(post)

字符型注入

搜索型注入

 xx型注入

insert / update注入

delete注入

http头注入

 盲注

 基于boolian的盲注

基于时间的盲注

​编辑

wide byte注入

RCE(remote command/code execute)

exec "ping"

exec "eval"

 File Inclusion(文件包含漏洞)

本地文件包含漏洞

远程文件包含漏

 不安全的文件下载

​编辑 不安全的文件上传漏洞

客户端check

​编辑 服务端check

getimagesize()

文件上传漏洞的使用

overpermission(提权)

水平越权

垂直越权

目录遍历漏洞

 敏感信息泄露

PHP反序列化

 XXE

URL重定向

SSRF(Server-Side Request Forgery:服务器端请求伪造) 

SSRF(curl)

SSRF(file_get_content)


Burte Force(暴力破解)

“暴力破解”是一攻击具手段,在web攻击中,一般会使用这种手段对应用系统的认证信息进行获取。 其过程就是使用大量的认证信息在认证接口进行尝试登录,直到得到正确的结果。 为了提高效率,暴力破解一般会使用带有字典的工具来进行自动化操作

暴力破解就是攻击者不知道目标系统下面账号密码的情况下,对目标系统的尝试性登录

 基于表单的暴力破解

  

 直接使用BurpSuite进行爆破

验证码绕过(on server)

 

我们来查看网页源码

 我们可以知道,这题使用的构造函数生成验证码图片的方式来进行验证码的验证

查看session后,我们可以知道session函数没有设置过期时间,可以通过修改包中的验证码重复发送,来达到暴力破解的方式

随意输入账号密码以及验证码后,抓包

我们可以同样可以在 BurpSuite的repeater中验证验证码是不是可以重复使用

验证码绕过(on client) 

我们来查看网页的源码 

我们知道了,这个验证码就是一个前端生成的,所以这个验证码就相当于是一个纸老虎,直接开始抓包,暴力破解 

前端做的验证只是限制了发送的按钮,没有限制发送的次数

 在破解的结果我们也可以知道,这个验证码是没有用的

token防爆破?

它的原理就是在每一次刷新页面时,会是生成一个token值,点击提交的时候,后台会对你的账号密码以及token值进行验证,这样系统可以通过判断这个token的值来进行判断。 它依旧不能防止暴力破解,因为他的一个token值是暴露在网页源码之中的

那么我们需要的是构造一个生成token值的脚本

XSS(跨站脚本)

形成XSS漏洞的主要原因是程序对输入和输出没有做合适的处理,导致“精心构造”的字符输出在前端时被浏览器当作有效代码解析执行从而产生危害。

我们可以通过这个漏洞去盗取用户的cookie值

反射型xss(get) 

那我们就直接开始干! 

打开检查,查看代码

 反射性xss(post)

登录后直接开始

存储型xss

存储型有一点和反射性是不一样的,你再次打开这个网址的时候,它依旧会返回xss的弹窗

DOM型xss

什么是DOM:(DOM) 是中立于平台和语言的接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式。

他不与后台产生交互,只和前端交互

没有啥反应,那我们看一下他的网页源码

那我们知道了如何运行,现在我们可以构造了

 所以最后的结果是#' οnclick="alert('xss')">

DOM型xss

直接分析他的源码

 可以是一样的闭合#' οnclick="alert('xss')">

结果也是相同的

xss盲打

我们发现前台没有任何反应

xss的盲打就是因为前台没有反应只有在管理员界面,我们才能发现是否有弹窗反应

我们登录管理员界面,发现是有弹窗的,说明盲打成功

xss之过滤

我们来看一下网页源码

这里使用的是 preg_replace 方法
preg_replace去对前面get字符串(上下文结合知道message是我们输入的值)的来匹配<(.*)s(.*)c(.*)r(.*)i(.*)p(.*)t/'里面的正值,来替换为后面指定的空字符,但是正值是区分大小写的,所以我们可以使用大小写混写的方式来绕过这个验证

 xss之htmlspecialchars

我们来查看网页源码

可以看出很多的符号被处理了,那么这就说明我们之前的弹窗<script>alert('xss')</script>已经没有意义了 ,我们需要换一换代码,我们可以使用onclick方法

 1'把前面的href给注释 ,onclik来弹窗

 xss之href输出

我们输入的是

我们可以看出#和正常的是数字和字母没有被排除

  我们来看他的代码

xss之js输出

没有什么反应,我们看源码

还是一样分析一下

 成功弹窗

通过xss获取用户cookie值

首先安装xss后台,这样我们可以在后面的实践中找到cookie

我们以反射性xss举例

 

 

 

复制代码进入网址,最后进入xss的后台查看

 

 实际情况中我们可以将返回的数值复制下来

发给用户,进行一个盗取cookie的行为

xss钓鱼演示

这里我们使用存储型的xss举例子

 那我们去查看这个目录的源码

我们再去看这个目录下的源码 

 

那么我们通过代码去尝试一下

 

输入后我们可以看到,网站弹出一个需要我们登录的页面,如果用户的安全意识不高,那么我们得到他的账户及其密码

CSRF(跨站请求伪造)

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

我们需要得到网站的修改链接,我们可以修改我们自己的,比如攻击什么网站,我们可以创建一个账号,修改信息的时候,去抓包,修改链接,再去把这个链接投放给被攻击者(前提是网站存在CSRF漏洞)

前提条件:

第一有CSRF的漏洞。

第二被攻击者也需要登录这个网站,这样被攻击者在点击链接的时候才会直接修改

CSRF和XSS的区别:

xss:是盗取了用户的cookie值,去登录用户的账号

CSRF:借用用户权限,完成修改

CSRF(get)

 

修改的链接: 

http://localhost/pikachu/vul/csrf/csrfget/csrf_get_edit.php?sex=man&phonenum=1331111111&add=wuhu&email=xxxxxx&submit=submit HTTP/1.1

当被攻击者点击该链接时

变为

CSRF(post)

post型,因为是请求体,不能在url中,和xsspost类似需要自己弄一个站点,做一个表单,让Lucy点我们恶意站点表单的url,向页面提交post请求。

Sql Inject(SQL注入)

SQL注入漏洞主要形成的原因是在数据交互中,前端的数据传入到后台处理时,没有做严格的判断,导致其传入的“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。 从而导致数据库受损(被脱裤、被删除、甚至整个服务器权限沦陷)。

 在进行下面的题目类型之前,我们需要了解一下SQL Inject漏洞手工测试,这个才是我们通过练习SQL注入真正要学会的

基于union联合查询的信息获取( select )

首先我们需要明白union这个语句的作用,他是可以通过联合查询来查询指定的数据

但是他同样有限制条件,就是查询的字段数是需要和主查询是一直的也就是说

select 字符1 字符2 union select 字符1 字符2

那么我们又会疑惑如何知道他前面的select语句查询的多少字符,因为我们通常构建的是union的后面,而前面的是网页我们看不见源码中的,这时候我们就需要使用 order by语句通过报错来查询我前面到底拥有多少语句

select 字符1 字符2 order by 数字

这个数字就是前面拥有的字数数 

我们使用字符型来举例

我们使用order by 5的时候他会出现报错选项,那我们使用二分法尝试3或2 

我们在输入order by 2时,返回正常,可以说明前面的字符一共是两个,判断出后,我们去使用union

这里我用的是database(查询数据库名称)和version(显示版本号) 

通过information_ schema拿下数据库

在mysq|中,自带的information_schema这个表里面存放了大量的重要信息。

如果存在注入点的话,可以直接尝试对该数据库进行访问,从而获取更多的信息。
schemata表:提供了当前mysq|实例中所有数据库的信息。是show databases的结果取之此表。
tables表:提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个schema ,表类型,表引擎,创建时间等信息。是show tables from schemaname的结果取之此表。
columns表:提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。是show columns from schemaname.tablename的结果取之此表。

我们可以使用updatexml来进行报错处理,通过报错,我们可以得到用户的账号以及密码

字符2可以是一个表达式,所以我们可以通过这个updatexml方式来通过报错返回表达式执行的值 执行之后,发现这不是一个有效的XPathstring,他会把这个表达式执行再通过报错的方式返回出来

        通过报错来查询是否有问题。

我们需要跟换代码,来进行查询报错,我们这个时候使用concat

concat(字符1,字符2)
会通过将传进去的两个参数,组合成一个完整的字符串,然后打印出来

这样就可以全部显现出来,同样可以在version这里输入一个select语句来进行报错查询

我们上面已经知道到了库的名字,也就是pikachu所以我们直接用过information的方式来查询库中的表名

 

说明报错的太多,超过一行,不能显示,那我们再去进行设置行数 

查询后报错正确

 

httpinfo是我们数据库第一个表的名称,我们有了表之后可以通过一样的方式来获取列,其中第三个表的名字是users是我们需要的

 

 我们通过查询,发现用户名叫user(第三列)

我们通过这个来获取用户的名字

很简单的查询语句

我们知道了第一个用户的名字admin 

在通过这个来找他的密码,得到密码 

我们获取了MD5的加密值,通过解码,我们可以知道他的密码

下面的一些都是让我们知道如何找到SQL的注入点 

数字型注入(post)

我们可以试试看,发现并没有在url中传参,使用的时post的方法。那我们来看一下是否存在SQL漏洞

我们直接抓包,开始修改数据

修改后台直接爆出所有用户邮箱

字符型注入

 随意输入后,发现url是有传参的,可以肯定的是以get方式。

我们去检测一下,是否有SQL漏洞 ,首先想一下后台代码应该是什么样子

我们去尝试单双引号闭合,试试看

我们去尝试单引号闭合

发现所有的都被爆破出来

同样的我们可以去尝试系统报错,来查看有没有SQL漏洞

查询后,发现报错

 同样的系统告诉我们报错的地方,也可以说明是单引号。

当然很多管理员并不会去给我们查看报错,后面的SQL盲注会说到 

搜索型注入

我们可以知道应该是是使用了%%的方法进行的模糊查询 

我们去猜一下他的代码

所以我们进行测试,单独拿出这一块进行

输入后,数据库内容爆出

 xx型注入

先去尝试做一下,闭合测试 

发现报错,报错因为多")" ,所以我构思一下他的代码

$username=$_Get['username']
seclt 字段 form 表名 where username=('username');

应该是这样的代码,所以我们使用括号进行一个闭合 

闭合成功,管他什么类型,只要能闭合出来,就是本事

insert / update注入

insert注入是指系统前端没有做SQL漏洞的防护,导致在前端输入的字符可以直接拼入后端,从而导致的漏洞

这里是insert注入点,这个还是像上文的注入一样的

我们测试一下,发现单引号可以报错

那我们可以通过上文的 updatdxml的方法来获取数据库信息,insert下我们需要使用or进行闭合,其他的和我们平常是一样的

当然这样的语句去字符型也是可以成功注入的 

我们发现报错成功,可以去进行注入

update注入漏洞在你注册登陆后的修改信息里面

 我们同样可以使用updataxml的方法进行报错测试

还是一样的配方一样的味道

so得到的结果也是一样的 

delete注入

在删除留言的时候出现问题,那我们用抓包工具,进行抓包

我们发现他会出现一个id。

对于这个就是,在删除时获取一个id,让后这个id会直接拼到后面的内容中,那我们只需要在包中构建一下注入就可以了

我们要注意这个是我们书写的代码,在这个里面是以GET请求提交的,所以我们需要以url的方式提交

编码之后我们放包,查看结果 

结果是和上文一模一样

http头注入

网络安全——HTTP头部注入_http头注入-CSDN博客

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

我们首先登录他的账户

登录后发现,他获取了我们的user agent,http accept,我们可以知道它是对我们后端的http头进行获取 。这时候我们就可以抓包,去尝试一下是不是可以对user agent进行构造?

我们尝试一下是不是可以在user  agent构造

 也可以发现确实存在SQL漏洞,那我们正常构造

发现成功构造

其中还有一个点,就是cookie也是可以构造的,因为它会获取前端的cookie值,同样把这个内容拼接到数据库,那么也同要会有一个SQL注入漏洞

我们像之前一样,用报错的方式尝试,发现成功

 盲注

 就像我们上面说的,我们经常使用的是报错的方式来查看是不是有SQL的注入漏洞,但是盲注里面,后台使用错误的消息来屏蔽报错,在这种情况下,我们无法根据报错来进行判断

根据表现形式的不同,盲注又分为based boolean和based time两种类型

 基于boolian的盲注

这个在正常的页面上只能判断是对还是错,我们比较一下

其实单引号确实已经让boolian报错了,但是因为盲注的特点,它返回的并不是报错,而是username 不存在

我们在输入正确答案的时候,他也会返回出来。那我们可以理解什么叫做boolian(布尔)

我们知道布尔判断正确和错误的,也就是1和0。这一题中0是username不存在,1则是返回的正确值,那我们怎么去解决这类型的题目呢?

我们需要构造一个判断的payload!

但是这样依旧不能返回,因为它返回的应该是p,但是p,并不能在1和0中得到这个信息,那我们就需要进一步的构造(知道答案的视角) 

这样就可以通过真假来测试

 

这样我们就可以来进行判断,我们可以再次进行修改,让我们可以得到数据库的内容

这样就可以像上文一样

返回的值来判断是什么

基于时间的盲注

我们发现,这题不管输入什么,它只会返回,i don't care。那我们应该怎么办

我们试试看是否有注入点,可以使用sleep来测试

 我们通过浏览器自带的网络来判断

slepp就是睡觉嘛,他的意思就是,如果正确,那你“睡”三秒再运行 

那我们就可以构造这一个类型的payload

这样我们就可以得到数据库的名字,以及内容 

wide byte注入

宽字节注入是通过编码绕过后端代码的防御措施,我们直接 在 ' 前面加%df实现逃逸转义

我们直接抓包

在其中添加转义,导致一个字符变为两个字符,实现逃逸转义

RCE(remote command/code execute)

RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。

exec "ping"

我们可以随意输入ping的ip地址,发现确实进行了ping命令

我们进行拼接看是否成立

 这样攻击者可以直接通过这个来控制你的操作系统

exec "eval"

web是将用户输入的字符串当做php脚本并解析执行了,并且没有做严格的过滤处理,导致了漏洞的产生

 File Inclusion(文件包含漏洞)

文件包含,是一个功能。在各种开发语言中都提供了内置的文件包含函数,其可以使开发人员在一个代码文件中直接包含(引入)另外一个代码文件。

本地文件包含漏洞

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

我们可以看到,这是传了一个文件名到后台,后台对指定的文件进行操作,这就意味着前端的人员可以修改文件,我们可以把这文件改为后台的文件

我们可以直接通过../../../../../../../../../../去访问C盘目录下的一些东西进行漏洞验证

远程文件包含漏

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

在做个题目之前,我们需要进入php.ini文件中把allow_url_include从off改为on,之后我们再去将中间重启尽就行了

之后我们可以看到这个页面和上一题的界面没有太大的区别

我们发现的是url里面的是一个文件路径,所以我们可以去改变这个文件路径 

我们可以看到pikachu的目录下有一个text的文件夹,里面有一个yijuhua.txt

这个就是一句话木马,我们使用网页访问一下

之后,我们可以复制这个网页的链接放入pikachu里面的文件路径

x是后面需要执行的命令

在提交之前,需要把杀毒软件关闭,不然会给你报错,自动杀除这个php文件

提交后,我们可以在文件目录下看到这个php文件

然后在原来的pikachu网站中访问这个页面

我们将x改为ipconfig 系统会执行ipconfig的命令

 不安全的文件下载

文件下载功能在很多web系统上都会出现,一般我们当点击下载链接,便会向后台发送一个下载请求,一般这个请求会包含一个需要下载的文件名称,后台在收到请求后 会开始执行下载代码,将该文件名对应的文件response给浏览器,从而完成下载。 如果后台在收到请求的文件名后,将其直接拼进下载文件的路径中而不对其进行安全判断的话,则可能会引发不安全的文件下载漏洞

我们可以在上面,右击这个图片在新链接上页面上打开

然后我们可以发现,这个地方是和本地文件包含漏洞一样的

 那我们就可以在这里注入,得到直接想要下载的文件,我们举个例子

 不安全的文件上传漏洞

如果你要使用一句话木马,把安全软件关闭

文件上传功能在web应用系统很常见,比如很多网站注册的时候需要上传头像、上传附件等等。当用户点击上传按钮后,后台会对上传的文件进行判断 比如是否是指定的类型、后缀名、大小等等,然后将其按照设计的格式进行重命名后存储在指定的目录。 如果说后台对上传的文件没有进行任何的安全判断或者判断条件不够严谨,则攻击着可能会上传一些恶意的文件,比如一句话木马,从而导致后台服务器被webshell。

客户端check

我们查看页面,发现要上传图片,那我们可以使用一句话木马,我们查看客户端的代码,发现可以修改使我们可以直接上传PHP文件

删除它的代码后,我们可以直接上传PHP文件 

 上传之后,我们开始将文件保存的路径复制到url中

 服务端check

我们可以看见,它的前端里面是没有这个限制文件的代码的

我们尝试上传PHP文件

发现上传失败,那我们去抓包看一下

 和网页的要求不同,那我们修改一下

发送到网页,发现成功发送

后面的程序和上面是一样的。

getimagesize()

getimagesize() 函数用于获取图像大小及相关信息,成功返回一个数组,失败则返回 FALSE 并产生一条 E_WARNING 级的错误信息。

getimagesize() 函数将测定任何 GIF,JPG,PNG,SWF,SWC,PSD,TIFF,BMP,IFF,JP2,JPX,JB2,JPC,XBM 或 WBMP 图像文件的大小并返回图像的尺寸以及文件类型及图片高度与宽度。

所以我们这里需要进行一句话图片木马的合成 

然后再在这个文件图片上传中,上传我们创造好的图片木马

 上传成功,我们可以进行上文的操作。

文件上传漏洞的使用

我们以这个第客户端check来举例子

将文件路径复制到我们的url中

复制网页链接,打开蚁剑 

测试链接后,可以直接链接查看到用户电脑的文件目录

 

overpermission(提权)

如果使用A用户的权限去操作B用户的数据,A的权限小于B的权限,如果能够成功操作,则称之为越权操作。

如果使用A用户的权限去操作B用户的数据,A的权限等于B的权限,如果能够成功操作,则称之为平权操作。

越权漏洞形成的原因是后台使用了 不合理的权限校验规则导致的。

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

水平越权

如果使用A用户的权限去操作B用户的数据,A的权限等于B的权限,如果能够成功操作,则称之为平权操作。

我们登录普通用户的账户

我们发现url是get请求的操作,我们可以在url中更改我们的用户

点击确认之后,我们发现我们通过lucy的账户,没有输入密码的情况下,我们进入到了lili的账户下 

垂直越权

如果使用A用户的权限去操作B用户的数据,A的权限小于B的权限,如果能够成功操作,则称之为越权操作。

我们先登录超级管理员的账户

我们发现是可以登录进行修改,删除,添加用户的

那我们添加用户来进行观察

 在添加的同时,我们进行抓包

 我们把它发送到repeater中,再退出用户,登录我们的普通用户,同时我们进行抓包

复制我们普通用户的cookie值,进入后,发现我们只有查看权限

然后我们去BurpSuite的 repeater中将超级用户的cookie修改成普通用户的cookie值

点击send后我们再返回网页,发现我们使用普通用户的cookie却创建了用户

目录遍历漏洞

在web功能设计中,很多时候我们会要将需要访问的文件定义成变量,从而让前端的功能便的更加灵活。 当用户发起一个前端的请求时,便会将请求的这个文件的值(比如文件名称)传递到后台,后台再执行其对应的文件。 在这个过程中,如果后台没有对前端传进来的值进行严格的安全考虑,则攻击者可能会通过“../”这样的手段让后台打开或者执行一些其他的文件。 从而导致后台服务器上其他目录的文件结果被遍历出来,形成目录遍历漏洞。 

我们在点击这个链接的时候,我们发现url中出现了文件的位置,那我们就可以使用 ../../../的方法来查看这个文件,我们举个例子

我们在pikachu这一级创建了一个1.txt,然后我们使用这个目录遍历的漏洞来查看这个文件里面的内容 

可以看到我们可以在页面中查看到这个文件中的内容

 敏感信息泄露

由于后台人员的疏忽或者不当的设计,导致不应该被前端用户看到的数据被轻易的访问到。这个敏感信息泄露有很多

我们举几个例子:

我们先看它的前端代码

 发现前端代码中有它的测试账号 ,然后我们登录账号

我们发现在网络中它的流量包,是带有它的cookie值的,这也导致我们的信息的泄露

PHP反序列化

 

 反序列化漏洞的原理就是你在输入序列化语句后,系统会进行反序列化来得到序列化的字符串,而这个字符串会在前端显现出来,而这个字符串显现出来后,可能拼接到你前端的代码中,在前端执行

那我们构建一个反序列化的语句

<script>alert('xss')</script>会被当成变量输出给前端,而前端会拼接这个语句在前端执行

这时候就可以参考xss的方式了 

 XXE

攻击者通过向服务器注入指定的xml实体内容,从而让服务器按照指定的配置进行执行,导致问题。如果一个接口支持接牧xml数据,且没有对xml数据做任何安全上的措施,就可能导致XXE漏洞。

我们对xml介绍一下

 DTD中我们是可以通过一个文档约束来约束xml里面标签的规范

那么像我们说的一样,这个接口是允许xml数据的,那我们需要尝试的就是判断它是否有XXE漏洞 

我们输入上面的例子

它返回的是hacker的值,这是正常的提交

那我们可以通过关键字来定义一个外部的实体,外部实体也就意味着我们可以通过外部协议,去读取外部的协议,比如一些的敏感的配置文件

URL重定向

不安全的url跳转问题可能发生在一切执行了url地址跳转的地方。

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

我们直接来干

我们可以看到他的url里面实际上是可以跳转的,那么我们来试试看,第三行的“像秋天的风”点击的时候。我们可以看到他是直接跳转到这个漏洞的简介的,当点击第四行的时候我们发现了url中的不同

 那我们可以将这个url修改一下

我们发现他会自动跳转到百度的页面

这个漏洞我们就可以是使用它来跳转到我们的钓鱼网站

SSRF(Server-Side Request Forgery:服务器端请求伪造) 

其形成的原因大都是由于服务端提供了从其他服务器应用获取数据的功能,但又没有对目标地址做严格过滤与限制导致攻击者可以传入任意的地址来让后端服务器对其发起请求,并返回对该目标地址请求的数据
数据流:攻击者----->服务器---->目标地址

SSRF(curl)

我们来看这题

我们发现它直接把自己的文件路径传递到了url之中,那么我们也可以去输入百度的网页

 它和重定向是不同的,而是我们的浏览器把这个参数传到了后端后端的服务器方法去请求百度,然后把百度返回来数据又返回到前端。那么我们就可以通过这个漏洞对这个服务器同一个网络下的其他服务器来进行探测

//ssrf的问是:前端传进来的url被后台使用curl_exec()进行了请求,然后将请求的结果又返回给了前端。
//除了http/https外,curl还支持一些其他的协议curl --version 可以查看其支持的协议,telnet
//curl支持很多协议,有FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE以及LDAP

SSRF(file_get_content)

我们发现也是同样的

支持通过PHP内置的方法来读取网页源码

将文件的base64 编码返回到了前端,我们可以通过base64解码来读取文件

  • 36
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值