文章目录
命令执行漏洞
01-命令执行漏洞
<?php
if(isset($_GET['ip'])){
$ip = $_GET['ip'];
system("ping -c 2 ".$ip);
}else{
exit();
}
?>
WINDOWS系统支持的管道符
“|”:直接执行后面的语句
例如:ping www.baidu.com|whoami
“||”:如果前面执行的语句执行出错,则执行后面的语句
例如:png www.baidu.com||whoami
“&”:如果前面的语句为假则直接执行后面的语句,前面的语句可真可假
例如:png www.baidu.com&whoami或者ping www.baidu.com&whoami
“&&”:如果前面的语句为真先执行第一个命令后执行第二个命令;为假则直接出错,也不执行后面的语句
例如:ping www.baidu.com&&whoami png www.baidu.com&&whoami
LINUX系统支持的管道符
“;”执行完前面的命令执行后面的
“|”:显示后面语句的执行结果
“||”:当前面的语句执行出错时,执行后面的语句
“&”:如果前面的语句为假,则直接指向后面的语句,前面的语句可真可假
“&&”:如果前面的语句为假则直接出错,也不执行后面的语句
02-命令执行漏洞空格绕过
<?php
if(isset($_GET['ip'])){
if (preg_match('/ /', $_GET['ip'])) {
die('error!!!');
}
else{
$ip = $_GET['ip'];
}
system("ping -c 2 ".$ip);
}else{
exit();
}
?>
03-命令执行漏洞关键命令绕过
<?php
if(isset($_GET['ip'])){
if (preg_match('/cat/', $_GET['ip'])) {
die('error!!!');
}
else{
$ip = $_GET['ip'];
}
system("ping -c 2 ".$ip);
}else{
exit();
}
?>
04-命令执行漏洞通配符绕过
<?php
if(isset($_GET['ip'])){
if (preg_match('/etc|passwd/', $_GET['ip'])) {
die('error!!!');
}
else{
$ip = $_GET['ip'];
}
system("ping -c 2 ".$ip);
}else{
exit();
}
?>
过滤了/etc|passwd
05-命令执行漏洞base64编码绕过
<?php
if(isset($_GET['ip'])){
if (preg_match('/id/', $_GET['ip'])) {
die('error!!!');
}
else{
$ip = $_GET['ip'];
}
system("ping -c 2 ".$ip);
}else{
exit();
}
?>
匹配id过滤