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

RCE - - 无字母数字远程命令执行

题目源码

<?php
if(isset($_GET['code'])){$code = $_GET['code'];if(strlen($code)>35){die("Long.");}if(preg_match("/[A-Za-z0-9_$]+/",$code)){die("NO.");}eval($code);
}else{highlight_file(__FILE__);
}

分析

        这道题 code 接 get 传参,完了对传进来的内容进行正则匹配,通过观察还可以看出这道题有两个限制:

  1. webshell长度不超过35位

  2. 除了不包含字母数字,还不能包含$_

所以我们有关$和_的方式都无法实现了

php7解法

        在PHP7中就不是非常困难,因为PHP7前是不允许用($a)();这样的方法来执行动态函数的,但PHP7中增加了()()这种形式的命令执行

<?php

(phpinfo())();

        那么这道题就可以用这样的方式来做,但是还是会出现字母,我们就会想到编码,get传参使用urlcode编码,但是这种编码对只会对符号进行编码,字母并不在它的编码范围里,这是我们想到取反操作,得到:

(~%8F%97%8F%96%91%99%90)();

        执行成功,我们只用把里面要去反的函数的反码进行更换即可。但是,这种方法只适用于php版本在7以上,低版本并不支持这种形式。


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

相关文章:

  • 【机器学习】3. 欧式距离,曼哈顿距离,Minkowski距离,加权欧式距离
  • Spring声明式事务
  • Json-TypeFactory和TypeReference和JavaType
  • Mac apache 配置
  • 大型物流运输无人机技术详解
  • 前端理论总结(js)——原型链 // 原型 // 浅拷贝和深拷贝
  • Vue3 组件 10
  • 数字化技术分别有哪些,数字化技术特点和优势是什么?
  • [NeurIPS 2024] Self-Refine: Iterative Refinement with Self-Feedback
  • HTML 标签大合集:一文入门
  • 【Linux】自动化构建工具makefile
  • 【lua实战】lua中pairs和ipairs的区别
  • 末代皇帝Intel核显黑苹果,NUC10的性能到底有多强
  • 【系统架构设计师】论文:论软件开发平台的选择与应用
  • 01-开篇:重新认识 bpmn.js 与 BPMN 规范
  • Add and Multiply Queries
  • 云计算第二阶段---DBA Day05-DAY07
  • 【Material-UI】深入探讨Radio Group组件的自定义功能
  • 算法刷题笔记 筛质数(详细注释的C++实现,同时包含朴素筛法、埃氏筛法和线性筛法详细介绍)
  • JavaScript 数据结构 ==== 二叉树