web-命令执行

2.2 rce中常用的包含文件函数

include     highlight_file

 1)highlight_file函数  (别名:show_source)

对文件进行 PHP 语法高亮显示,语法通过使用 HTML 标签进行高亮;

当使用该函数时,整个文件都将被显示,包括密码和其他敏感信息!

 highlight_file(string $filename, bool $return = false): mixed

(highlight_file(filename,return))

  • filename   必需, 规定要显示的文件。

  • return   可选, 如果该参数设置为 TRUE,该函数将以字符串形式返回高亮显示的代码,而不是直接进行输出,默认是 FALSE。

  • 返回值     如果 return 参数设置为 TRUE,该函数将以字符串形式返回高亮显示的代码,而不是直接进行输出。否则,如果成功则返回 TRUE,如果失败则返回 FALSE。

使用方式:

 highlight_file 'flag.php'

2)include

当包含 .php ⽂件时,可同时运⾏

include('flag.php');
2 或者
3 include 'flag.php';
4
5 姿势绕过
6
7 include $_GET[1]?>&1=flag.ph

2.3 常⻅的系统执⾏函数

system    shell_exec    exec    popen    passthru

1) system

执行一个外部的应用程序并显示输出的结果。

语法:system(string $command, int &$return_var = ?): string

2) shell_exec

  • 通过 shell 环境执⾏命令,并且将完整的输出以字符串的⽅式返回。
  • 只返回字符串,不会进⾏输出
  • 该函数和 反引号 `` 的执⾏效果⼀致
语法:shell_exec(string $cmd): string

例如:

<?php
 $output = shell_exec('ls -lart');
 echo "<pre>$output</pre>"; //需要输出显示结果
 //print($output);
 ?>

3) exec

将字符串作为 OS命令去执⾏,但是⾃身不带输出功能,需要写⼊输出功能的代码,返回值为字符串.

语法: string exec(string command, string [array], int [return_var])

  参数说明:

Command需要执行的命令
Array输出值
return_var是返回值0或1,如果返回0则执行成功,返回1则执行失败。
  • 说明:本函数执⾏输⼊ command 的外部程序或外部指令。它的返回字符串只是外部程序执⾏后返回的最后⼀ ⾏;若需要完整的返回字符串,可以使⽤ PassThru() 这个函数。

4) popen
打开进程⽂件指针

语法:popen(string $command , string $mode ): resource

打开⼀个指向进程的管道,该进程由派⽣给定的 command 命令执⾏⽽产⽣。

例如:

<?php
 $handle = popen("/bin/ls", "r");
 ?>

5)passthru

执⾏外部程序并且 ⾃带输出功能

语法:passthru(string $command , int &$return_var = ?): void

【passthru ()只调用命令,不返回任何结果,但把命令的运行结果原样地直接输出到标准输出设备上。所以passthru()函数经常用来调用象pbmplus (Unix下的一个处理图片的工具,输出二进制的原始图片的流)这样的程序(通过设置 Content-type 为 image/gif , 然后调⽤ pbmplus 程序输出 gif ⽂件, 就可以从 PHP 脚本中直接输出图像到浏览器);它也可以得到命令执行的状态码。】

<?php
 passthru ('echo $PATH');
 ?>

2.4 其他命令执行函数

PHP:exec、shell_exec、system、passthru、popen、proc_open等

ASP.NET:System.Diagnostics.Start.Process、System.Diagnostics.Start.Proces
sStartInfo等

Java:java.lang.runtime.Runtime.getRuntime、java.lang.runtime.Runtime.exec
等

2.5 不需要括号的函数

echo 111;
print 123;
die;
include " "
require " "
include_once " "
require_once " "

include 和 include_once 的区别:

  • include 会将指定的文件载入并执行里面的程序;重复引用加载多次。
  • include_once 函数会将指定的文件载入并执行里面的程序;此行为和 include 语句类似,唯一区别是如果该文件中已经被包含过,则不会再次包含。
<?php
include "index.php";

// 其他代码
//

include "index.php";
?>

【上述例子包含“index.php"两次】

<?php
include_once "index.php";

// 其他代码
//

include_once "index.php";
?>

【上述例子只包含”index.php"一次】

include 和 require 的区别:

  • require函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 require 所指定引入的文件,使它变成 PHP 程序网页的一部份。常用的函数,亦可以这个方法将它引入网页中。
  • include 这个函数一般是放在流程控制的处理部分中。PHP 程序网页在读到 include 的文件时,才将它读进来。这种方式,可以把程序执行时的流程简单化。
  • 处理错误的方式:
  1. require一个文件存在错误的话,那么程序就会中断执行了,并显示致命错误
  2. include一个文件存在错误的话,那么程序不会中端,而是继续执行,并显示一个警告错误。

小知识库:

系统命令:
1. 可以用? 匹配字符
2. 可以用;间隔两条命令
3. $? //上一次命令执行成功为0,不成功为1
4. env 查看本地变量
5. ``和$()可以代替shell_exec执行系统命令 //web396
6. nl * 打开目录下所有文件
PHP:
1. <?= ?>===<?php ?>

2.6 正则

正则表达式描述了一种字符串匹配的模式,可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。

详细教程1

详细教程2

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在CTF中,web入门命令执行指的是通过Web应用程序的漏洞,将恶意的命令注入到应用程序中并执行。这样的攻击可以导致未经授权的访问和操纵应用程序的数据和功能。 根据引用中提供的信息,可以看到一些常见的双写绕过技巧,如分号、竖线、双与号等。这些技巧可以用来绕过应用程序对输入参数的限制,从而注入恶意的命令。 引用中提到的payload,其中使用了一个通用的命令执行函数"show_source"来显示指定文件的源代码。这个payload可以用来尝试执行"flag.php"文件的源代码。但前提是要知道有一个名为"flag.php"的文件存在。 另外,引用中提供了另一种payload的示例,其中使用了array_reverse和scandir函数来获取文件目录并显示指定文件的源代码。同样,也可以直接使用show_source('flag.php')来显示"flag.php"文件的源代码。 需要注意的是,命令执行漏洞是非常危险的,因为它可以导致恶意用户执行任意的系统命令。为了保护Web应用程序免受此类攻击,开发人员应该对用户的输入进行严格的验证和过滤,并使用安全的编程实践来防止命令注入漏洞的发生。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [ctfshow web入门之命令执行](https://blog.csdn.net/uuzfumo/article/details/128357863)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [CTFShow Web入门 命令执行](https://blog.csdn.net/qq_19533763/article/details/123910732)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值