DVWA靶场(Command Injection-命令注入)

命令注入是一种常见的安全漏洞,允许攻击者通过构造特殊输入执行系统命令。文章介绍了四种不同难度级别的防御措施,包括过滤特定字符、使用stripslashes去除转义字符以及explode函数分割字符串。同时,提出了防范命令注入的建议,如过滤用户输入、限制使用危险函数和降低应用程序权限。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

什么是命令注入:

四大难度

Low难度:没做任何限制

 Medium:过滤的是 “&&” 和 “;” 也就是所我们一个“&” 仍然好用

High:是将红框里所有的字符都加进了黑名单

Impossible:不可能的难度

1. stripslashes — 反引用一个引用字符串(返回一个去除转义反斜线后的字符串(\' 转换为 ' 等等)。双反斜线(\\)被转换为单个反斜线(\)。)

 2. explode — 使用一个字符串分割另一个字符串()

3. 代码剖析

命令注入漏洞防范:


什么是命令注入:

命令注入(Command Injection)是一种注入类型漏洞,是指用户输入的数据(命令)被程序拼接并传递给执行操作系统命令的函数执行。编程语言如C/C++,Java, PHP, Python, Go, Rust等,都支持执行系统命令,所以都有可能存在命令注入漏洞。

它通常是由于嵌入式应用程序或者web应用程序对用户提交的数据过滤不严格,导致黑客可以通过构造特殊命令字符串的方式,将数据提交至应用程序中,并利用该方式执行外部程序或系统命令实施攻击,非法获取数据或者网络资源等。

四大难度

Low难度:没做任何限制

 

 Medium:过滤的是 “&&” 和 “;” 也就是说我们一个“&” 仍然好用

High:是将红框里所有的字符都加进了黑名单

注意:“| ”  和   “|”有本质的区别

Impossible:不可能的难度

1. stripslashes — 反引用一个引用字符串(返回一个去除转义反斜线后的字符串(\' 转换为 ' 等等)。双反斜线(\\)被转换为单个反斜线(\)。)

例:

输出:

说明:这段代码定义了一个名为 stripslashes_deep 的函数,它可以递归地对数组中的每个元素应用 stripslashes 函数。stripslashes 函数可以删除由 addslashes 函数添加的反斜杠。

在这个例子中,$array 是一个包含两个字符串和一个子数组的数组。子数组中也包含两个字符串。这些字符串中都包含由 addslashes 函数添加的反斜杠。

当我们调用 stripslashes_deep($array) 时,它会递归地对 $array 中的每个元素应用 stripslashes 函数,删除所有添加的反斜杠。

 2. explode — 使用一个字符串分割另一个字符串()

 例:

此函数返回由字符串组成的数组,每个元素都是 string 的一个子串,它们被字符串 separator 作为边界点分割出来。 

 

输出:

说明: explode() 函数将字符串 $pizza 按照空格分割成了一个数组 $pieces。然后,echo $pieces[0] 输出了数组中的第一个元素 piece1echo $pieces[1] 输出了数组中的第二个元素 piece2。

stristr — strstr() 函数的忽略大小写版本

返回 haystack 字符串从 needle 第一次出现的位置开始到结尾的字符串。 

3. 代码剖析

通过判断是否是全数字,拆散重新拼接起来的方法,达到限制输入命令的目的。

命令注入漏洞防范:

  1. 过滤用户输入:对用户提交的数据进行严格的过滤,以防止恶意命令被执行。可以使用白名单或正则表达式进行过滤。
  2. 限制使用危险函数:尽量避免使用 eval()、system、exec、shell_exec 等具有命令执行功能的函数。如果必须使用这些函数,应该对用户输入的参数进行严格的过滤和检查。
  3. 转义特殊字符:对传递给系统命令的参数进行转义,以防止特殊字符被误解释为命令。
  4. 降低应用程序权限:将应用程序的权限降到最低,以减少命令注入攻击造成的危害。

这些措施可以有效地防范命令注入漏洞,但并不能完全杜绝漏洞的产生。因此,在开发过程中应该时刻注意安全问题,遵循安全编码规范,定期对代码进行安全审计。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

凌洛宸

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

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

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

打赏作者

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

抵扣说明:

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

余额充值