【Try to Hack】php命令执行和代码执行
【摘要】 📒博客主页:开心星人的博客主页🔥系列专栏:Try to Hack🎉欢迎关注🔎点赞👍收藏⭐️留言📝📆首发时间:🌴2022年8月29日🌴🍭作者水平很有限,如果发现错误,还望告知,感谢! 命令执行函数函数/语法描述例子system执行命令并输出结果system('id');exec执行命令 不输出结果只可获取最后一行结果exec('id',$a); print_r($a);pa...
📒博客主页:开心星人的博客主页
🔥系列专栏:Try to Hack
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📆首发时间:🌴2022年8月29日🌴
🍭作者水平很有限,如果发现错误,还望告知,感谢!
命令执行函数
函数/语法 | 描述 | 例子 |
---|---|---|
system | 执行命令并输出结果 | system('id'); |
exec | 执行命令 不输出结果只可获取最后一行结果 | exec('id',$a); print_r($a); |
passthru | 同 system | passthru(‘id’); |
shell_exec (反引号)| 执行命令并返回结果|
a); ` |
||
popen | 执行命令并建立管道 返回一个指针 使用fread等函数操作指针进行读写 | $a=popen("id", "r"); echo fread($a, 2096); |
proc_open | 同 popen (进程控制功能更强大) | |
pcntl_exec | 执行命令 只返回是否发生错误 | pcntl_exec('id'); |
命令执行防护
escapeshellarg 传入参数添加单引号并转义原有单引号 用于防止命令注入
例 传入 'id#
处理后 '\'id#'
处理后的字符串可安全的添加到命令执行参数
escapeshellcmd 转义字符串中的特殊符号 用于防止命令注入
反斜线(\)会在以下字符之前插入: &#;`|*?~<>^()[]{}$, \x0A 和 \xFF。 ’ 和 " 仅在不配对儿的时候被转义
代码执行函数
函数/语法 | 描述 | 例子 |
---|---|---|
eval | 将传入的参数内容作为PHP代码执行 eval 不是函数 是一种语法结构 不能当做函数动态调用 | eval('phpinfo();'); |
assert | 将传入的参数内容作为PHP代码执行 版本在PHP7以下是函数 PHP7及以上为语法结构 | assert('phpinfo();'); |
preg_replace | 当preg_replace使用/e修饰符且原字符串可控时时 有可能执行php代码 | echo preg_replace("/e","{${PHPINFO()}}","123"); |
call_user_func | 把第一个参数作为回调函数调用 需要两个参数都完全可控才可利用 只能传入一个参数调用 | call_user_func('assert', 'phpinfo();'); |
call_user_func_array | 同call_user_func 可传入一个数组带入多个参数调用函数 | call_user_func_array ('file_put_contents', ['1.txt','6666']); |
create_function | 根据传递的参数创建匿名函数,并为其返回唯一名称 利用需要第二个参数可控 且创建的函数被执行 | $f = create_function('','system($_GET[123]);'); $f(); |
<?php
//?cmd=phpinfo();
@eval($_GET['cmd']);
?>
<?php
//?cmd=${phpinfo()}
$str=$_GET['cmd'];
eval ('$str="'.$str.'";')
?>
php代码可以这样在双引号中被执行(bash中双引号和单引号解析变量是有区别的。在解析单引号的时候 , 被单引号包裹的内容中如果有变量 , 这个变量名是不会被解析成值的,但是双引号不同 , bash 会将变量名解析成变量的值再使用。)
<?php
//?cmd=%27)phpinfo();//
$str=$_GET['cmd'];
eval ("strtolower('$str');")
?>
<?php
preg_replace("/<php>(.*?)<\/php>/e",'\1',"<php>phpinfo()</php>");
//等价于
preg_replace("/<php>(.*?)<\/php>/e",'${1}',"<php>phpinfo()</php>");
?>
https://github.com/Bypass007/Learn-security-from-0
https://www.yuque.com/burpheart/phpaudit/php-chang-jian-lou-dong_dai-ma-zhu-ru
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)