草庐IT

BUUCTF-[ACTF2020 新生赛]Exec1

_Monica_ 2023-04-15 原文

目录

题目:

分析: 

知识点: 

 方法:

方法1:        ;前面和后面命令都要执行,无论前面真假

方法2:        |(就是按位或),直接执行|后面的语句

方法3:        ||如果前面命令是错的那么就执行后面的语句,否则只执行前面的语句

方法4:         &前面和后面命令都要执行,无论前面真假

方法5:         &&如果前面为假,后面的命令也不执行,如果前面为真则执行两条命令

注意:


题目:

 

分析: 

通过题目,以及这里执行的是ping命令。

php模拟我们常用的DOS命令ping命令的方法,主要用到的是php的内置函数exec来调用系统的ping命令,从而实现ping命令功能的。 从而想到通过exec函数来进行RCE。 

 

知识点: 

注意使用exec函数必须需要服务器支持调用系统内置函数才行。另外也可以使用system等php内置函数来实现这个功能

exec执行一个外部程序

执行给予的命令command,不过它并不会输出任何东西,它简单的从命令的结果中传回最后一行,如果你需要去执行一个命令,并且从命令去取得所有资料时,可以使用passthru()这个函数。

system---执行外部程式并且显示输出

system()执行给予的命令command,并且输出结果。如果有给予参数return_var,则执行命令的状态码将会写到这个变量。

注意:如果你允许来自使用者输入的资料,可以传递到此函数,那么你应该使用escapeshellcmd()来确定此使用者无法哄骗(trick)系统来执行武断的(arbitrary)命令。

注意:如果你使用此函数来启动一个程式,而且希望在背景里(background)执行的时候离开它,你必须确定此程式的输出是转向(redirected)到一个文件或是一些输出的资料流,否则PHP将会悬挂(hang)直到程式执行结束。

 

 方法:

;前面和后面命令都要执行,无论前面真假
|直接执行后面的语句
||如果前面命令是错的那么就执行后面的语句,否则只执行前面的语句
&前面和后面命令都要执行,无论前面真假
&&如果前面为假,后面的命令也不执行,如果前面为真则执行两条命令

 方法1:        ;前面和后面命令都要执行,无论前面真假

 

 

 

方法2:        |(就是按位或),直接执行|后面的语句

 

 

 方法3:        ||如果前面命令是错的那么就执行后面的语句,否则只执行前面的语句

 但是这里好像不用管

但是这样确实是只执行了后面的语句。 

 

 

方法4:         &前面和后面命令都要执行,无论前面真假

 

 

方法5:         &&如果前面为假,后面的命令也不执行,如果前面为真则执行两条命令

 这里没有显示flag。

 

 

注意:

此题虽然能解出flag,但是逻辑并不正确,希望自行在本地进行验证。

 

 

 

 

 

 

 

有关BUUCTF-[ACTF2020 新生赛]Exec1的更多相关文章

  1. Tomcat AJP 文件包含漏洞(CVE-2020-1938) - 2

    目录1.漏洞简介2、AJP13协议介绍Tomcat主要有两大功能:3.Tomcat远程文件包含漏洞分析4.漏洞复现 5、漏洞分析6.RCE实现的原理1.漏洞简介2020年2月20日,公开CNVD的漏洞公告中发现ApacheTomcat文件包含漏洞(CVE-2020-1938)。ApacheTomcat是Apache开源组织开发的用于处理HTTP服务的项目。ApacheTomcat服务器中被发现存在文件包含漏洞,攻击者可利用该漏洞读取或包含Tomcat上所有webapp目录下的任意文件。该漏洞是一个单独的文件包含漏洞,依赖于Tomcat的AJP(定向包协议)。AJP自身存在一定缺陷,导致存在可控

  2. ruby - pg: exec_params 不替换参数? - 2

    第一次使用pggem访问postgres数据库。我已成功连接并可以使用#exec运行查询,但现在使用#exec_params构建一个简单的查询似乎没有替换参数。即:get'/databases/:db/tables/:table'do|db_name,table_name|conn=connect(db_name)query_result=conn.exec_params("SELECT*FROM$1;",[table_name])end结果为#这似乎是一个非常简单的示例-我是否从根本上误解了如何使用此方法? 最佳答案 您可以将占位

  3. ruby-on-rails - bundle exec rake 测试抛出错误 - 2

    你好,我是铁路新手。我正在关注MichaelHartl的railstutorial.org。我卡在了第4章的list4.5中:当我点击$bundleexecraketest时,它显示的结果与按照教程应该显示的结果不同。注意:我使用的是Ubuntu15.10作为平台。当我点击$bundleexecraketest时的结果/home/shyambhimani/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/gems/minitest-reporters-1.0.5/lib/minitest/minitest_reporter_plugin.rb:8:in

  4. ruby - Supervisord:如何获取 rvm 和 bundle exec 来启动 rails 脚本? - 2

    我正在尝试使用supervisord管理一个ruby​​脚本,但是因为我还没有完全理解RVM是如何工作的,所以我无法正确地完成它。通常我会做以下事情:#sourcingofrvmdoneautomaticallyonsshlogincd/var/rails/myappRAILS_ENV="production"bundleexec./script/backgroundrb但是使用下面的配置文件我做不到:[program:owgm]directory=/var/rails/owgmcommand=bundleexec./script/backgroundrbenvironment=RAI

  5. ruby - 我可以将一个本身需要一个 block 的 block 传递给 ruby​​ 中的 instance_exec 吗? - 2

    我期待代码foo=proc{puts"foo"}instance_exec(1,2,3,&foo)do|*args,&block|puts*argsblock.callputs"bar"end输出123foobar但是报错bothblockargandactualblockgiven我可以将一个本身需要一个block的block传递给ruby​​中的instance_exec吗? 最佳答案 &foo尝试将foo作为block传递给instance_exec,而您已经传递了一个显式block。省略与号发送foo就像任何其他参数一样(除

  6. ruby - 模块嵌套在 instance_eval/exec 或 module_eval/exec 中 - 2

    我在尝试回答this时想到了这个问题.以下是预期的行为:moduleApModule.nestingend#=>[A]但是以下内容:A.instance_eval{pModule.nesting}A.instance_exec{pModule.nesting}A.module_eval{pModule.nesting}A.module_exec{pModule.nesting}全部返回[]。为什么这些不能像上面那样工作?附加问题Muistooshort提出了一个有趣的观点。如果这是正确的,那么Module.nesting将是依赖于文字上下文的方法和变量之一,例如Method#sourc

  7. ruby-on-rails - 在你的命令前加上 `bundle exec` 可能会解决这个问题 - 2

    我在将网站部署到AWS时遇到问题。Gem::LoadError:Youhavealreadyactivatedrake10.4.2,butyourGemfilerequiresrake10.5.0.Prepending`bundleexec`toyourcommandmaysolvethis./var/app/ondeck/config/boot.rb:3:in`'/var/app/ondeck/config/application.rb:1:in`'/var/app/ondeck/Rakefile:4:in`'LoadError:cannotloadsuchfile--bundler

  8. ruby - 传递给 `instance_exec` 时如何执行 proc - 2

    问题的灵感来自thisone.Proc::new有一个选项可以在方法内部没有block的情况下调用:Proc::newmaybecalledwithoutablockonlywithinamethodwithanattachedblock,inwhichcasethatblockisconvertedtotheProcobject.当proc/lambda实例作为代码块传递时,将创建Proc的新实例:Proc.singleton_class.prepend(Module.newdodefnew(*args,&cb)puts"PROC#{[block_given?,cb,*args].i

  9. ruby - bundle exec rspec spec/=> RUBYOPT : -F (RuntimeError) 中的无效开关 - 2

    当我在Windows764位系统上运行bundleexecrspecspec/时,我收到以下错误:invalidswitchinRUBYOPT:-F(RuntimeError)我正在运行ruby​​1.9.2p136(2010-12-25)[i386-mingw32](安装在c:\ProgramFiles(x86)\Ruby192)和bundler1.0.15(作为ruby​​gem安装).关于如何解决这个问题的任何线索?谢谢,本 最佳答案 Bundler不喜欢Ruby的路径包含空格这一事实。为了解决这个问题,我编辑了runtime

  10. ruby - 为什么 "bundle exec"会吃掉我传入的参数? - 2

    当我使用bundleexec调用命令时,它接受我传入的参数。一个例子是:bundleexecmy_commandrun--verbose在这种情况下,--verbose用作bundler参数,因为它应该用于my_command。我知道以下方法可行:bundleexec'my_commandrun--verbose'是否可以避免引号?我使用的命令已经有很多引号。我预计这样的事情会奏效,但它没有:bundleexec--my_commandrun--verbose我没有看到太多关于bundler的文档。任何想法将不胜感激。 最佳答案 这

随机推荐