精华内容
下载资源
问答
  • 2021-04-17 03:06:08

    我需要能够通过网页(在受控环境中)更改用户的密码.

    所以,为此,我正在使用此代码:

    $output = shell_exec("sudo -u dummy passwd testUser testUserPassword");

    $output2 = shell_exec("dummyPassword");

    echo $output;

    echo $output2;

    echo "done";

    ?>

    我的问题是这个脚本没有改变用户“testUser”的密码.

    我究竟做错了什么?

    谢谢

    解决方法:

    另一个选择是有一个shell脚本,比如叫做passwd_change.sh,看起来像这样:

    #!/usr/bin/expect -f

    set username [lindex $argv 0]

    set password [lindex $argv 1]

    spawn passwd $username

    expect "(current) UNIX password: "

    send "$password\r"

    expect "Enter new UNIX password: "

    send "$password\r"

    expect "Retype new UNIX password: "

    send "$password\r"

    expect eof

    然后在你的PHP代码中执行:

    shell_exec("sudo -u root /path/to/passwd_change.sh testUser testUserPass");

    ?>

    标签:php,sudo,shell-exec,passwd

    来源: https://codeday.me/bug/20190717/1485882.html

    更多相关内容
  • 我试图使用PHP脚本来运行siege命令并捕获输出.在shell中运行以下命令可提供以下结果:$/usr/local/bin/siege -c30 -t30s -f urls.txt.....HTTP/1.1 200 0.10 secs: 11246 bytes ==> GET /*******....

    我试图使用

    PHP脚本来运行siege命令并捕获输出.

    在shell中运行以下命令可提供以下结果:

    $/usr/local/bin/siege -c30 -t30s -f urls.txt

    .....

    HTTP/1.1 200 0.10 secs: 11246 bytes ==> GET /*******.html

    HTTP/1.1 200 0.11 secs: 11169 bytes ==> GET /*******.html

    HTTP/1.1 200 0.10 secs: 11246 bytes ==> GET /*******.html

    Lifting the server siege.. done.

    Transactions: 1479 hits

    Availability: 100.00 %

    Elapsed time: 29.05 secs

    Data transferred: 14.69 MB

    Response time: 0.10 secs

    Transaction rate: 50.91 trans/sec

    Throughput: 0.51 MB/sec

    Concurrency: 5.33

    Successful transactions: 1479

    Failed transactions: 0

    Longest transaction: 0.16

    Shortest transaction: 0.09

    通过exec(),shell_exec(),system()在PHP中运行相同的命令时,我只收到以下输出.

    HTTP/1.1 200 0.10 secs: 11246 bytes ==> GET /*******.html

    HTTP/1.1 200 0.11 secs: 11169 bytes ==> GET /*******.html

    HTTP/1.1 200 0.10 secs: 11246 bytes ==> GET /*******.html

    因为我真的只对围攻提供的结果感兴趣,所以这些数据对我来说毫无用处.由于某种原因,它无视围攻的结果.

    这是我在PHP中所做的一个例子……

    exec('/usr/local/bin/siege -c30 -t30s -f urls.txt', $output);

    展开全文
  • 新建一个php文件(test.php)将下面的代码进行粘贴到新建的PHP文件中shell_exec("unoconv -f pdf test.odt");?>(1)在终端中执行php test.php,此时生成了test.pdf文件(2)在web端输入链接访问test.php,发现此时test...

    新建一个php文件(test.php)

    将下面的代码进行粘贴到新建的PHP文件中

    shell_exec("unoconv -f pdf test.odt");

    ?>

    (1)在终端中执行php test.php,此时生成了test.pdf文件

    (2)在web端输入链接访问test.php,发现此时test.pdf文件没有生成。这时可以有80%怀疑权限问题(且php并没有报错)

    (3)进入test.php所在的目录,

    将下面的代码进行粘贴到test.php文件中

    print_r(shell_exec("ls"));

    ?>

    在web端使用链接进行访问,发现可以运行的,这时有基本可以确定是权限的问题了

    (4)那么错误在什么地方可以看到呢,在终端下运行下面的命令

    find / -name auth.log

    比如 /var/log/auth.log

    (5)打开 auth.log找出问题所在可以发现报错为:www-data:user not in sudoers;............改怎么改呢

    (6)本人是在虚拟机中进行测试的,现在讲讲这个解决方法

    在终端下运行su root输入密码,这时你会发现不管你怎么输入密码均是错误的,那该怎么解决呢,不要急,听我慢慢讲来

    在终端下输入su passwd 这时会提醒你输入密码,随便输入一个密码如:123456,回车再次确认下密码;此时的root密码为123456了

    在终端下输入su root,输入刚刚设置的密码,你会发现你进入了root权限了,这时在终端下运行chmod u+w /etc/sudoers,

    在终端下输入vim /etc/sudoers,修改文件,将下面的话添加到文件中

    www-data ALL=(ALL) NOPASSWD: ALL;这边为啥是NOPASSWD:因为,你没有给www-data设置密码啊

    在终端下分别运行chmod u-w /etc/sudoers,exit

    (7)这时你再次在web使用链接运行test.php文件

    shell_exec("unoconv -f pdf test.odt");

    ?>

    哈哈:文件出来了

    展开全文
  • php exec在linux中返回值不能为负数有需要的朋友可参考一下。我们先来了解一下关于exec函数的使用方法exec()原型: 代码如下 复制代码 string exec (string command [, string array [, int return_var]])exec ()...

    php exec在linux中返回值不能为负数有需要的朋友可参考一下。

    我们先来了解一下关于exec函数的使用方法

    exec()

    原型:

     代码如下复制代码
    string exec (string command [, string array [, int return_var]])

    exec ()函数与system()类似,也执行给定的命令,但不输出结果,而是返回结果的最后一行。虽然它只返回命令结果的最后一行,但用第二个参数array 可以得到完整的结果,方法是把结果逐行追加到array的结尾处。所以如果array不是空的,在调用之前最好用unset()最它清掉。只有指定了第二 个参数时,才可以用第三个参数,用来取得命令执行的状态码。

    例子:

     代码如下复制代码
    exec("/bin/ls -l");

    exec("/bin/ls -l", $res);

    exec("/bin/ls -l", $res, $rc);

    第三个参数, 怎么不能接收负数??

    这里的&$return_var就是程序返回值,起初我的回答是可以为负数。

    一般在C语言里我们会这样写

     代码如下复制代码
    #include

    #include

    int main()

    {

    printf("^_^n");

    return -5;

    }

    这个-5就是返回值,但习惯上是写成0或者1的。

    注意:很多人的C代码里把main函数写成 void main() 这样实际上是不对的,详细的就不说了。

    把上面的代码编译后,到CMD下运行,然后就能看到输出结果了。接着,输入“echo %ERRORLEVEL%”,回车,就可以看到程序的返回值了。这个%ERRORLEVEL%就代表了程序的返回状态。在WIN下确实是可以为负数的

    ,php调用也是正常的。

     代码如下复制代码
    E:devphp535>php -r "exec('return.exe',$out,$a);var_dump($a);"

    int(-2)

    但是到了linux下,始终为正数,刚开始怀疑是权限问题,用了chmod x后,排除了权限问题。

     代码如下复制代码
    exec("/home/wwwroot/test/rtest.out 2>&1",$out,$a);

    var_dump($out,$a);

    array(1) { [0]=> string(3) "^_^" } int(251)

    看起来成了256 return val,可以看到实际上返回了负数,只不过被转换成正数了。

    接着看了下standard/exec.c里的源代码,没发现啥端倪,干到很奇怪,突然想到自己忘了一步。忘了看程序返回给OS的值了.

    可以使用echo $? 显示最后命令的推出状况。

     代码如下复制代码
    -bash-3.00$ vi main.c

    -bash-3.00$ gcc -o ./mm main.c

    -bash-3.00$ ll

    total 48

    drwxr-xr-x  3 www www 4096 May  4  2011 2011

    drwxr-xr-x  6 www www 4096 Jun 23  2011 eoc

    -rwxr-xr-x  1 www www 7131 Feb  1 12:47 hello

    -rw-r--r--  1 www www    3 Feb  1 12:51 hello.c

    -rw-r--r--  1 www www   99 Feb  1 12:50 main.c

    -rwxr-xr-x  1 www www 4714 Feb  1 12:51 mm

    drwxr-xr-x  3 www www 4096 Jun 24  2011 test

    -bash-3.00$ ./mm

    ^_^

    -bash-3.00$ echo $?

    251

    -bash-3.00$

    这样就可以看看exec返换给OS的值是多少。

    在linux下,这个返回值就是无符号类型,返回的是一个正数,所以传给php也是正数了,php实际上也是调用的exec所返回的值。

    OUT了,也许linux就是这么规定的,程序中泰返回值为1~255区间,而自己不清楚这个规则。不过还没有确定是否linux里就是这么规定的。虽然问题很蛋疼,意义不大,不过也可以在这里留给遇到类似问题的人参考。不过到这里也没深究的必要了。谁要是真想彻底搞清楚,可以看看shell这块

    展开全文
  • ··开始先说点我开发遇到的问题,我用的环境是IIS7.5+PHP5.4+MYSQL,系统是windows!要开发一个视频上传播放的功能,需要获取视频信息(宽高大小时间等等~),还是截视频帧做封面! ··然后我就想用ffmpeg处理,我...
  • python判断回车

    千次阅读 2020-11-27 20:50:36
    广告关闭腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返...如果条件判断的内容太长,可以在最外侧的条件增加一对大括号# 再在每一个条件之间,使用回车,pycharm 可...
  • exec函数在windows环境下是没有任何问题的,但在linux中返回值不能为负数。string exec ( string $command [, array &$output [, int &$return_var ]] )第三个参数, 怎么不能接收负数??这里的&$return_...
  • golang执行命令 exec.Command

    万次阅读 2016-12-19 19:52:49
    cmd := exec.Command("cmd") in := bytes.NewBuffer(nil) cmd.Stdin = in //绑定输入 var out bytes.Buffer cmd.Stdout = &out //绑定输出 go func() { in.WriteString("node E:/design/test.js\n")//写入你...
  • 就是在调用curl_exec()后出现502。然后马上编写了一个测试脚本:$ch = curl_init();curl_setopt($ch, CURLOPT_URL, 'https://www.baidu.com');curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);curl_setopt($ch, ...
  • PHP单引号及双引号均可以修饰字符串类型的数据,如果修饰的字符串中含有变量(例$...但语法规定在不同的系统中转义字符的作用不同,例如:windows下的回车换行符用"\r"或"\n",而Linux 这两就有很大的区别:"\r"光标...
  • 目录0x001 配置文件0x002 文件读取函数0x003 文件...config.php cache.config.php 0x002 文件读取函数 file_get_contents()、highlight_file()、fopen()、readfile()、fread()、fgetss()、fgets()、par
  • CTF中的PHP特性

    千次阅读 2021-02-26 09:34:10
    本文以ctf.show网站题目为例,总结ctf中的php特性 正则表达式 元字符 模式修正符 preg_match() 数组绕过 preg_match()只能处理字符串,当传入的subject是数组时会返回false if(preg_match("/[0-9]/
  • php通过拓展ssh2控制linux

    千次阅读 2016-08-26 18:40:23
    然后我们的php环境要想实现控制linux,必须安装php的一个扩展ssh2 0.下载ssh2扩展,从http://pecl.php.net/package/ssh2,有linux扩展包,也有windows的dll,如果是php5安装ssh2-0.13或0.12扩展,php7安装1.0 ...
  • 在cmd控制台中出现乱码情况如下解决方式1在控制台中输入 CHCP65001按enter回车键查看注:CHCP是一个计算机指令,能够显示或设置活动代码页编号。代码页 描述65001 UTF-8代码页950 繁体中文936 简体中文默认的GBK437...
  • php远程copy文件以及在远程服务器中执行命令时,所用到的模块是ssh2,以后所有的操作都依据ssh2连接句柄完成。1. SSH2模块的安装1.1 安装需要的扩展包[plain]wgettar zxf libssh2-1.4.2.tar.gzcd libssh2-1.4.2./...
  • docker部署web项目需要用到的服务:nginx,php,mysql 一、部署nginx 1、下载nginx镜像: docker pull nginx 2、run一个nginx容器: docker run --name runoob-php-nginx -p 8083:80 -d \ -v ~/nginx/...
  • PHP insert语法详解

    2021-04-24 02:30:49
    PHP insert语法详解上次程序中有这么一句话:$exec="insertintoinfo(ename,pcname)values('".$_POST["ename"]."','".$_POST["pcname"]."')";解释一下这句话的意义。SQL插入记录的语法是:insertinto表名(字段名1,...
  • ctfshow-php特性

    千次阅读 2022-01-26 17:28:26
    回车\空格+八进制绕过 相对路径绕过 php伪协议读取文件 数组md5值为0 弱类型匹配 函数写???? 运算优先级漏洞 反射类绕过 call_user_func()绕过 sha1()函数绕过 变量覆盖 sha1弱比较 md5弱比较 ereg()截断漏洞 php...
  • $result = curl_exec($curl); if (curl_getinfo($curl, CURLINFO_HTTP_CODE) == '200') { $headerSize = curl_getinfo($curl, CURLINFO_HEADER_SIZE); //获取header长度 $bodyInfo = substr($result, $he...
  • PHP项目在coding使用WebHook自动部署时,git pull出现了下面的问题 Host key verification failed. fatal: Could not read from remote repository. Please make sure you have the correct access rights ...
  • PHP是用于动态网站开发的最常用编程语言之一。 它相当强大和高效。 它也很简单,并且由于它的灵活性而成为初学者的好语言。 PHP本身就是一种很好的语言(尤其是与XHTML结合使用时)。 但是,大多数应用程序都需要...
  • PHP-RCE绕过的姿势总结

    2022-02-18 20:32:25
    命令分隔符 linux中:%0a(回车) 、%0d(换行) 、; 、& 、| 、&&、|| windows中:%0a、&、|、%1a(一个神奇的角色,作为.bat文件中的命令分隔符) 黑名单绕过(比如flag字符) 拼接 1.a=fl;b=ag;cat $a$b 或者如 2.用...
  • 一、PHP代码执行函数1、eval()函数#传入的参数必须为PHP代码,既需要以分号结尾。#命令執行:cmd=system(whoami);#菜刀连接密码:cmd那么当我们上传了eval函数的菜刀马之后,在连接不上菜刀的情况下怎么上传大马呢?...
  • 1:user表:CREATE TABLE `user` (`id` int(11) NOT NULL AUTO_INCREMENT,`name` varchar(32) NOT NULL,PRIMARY KEY (`id`)) ENGINE=MyISAM DEFAULT CHARSET=utf82:mysqltools.php (mysql工具类)class MySqlTools{...
  • PHP代码审计归纳总结

    2021-07-06 15:31:40
    变量覆盖 extract() ...php $a = "Original"; $my_array = array("a" => "Cat","b" => "Dog", "c" => "Horse"); extract($my_array); echo "\$a = $a; \$b = $b; \$c = $c"; ?> # 结果:
  • php 微信amr转mp3的方法

    2021-03-23 12:24:55
    php 微信amr转mp3的方法php微信amr转mp3的方法:首先下载“ffmpeg6-php54-win32-vc9”;然后将“php_ffmpeg.dll”拷贝到“php-5.4.45\ext”下;最后将当前目录加入系统环境变量path中,并进行音频格式转换即可。推荐...
  • WEB安全 PHP基础

    千次阅读 2021-12-12 15:18:37
    文章目录1.PHP简述2.基本语法格式3.数据类型、常量以及字符串7.PHP 函数8.PHP 变量作用域9.类与对象10.PHP超级全局变量11.PHP Include 文件12.PHP 文件处理12.1.PHP 操作文件12.2.PHP 文件打开/读取/关闭12.3.文件的...
  • ctfshow php特性系列

    千次阅读 2021-04-18 17:00:43
    文章目录web89web90web91web92...php include("flag.php"); highlight_file(__FILE__); if(isset($_GET['num'])){ $num = $_GET['num']; if(preg_match("/[0-9]/", $num)){ die("no no no!"); } if(intval($num)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,216
精华内容 3,286
关键字:

php exec 回车