Command-Injection

https://owasp.org/www-community/attacks/Command_Injection(膜拜大佬)

通过构造 特殊变量 ,利用系统指令越权执行操作。

关键:命令连接符

Low

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php

if( isset( $_POST[ 'Submit' ] ) ) {
// Get input
$target = $_REQUEST[ 'ip' ];

// Determine OS and execute the ping command.
if( stristr( php_uname( 's' ), 'Windows NT' ) ) {
// Windows
$cmd = shell_exec( 'ping ' . $target );
}
else {
// *nix
$cmd = shell_exec( 'ping -c 4 ' . $target );
}

// Feedback for the end user
echo "<pre>{$cmd}</pre>";
}

?>

ci-l

$_REQUEST是一个PHP超全局数组,用于收集HTML表单提交的数据。

**shell_exec()**:

  • 执行系统命令并返回结果。

  • 使用不同参数根据操作系统执行ping命令。

**php_uname(‘s’)**:获取操作系统的名称。

**stristr()**:不区分大小写地搜索字符串。检查操作系统名称是否包含”Windows NT”

**shell_exec( ‘ping -c 4 ‘ . $target )**:

``ping -c 4 ‘`:**-c 4*:指定发送4个ICMP回显请求包。这个参数用于控制ping命令在nix系统(如Linux和MacOS)上的行为,确保只发送4个请求包而不是无限制地持续发送。

<pre>...</pre>:HTML预格式化文本标签,保持输出内容的格式,包括空格和换行。

命令连接符

& :前面一个命令无论是否执行,后面的命令都能执行,两个命令都执行
&&:前面一个命令执行成功后,才能执行后面一个命令,两个命令都执行
|:前面一个命令无论是否执行,后面的命令都能执行且只执行后面一个
||:前面一个命令不能正常执行后,才能执行后面一个命令

; 分号;各命令之间的执行成功与否彼此没有任何影响,会逐条执行。

注入

127.0.0.1 & ipconfig

High

ci-m

注入

127.0.0.1|ipconfig 竖线之后直接接ipconfig

impossible

cm-im

  1. session验证
  2. 以ip特征作为标准来检验输入