perl对于反引号(``)以及system之间的不同

PHP命令执行过滤逃逸指南:当system/cat/flag都被禁时怎么办? 本文深入探讨了在CTF竞赛和Web安全测试中,当PHP命令执行的关键函数如system、cat以及关键词flag被过滤时的多维突破策略。文章从替代函数、字符绕过、协议利用、无参数RCE等多个维度,系统性地梳理了实战绕过技巧,旨在帮助安全研究人员和开发者深入理解PHP命令执行的攻防博弈。 阅读详情

反引号(``)以及system都是perl中执行系统命令的方式,但是两者有较大的不同。

总体概括一下,在perl程序中“`$cmd`” 获取的是程序执行结果,而system($cmd)获取的是程序执行后的返回值。

详情参看如下示例:

操作系统 & perl 版本:

[root@mdw ~]# uname -a
Linux mdw 2.6.18-238.el5 #1 SMP Sun Dec 19 14:22:44 EST 2010 x86_64 x86_64 x86_64 GNU/Linux
[root@mdw ~]# perl -v

This is perl, v5.8.8 built for x86_64-linux-thread-multi

Copyright 1987-2006, Larry Wall

Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.

Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl".  If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.


demo示例:

#!/usr/bin/perl
use strict;

my ($cmd,$ret1,$ret2);

$cmd = "ls /tmp";

print "*************执行反引号结果*****************\n";
$ret1 = `$cmd`;

print "*************执行system结果*****************\n";
$ret2 = system($cmd);


print "*************反引号方式*****************\n";
print $ret1 ;


print "*************下面是system方式*****************\n";
print $ret2 ;

执行结果如下:

[root@mdw ~]# perl 20150325.pl 
<span style="color:#ff6666;">*************执行反引号结果*****************#反引号执行结果输出为空</span>
*************执行system结果*****************<span style="color: rgb(255, 102, 102); font-family: 'Microsoft YaHei';">#system将执行结果输出</span>
dsp.war         keyring-BRRbfe  keyring-ef4G7O  keyring-qF3esN  mapping-root                     ssh-LdGZWd5072       vmware-root
edsSvc.war      keyring-CLv3aa  keyring-Ib7ubB  keyring-w6ccVd  OraInstall2014-12-10_11-03-22PM  virtual-root.KIEbpb
gconfd-root     keyring-D3X4iy  keyring-iXPFuW  keyring-yDTyOo  orbit-root                       virtual-root.nNRBCU
keyring-ap4Ph9  keyring-eC7MRe  keyring-nSr1Pp  keyring-YzW56H  ssh-BGYzXS4811                   VMwareDnD
*************反引号方式*****************
dsp.war
edsSvc.war
gconfd-root
keyring-ap4Ph9
keyring-BRRbfe
keyring-CLv3aa
keyring-D3X4iy
keyring-eC7MRe
keyring-ef4G7O
keyring-Ib7ubB
keyring-iXPFuW
keyring-nSr1Pp
keyring-qF3esN
keyring-w6ccVd
keyring-yDTyOo
keyring-YzW56H
mapping-root
OraInstall2014-12-10_11-03-22PM
orbit-root
ssh-BGYzXS4811
ssh-LdGZWd5072
virtual-root.KIEbpb
virtual-root.nNRBCU
VMwareDnD
vmware-root
*************下面是system方式*****************
<span style="color:#ff0000;">0</span>[root@mdw ~]# 


从上面的执行结果可以看出,当调用system命令的时候,系统会将执行结果输出到屏幕,并且将执行结果返回值(0或者非0)传给$ret2 ;

然而反引号(``)将会把所有结果都保存到变量$ret1上,并且不会输出任何结果。


有兴趣的同学可以将$cmd改成一个执行错误的命令,并且执行程序,查看输出

#################################################################################################

  小P工作室提供专业perl培训 . 解决perl开发过程中遇到各种问题.

  沟通交流群 :438349855   QQ :1400184751 

 

Perl进程——exec system qx// 在perl中启动子进程执行外部程序有多种方式,主要有exec system qx//,qx//也就是通常说的反引号``。 这几种方式有或多或少的区别。本文从是否返回进程 返回值是什么 什么时候返回 是否使用shell几个方面对这三个命令加以解析说明。 通过代码详细了解 阅读详情

相关推荐

ECU-TEST笔记&使用技巧01

说明 1)所述均基于如下环境:ECU-TEST 8.0、Win10系统、NI Veristand 2018(HIL测试)。不排除因为版本及软件环境问题,所述方法不奏效或有更好的方法,欢迎交流,一起提高。 2)本博客以问答形式进行,所述问题均来自于实际测试(包括MIL、HIL测试)遇到的问题及需求,目的是提高测试效率和自动化测试序列的可维护性。 3)本博客尽量从测试方法及ECU-TEST原...

Eigrl的博客 1万+

关于perl中的反引号(``),system和exec

在perl中反勾号(``),system和exec都用来执行命令,这篇文章将给我们介绍它们各自的使用方法,联系,以及区别。 一、使用方法1.       反勾号(``)首先,我们有命令输入操作符,也叫反勾号操作符,因为它看起来象这样:$info = `finger $user`;一个用反勾号(技术上叫重音号)引起的字串首先进行变量替换,就象一个双

ChipArtist's Blogs 5082

关于token无痛刷新的两个方案

目录方案一方案二 方案一 思路: 后端需要返回一个token过期的时间,在请求发起前拦截每个请求,判断token的有效时间是否已经过期,如果已过期,则暂时将请求挂起,先刷新token后再继续请求。 前期思考: 返回过期时间是为了判断是否过期的,但是如果服务器时间和系统时间不一致呢? 如果同时发起多个请求时怎么办? 实现: 因为是在请求前进行拦截,所以这里用axios的axios.interceptors.request.use()方法 首先,关于服务器时间和系统时间不一致的问题,我的解决方法是:

Yugoup的博客 2716

perl system exec 反引号

<br />关于perl中的反引号(``),system和exec<br /><br /><br />在perl中反勾号(``),system和exec都用来实行号令,这篇文章将给我们先容它们各自的利用方式,接洽,以及区别。<br /> <br />一、利用方式<br />1. 反勾号(``)<br />起首,我们有号令输入操纵符,也叫反勾号操纵符,由于它看起来象如许:<br />$info = `finger $user`;<br />一个用反勾号(手艺上叫重音号)引起的字串起首举行变量替代,就象一个双引

Present is best Present! 6163

具身智能四大技术路线:VLA、大小脑、世界模型与强化学习

具身智能是机器人实现感知-决策-执行闭环的核心范式,其本质在于物理世界中的具身化交互能力。技术演进围绕如何高效建模环境、理解指令并生成鲁棒动作展开,衍生出四大主流路径:视觉-语言-动作(VLA)端到端学习、大小脑分层控制、世界模型驱动预测,以及强化学习原生策略优化。VLA强调多模态对齐与泛化能力,适合语义理解优先场景;大小脑架构兼顾实时性与可解释性,是工业落地的高可靠选择;世界模型追求内在物理模拟,代表长期认知跃迁方向;强化学习则扎根仿真试错,在力控、抓取等连续控制任务中展现强鲁棒性。本文聚焦这四大路线的技

weixin_32181267的博客 296

智能汽车域控制器FOTA升级方案探讨

上文提到的Entry属性,包括Active 属性, Bootable 属性, Successful 属性, Retrycnt 属性 ,Active 属性用于标志槽的优先级,bootloader优先选择Active 属性=1的槽启动,Bootable 属性标志槽可否可启动,Successful 属性标志槽是否成功启动过,Retrycnt 属性标志槽可尝试启动的次数。芯片启动后,首先进入Bootloader阶段,此阶段将读取存储系统的分区属性,根据属性值进行逻辑判断,并确定进入哪个分区,详见流程图。

huibian1234的博客 1570

转载 : 关于perl中的反引号(``),system和exec

<br />关于perl中的反引号(``),system和exec2010-02-25 10:58<br /> <br />在perl中反勾号(``),system和exec都用来执行命令,这篇文章将给我们介绍它们各自的使用方法,联系,以及区别。 一、使用方法 1. 反勾号(``) 首先,我们有命令输入操作符,也叫反勾号操作符,因为它看起来象这样: $info = `finger $user`; 一个用反勾号(技术上叫重音号)引起的字串首先进行变量替换,就象一个双引号引起的字串一样。得到的结果然后被系统当作

我为编程狂,我为外语狂 979

vuecli3 实现 移动端和pc端 界面切换(两套代码)

适合场景 多页面多系统应用 所有系统都在同一目录下。配置多入口多出口。每个系统之间可以链接。每个系统内依然采用Vue单页应用开发。 产品需求:一套代码 兼容pc端和移动端 , 移动端和pc端的样式布局差别很大,需要使用多界面,并判断使用手机的时候跳转移动端代码,使用pc端跳转pc端代码。 项目目录 分为两部分代码,pc 和mobile 第一步:创建一个登陆页面的文件 在项目public文件夹下创建一个login.html,其实就是将index.html复制一份,将title改一下: <!DOCTYP

你怎么也喜欢嘴巴嘟嘟 5920

shell中变量引用的两种方式$()和``,后者叫做反向单引号

怎么样引用变量(就是让系统识别这个变量) 有两种方式:$()和`` ``适合所有变量,反向单引号 $()适合于shell中 实验步骤 echo time is date echo time is `date` echo time is $(date) time=`date` echo time vim test.pl 编辑一个Perl语言脚本 发现报错,perl...

Rapig1的博客 484

QML实现ListView的拖动排序

现有一种需求,就是用鼠标拖动某项,动态去改变某一项在ListView中显示的顺序位置,经过研究及实践实战,实现方式的核心代码如下: import QtQuick 2.4 import QtQuick.Controls 1.3 import QtQuick.Window 2.2 import QtQuick.Dialogs 1.2 Rectangle { width: 800 ...

草上爬的博客 7564

17、超声散斑降噪与桌面系统背景估计技术

本文介绍了超声散斑降噪与桌面系统背景估计的先进技术。在超声成像方面,提出结合超分辨率(SR)和非线性扩散(ND)的方法,显著降低噪声并保留图像细节,在MSE和CNR指标上优于传统方法。在桌面交互系统中,针对传统背景估计因忽略设备像素结构导致的误差,提出基于显示器与相机像素结构建模的几何转换方法,有效减少尖锐边缘区域的误检,提升物体识别准确性。实验验证了两种方法的有效性,未来将致力于实时性优化与多设备兼容性扩展。

dream的博客 87

关于perl中的反勾号(``),system和exec

关于perl中的反勾号(``),system和exec 在perl中反勾号(``),system和exec都用来执行命令,这篇文章将给我们介绍它们各自的使用方法,联系,以及区别。 一、使用方法1.       反勾号(``)首先,我们有命令输入操作符,也叫反勾号操作符,因为它看起来象这样: $info = `finger $user`; 一个用反勾号(技术上叫重音号

中关村村长的专栏 2645

【CicadaPlayer】av_rescale_q 学习:转换PTS和Duration

参考 av_rescale_q()理解 大神时间基准的总结: AVPacket下的pts和dts以AVStream->time_base为单位(数值比较大),时间间隔就是AVStream->time_base。 大神:多种转换的总结 av_rescale_q用于计算Packet的PTS 如: if (pkt->pts != AV_NOPTS_VALUE) { pkt->pts = av_rescale_q(pkt->pts, m

突围 842

perl中的反勾号(``),system和exec

在perl中反勾号(``),system和exec都用来执行命令,这篇文章将给我们介绍它们各自的使用方法,联系,以及区别。 一、使用方法 1.       反勾号(``) 首先,我们有命令输入操作符,也叫反勾号操作符,因为它看起来象这样: $info = `finger $user`; 一个用反勾号(技术上叫重音号)引起的字串首先进行变量替换,就象一个双引号引起的字串一样。得到的结果然

每天进步一点点 1495

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

perl中的反引号`` system exec

关于perl中的反引号(``),system和exec 在perl中反勾号(``),system和exec都用来实行号令,这篇文章将给我们先容它们各自的利用方式,接洽,以及区别。   一、利用方式 1. 反勾号(``) 起首,我们有号令输入操纵符,也叫反勾号操纵符,由于它看起来象如许: $info = `finger $user`; 一个用反勾号(

cybermerman的专栏 3223

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

perl中system函数和反引号` `使用区别

在perl中调用system(“cmd”)函数和使用反引号` cmd`均是调用系统命令,但两者使用上是有些细微差别。调用system函数返回的是该函数执行返回值,比如0表示执行正确,-1执行错误;同时会将cmd命令的结果打印到控制台界面;而反引号` `直接返回的就是该cmd的执行结果,但是不会屏幕上表现出来。具体代码如下:print "******call system() function\n";

Keep Moving~ 1万+

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

perl中关于system与反引号``的差别

在做一个 web application的时候,要在perl中同时运行多个shell命令而且在后台运行,一开始用了反引号来处理(以前一直这样处理的)结果在测试中发现,设置了后台运行命令,但是不能同时运行,而是看到在上一个shell命令运行完成后再运行下一个shell 命令,但是用system 方法的时候是ok的,于是就在网上看了别人的经验,还是不是很清楚,有看了"小骆驼",终于明白,其差别如下:

y531876的专栏 1220

在Perl中使用shell命令和管道

在Perl中使用shell命令有三种方法 * system函数 * 反引号`` * qx{} 第一种方法,system函数格式如下 [html] view plaincopyprint? 1. system("command"); system("command"); 若命令正常运行则返回0,否则返回非零值 此方法的缺点是不能将shell命令的输出直

wqq_721 4114

perl调用shell命令并获取输出

1 system perl也可以用system调用shell的命令,它和awk的system一样,返回值也是它调用的命令的退出状态.如果向system传递一个字符串作参数,则perl会调用shell来执行这个命令,在这个字符串内也就不可以有perl的变量了;如果传递多个字符串作参数,则perl会自己执行这个命令,且可以传递perl自己的变量给它,因为perl会对这些变量扩展成它们的值

beyondlpf的专栏 1万+

Perl进程管理

Perl进程管理 1. system函数 在perl中启用子进程的最简单的方法是使用system函数,如需要使用perl调用 Unix 的 date 命令,告诉 system 要虚运行的外部程序的名称即可: system ‘date’; perl运行的程序成为父进程; system根据当前进程创建一份拷贝,这份拷贝被称作子进程; 子进程会继承父进程的标准输入、标准输出以及标准错误; 一般 ...

追梦赤子心 1554

perl脚本执行linux命令行,Perl调用shell命令方法小结

一、systemperl也可以用system调用shell的命令,它和awk的system一样,返回值也是它调用的命令的退出状态.代码如下:[root@AX3sp2 ~]# cat aa.pl#! /usr/bin/perl -w$file = "wt.pl";system("ls -l wt.pl");$result = system "ls -l $file";print "$result \...

weixin_39873177的博客 2346

perl中如何执行外部命令

<br /><br />在perl中反勾号(``),system和exec都用来执行命令,这篇文章将给我们介绍它们各自的使用方法,联系,以及区别。<br />一、使用方法<br />1.       反勾号(``)<br />首先,我们有命令输入操作符,也叫反勾号操作符,因为它看起来象这样:<br />$info = `finger $user`;<br />一个用反勾号(技术上叫重音号)引起的字串首先进行变量替换,就象一个双引号引起的字串一样。得到的结果然后被系统当作一个命令行,而且那个命令的输出成为伪文

aldenphy的专栏 1万+
下一篇: 如何学好hadoop开发(一)
LeeeeeeYooooond
博客等级 码龄12年 3粉丝 8原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值