CTF从入门到提升(十三)文件包含session及例题详解

本文详细讲解了CTF挑战中关于文件包含漏洞的利用,特别是结合Session上传进度文件的利用方法。通过curl操作和伪协议,如php://filter/convert-base64.encode,实现对文件内容的控制,最终达成getshell的目标。内容包括如何利用可控字符串绕过判断,以及解码过程中的技巧。

具体场景——session
在这里插入图片描述
我们可以查一下手册,看看这个参数是默认开启:

在这里插入图片描述
在这里插入图片描述
举栗子

通过上传一个orange作为key传一个值传给这个变量,放到file函数中,再去比对file函数读取结果文件中的第一行0前面六个字符串是否匹配,如果是orange就会作为包含,否则就会显示源代码。
在这里插入图片描述
这道题的难点在于包含一个文件要控制里面的内容,file函数的作用是把一个整一个文件读到一个数据中去,filename要读取文件名:
在这里插入图片描述
Session.upload_progress.enabled这个参数会生成一个上传进度文件,如何生成、是否可控以及它有什么用呢?

用curl来操作 :
在这里插入图片描述
在这里插入图片描述
可以尝试着在后面再去跟一个文件,再次传一个表单。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

会发现这个文件是可以留下来的,这段文件内容其实你是可控的,这个地方的值可以直接包含漏洞进行利用了,但是它反而没有这么简单,因为题目在实际判断中,需要读取文件的前六位。upload progress之后的字符串是可控的,之前的却是不可控的,这个地方又是下一个突破点。

upload progress不可控就没有办法进行绕过,想办法让它可控,可以考虑运用伪协议进行突破的时候做一个消失。php://filter/convert-base64.encode去做一个文件读取的操作,base64可以让它转码,
在这里插入图片描述

如果在后面跟两个等于号会怎样呢?

会发现它返回的结果还是一样的,base64在解码的时候,先做一个正值匹配,把非base64字符串去掉变成空格,自动删去空格再做解码 。
在这里插入图片描述

四个字符串解一次就会变成三个字符串再解一次。二次解码之后,如果不在base64之列就会忽视掉这些东西自动消失,直到第三次解码最后拼接一些字符串。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
运行后返回一个字符串,有了这个字符串之后就可以把它拿来用了。
在这里插入图片描述

会发现它的长度变小,说明成功了:
在这里插入图片描述

这个文件会在tmp目录下去生成一个web,成功实现getshell。
在这里插入图片描述

以上内容参考安全牛课堂《CTF从入门到提升

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值