无字母数字命令执行

news2024/11/25 18:41:56

目录

源码

PHP7版本

PHP5版本

发现的现象和思考


源码

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

限制条件:

  1. webshell长度不超过35位
  2. 除了不包含字母数字,还不能包含$_

PHP7版本

PHP修改了表达式的执行顺序,所以可以使用($a)()这样的方式来执行函数,例('phpinfo')()。但是这样的执行顺序在7版本前是不允许的

解决办法:($a)()

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

PHP5版本

思路:利用文件上传生成一个临时文件,然后利用点‘.’执行生成的临时文件

/???/????????[@-[],该正则匹配的是/tmp/目录下的临时文件,临时文件一般是9位,最后以为字母为大写(不一定)

该部分上传的是文件中的内容,以id命令为例

发现的现象和思考

执行的命令需要紧跟文件内容的下线,当命令与下线有空行时,会不执行命令。并且有多条命令时,也只有紧靠着下线的命令会执行

当命令不紧跟着下线时,查看临时文件中的内容

创建一个a文件,并编写内容

使用diff命令进行临时文件与自己的文件对比

查看十六进制格式

可以发现自己编写的文件中只有0a,而临时文件中是0d0a

在hex编码中,0a代表换行符,0d代表回车符

通过查略知道,在Linux系统中,文件内容的换行符通常只使用换行符,其十六进制表示为0A,而不包含回车符,其十六进制表示为0D。这是因为Linux系统遵循的是Unix的传统,即使用LF(0A)作为行的结束符.

相比之下,Windows系统中的文本文件通常使用CR+LF(0D0A)作为行的结束符。如果你在Windows系统上编辑了一个文本文件,并将其传输到Linux系统上,然后使用`xxd`命令查看,你可能会在原本应该是LF(0A)的位置看到CR+LF(0D0A),除非你在传输或保存文件时进行了转换,以符合Linux的标准。

处理跨平台的文本文件时遇到了换行符不一致的问题,你可以使用各种工具来转换文件的换行符格式,比如`dos2unix`(将Windows风格的换行符转换为Unix/Linux风格的换行符)和`unix2dos`(将Unix/Linux风格的换行符转换为Windows风格的换行符)等。这些工具可以帮助你确保文件在不同操作系统之间正确地显示和处理。

通过执行文件,可以发现id这个命令收到了后面0d的影响

查略了一下网上,解释为:

 Linux系统通常使用LF(0A)作为行的结束符。因此,如果文件原本是为Windows系统编写的(即使用CR+LF作为行的结束符),那么在Linux中直接查看或处理该文件时可能会遇到问题。

如果文件是二进制文件,并且包含`0D`作为数据的一部分(而不是作为行的结束符),那么这些`0D`字符将按原样保留,并在执行文件时作为数据的一部分进行处理

如果你尝试在Linux中执行一个包含`0D`字符的文本文件(而不是二进制文件),并且该文件没有被正确转换为Unix/Linux风格的换行符,那么执行操作可能会失败,因为Linux通常不会将文本文件作为可执行文件来处理。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2035781.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

重修设计模式-行为型-状态模式

重修设计模式-行为型-状态模式 先了解一下状态机的概念&#xff0c;状态机是软件编程中对一种状态场景的抽象表达&#xff0c;构成状态机三要素是&#xff1a;状态&#xff08;State&#xff09;、事件&#xff08;Event&#xff09;、动作&#xff08;Action&#xff09;&…

basic_pentesting_2靶机

靶机地址&#xff1a;Basic Pentesting: 2 ~ VulnHub 攻击机kali和靶机要设在同一网段&#xff0c;查看靶机MAC地址&#xff1a; 一、信息收集 扫描目标主机 arp-scan -l 使用nmap扫描靶机开放的端口&#xff1a; nmap -A -sS -sV -v -p- 192.168.7.127 浏览器访问80端口&a…

数据中心安全建设整体解决方案(DOC原件22页)

数据中心的安全体系建设并非安全产品的堆砌&#xff0c;它是一个根据用户具体业务环境、使用习惯、安全策略要求等多个方面构建的一套生态体系&#xff0c;涉及众多的安全技术&#xff0c;实施过程需要涉及大量的调研、咨询等工作&#xff0c;还会涉及到众多的安全厂家之间的协…

2024接口自动化测试高频面试题!

一、json和字典的区别&#xff1f; json就是一个文本、字符串&#xff1b;有固定的格式&#xff0c;格式长的像python字典和列表的组合&#xff1b;以key-value的键值对形式来保存数据&#xff0c;结构清晰&#xff0c;。可以说是目前互联网项目开发中最常用的一种数据交互格式…

如何判定一个加密软件是否可靠

一、加密算法的安全性 算法类型&#xff1a;选择采用公认的高安全性加密算法的软件&#xff0c;如AES&#xff08;高级加密标准&#xff09;、RSA等。这些算法经过广泛验证&#xff0c;具有强大的加密能力。 密钥长度&#xff1a;较长的密钥长度能够增加破解难度&#xff0c;…

【微信小程序】页面配置

1. 页面配置文件的作用 小程序中&#xff0c;每个页面都有自己的 .json 配置文件&#xff0c;用来对当前页面的窗口外观、页面效果等进行配置。 2. 页面配置和全局配置的关系 3. 页面配置中常用的配置项

利用 Splunk 对人工智能数据基础设施进行 Spelunk 分析

概述 在企业数据方面&#xff0c;MinIO Enterprise Object Store 和 Splunk 有着共生关系。Splunk在其数字流处理器中使用MinIO。MinIO 是一个 Splunk SmartStore 端点。MinIO Enterprise Object Store 是一个高性能、兼容 Amazon S3 的分布式对象存储系统。通过遵循超大规模计…

免费【2024】springboot 个人用户博客系统设计与实现

博主介绍&#xff1a;✌CSDN新星计划导师、Java领域优质创作者、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行前辈交流✌ 技术范围&#xff1a;SpringBoot、Vue、SSM、HTML、Jsp、PHP、Nodejs、Python、爬虫、数据可视化…

STM32学习笔记11-PWR电源控制

目录 PWR简介 电源框图 上电复位和掉电复位 可编程电压监测器 低功耗模式 模式选择 睡眠模式 停止模式 待机模式 低功耗模式应用 睡眠模式 停止模式 待机模式 PWR简介 PWR&#xff08;Power Control&#xff09;电源控制PWR负责管理STM32内部的电源供电部分&#…

Unity新输入系统结构概览

本文仅作笔记学习和分享&#xff0c;不用做任何商业用途 本文包括但不限于unity官方手册&#xff0c;unity唐老狮等教程知识&#xff0c;如有不足还请斧正 在学习新输入系统之前&#xff0c;我们需要对其构成有个印象 1.输入动作&#xff08;Inputaction&#xff09; 是定义输…

队列---学生信息输入输出

作业&#xff1a;链栈&#xff0c;自己实现一遍&#xff0c;但是节点存储不是整数&#xff0c;存储学生信息&#xff08;年龄&#xff0c;分数&#xff0c;姓名&#xff09;三级引用。 1、建立学生信息结构体&#xff0c;将data改为学生信息结构体类型。 2、循环入栈和入队。…

RPC 和 HTTP 理解

网上充斥着各类类似于这样的文章&#xff1a;rpc 比 http 快了多少倍&#xff1f;既然有了 http&#xff0c;为什么还要用 rpc 调用等等。遇到这类文章&#xff0c;说明对 http 和 rpc 是由理解误区的。 这里再次重复强调一遍&#xff0c;通信协议不是 rpc 最重要的部分&#x…

KubeSphere 部署 Kafka 集群实战指南

本文档将详细阐述如何利用 Helm 这一强大的工具&#xff0c;快速而高效地在 K8s 集群上安装并配置一个 Kafka 集群。 实战服务器配置(架构 1:1 复刻小规模生产环境&#xff0c;配置略有不同) 主机名IPCPU内存系统盘数据盘用途ksp-registry192.168.9.904840200Harbor 镜像仓库…

命令行参数环境变量

目录 前言&#xff1a; 命令行参数&#xff1a; 现象&#xff1a; 这些参数的意义&#xff1a; 为什么要这么做&#xff1f; 这些事是谁做的呢&#xff1f; 环境变量 现象&#xff1a; 创建环境变量&#xff1a; 结合程序理解&#xff1a; 前言&#xff1a; 我们在前…

R语言里认识机器学习

下面内容摘录自&#xff1a; 1章2节&#xff1a;关于人工智能、机器学习、统计学连和机器学习、R 与 ChatGPT 的探究-CSDN博客文章浏览阅读1k次。在现代科技发展的浪潮中&#xff0c;人工智能&#xff08;AI&#xff09;、机器学习&#xff08;ML&#xff09;、统计学、R 编程…

网络通信(TCP/UDP协议 三次握手四次挥手 )

三、TCP协议与UDP协议 1、TCP/IP、TCP、 UDP是什么 TCP/IP协议是一个协议簇&#xff0c;里面包括很多协议的&#xff0c; UDP只是其中的一个&#xff0c; 之所以命名为TCP/IP协议&#xff0c; 因为TCP、 IP协议是两个很重要的协议&#xff0c;就用他两命名了&#xff0c;而TCP…

告别知云单一选择,这些文献翻译工具同样值得信赖!

在翻译领域&#xff0c;知云文献翻译以其专业度和便捷性赢得了众多用户的青睐&#xff0c;但市场上还有许多其他翻译工具同样值得关注。本文将为您推荐几款优秀的翻译工具。 Foxit在线翻译 链接&#xff1a; https://fanyi.pdf365.cn/ Foxit在线翻译以其高效的翻译速度和准…

创建第一个Qt项目

创建第一个QT项目 创建工程名称一般不要有特殊符号&#xff0c;不要有中文 项目工程保存路径可修改&#xff0c;路径不要带中文 Base class中的三个选项 QMainWindow:主窗口类&#xff0c;包括菜单栏、工具栏、状态栏。 QWidget:可以创建一个空白的窗口&#xff0c;是所有界…

嵌入式软件--数据结构与算法 DAY 13

在嵌入式中&#xff0c;对算法的要求不高&#xff0c;但顺序查找和冒泡排序是经典算法&#xff0c;必须掌握。 1.算法定义 算法是一个用于解决特定问题的有限指令序列&#xff08;计算机可以执行的操作&#xff09;。通俗的理解就是可以解决特定问题的方法。 2.时间复杂度 …

手动和torch.nn实现卷积神经网络、空洞卷积、残差网络

一、数据集 1. 分类问题 数据集——车辆分类数据 ⚫输入图片,输出对应的类别 ⚫共1358张车辆图片 ⚫分别属于汽车、客车和货车三类 ⚫汽车:779张 ⚫客车:218张 ⚫货车:360张 ⚫每个类别随机取20-30%当作测试集 ⚫各图片的大小不一,需要将图片拉伸到相同大小 汽车 …