首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >CTF从入门到提升(十三)文件包含session及例题详解

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

原创
作者头像
牛油果
修改2019-09-12 18:18:27
7810
修改2019-09-12 18:18:27
举报

​​具体场景——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。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ​​具体场景——session
  • 举栗子
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档