1、在Windows下

  1. windows下非常好办,只需要&肯定可以执行:
  2. C:\Users\xxx\Desktop>aaaa | ping -n 127.0.0.1
  3. 'aaaa' 不是内部或外部命令,也不是可运行的程序
  4. 或批处理文件。
  5.  
  6. C:\Users\xxx\Desktop>C:\Users\chenran01.ESG\Desktop\test.bat
  7.  
  8. C:\Users\xxx\Desktop>aaaa' | ping -n 5 127.0.0.1
  9. 'aaaa'' 不是内部或外部命令,也不是可运行的程序
  10. 或批处理文件。
  11.  
  12. C:\Users\xxx\Desktop>C:\Users\chenran01.ESG\Desktop\test.bat
  13.  
  14. C:\Users\xxx\Desktop>aaaa' & ping -n 5 127.0.0.1
  15. 'aaaa'' 不是内部或外部命令,也不是可运行的程序
  16. 或批处理文件。
  17.  
  18. 正在 Ping 127.0.0.1 具有 字节的数据:
  19. 来自 127.0.0.1 的回复: 字节= 时间<1ms TTL=
  20. 来自 127.0.0.1 的回复: 字节= 时间<1ms TTL=
  21. 来自 127.0.0.1 的回复: 字节= 时间<1ms TTL=
  22. 来自 127.0.0.1 的回复: 字节= 时间<1ms TTL=
  23. 来自 127.0.0.1 的回复: 字节= 时间<1ms TTL=
  24.  
  25. 127.0.0.1 Ping 统计信息:
  26. 数据包: 已发送 = ,已接收 = ,丢失 = (% 丢失),
  27. 往返行程的估计时间(以毫秒为单位):
  28. 最短 = 0ms,最长 = 0ms,平均 = 0ms
  29.  
  30. C:\Users\xxx\Desktop>

或者把&换成||上文中的例子也可以执行。

2、在Linux下:

在Linux下就显得复杂一些了

先来看一个可以执行的例子:

  1. $ 'aaaa'|ping -c 127.0.0.1 # ''
  2. -bash: aaaa: command not found
  3. PING 127.0.0.1 (127.0.0.1) () bytes of data.
  4. bytes from 127.0.0.1: icmp_seq= ttl= time=0.042 ms
  5. bytes from 127.0.0.1: icmp_seq= ttl= time=0.072 ms
  6. bytes from 127.0.0.1: icmp_seq= ttl= time=0.068 ms
  7. bytes from 127.0.0.1: icmp_seq= ttl= time=0.054 ms

# ' 来闭合最后的'从而达到了命令注入执行,如果去掉#就发现不行了

  1. $ 'aaaa|ping -c 4 127.0.0.1 ''
  2. >

类似的这种需要闭合前面的'

  1. $ 'aaaa'|ping -c 127.0.0.1
  2. -bash: aaaa: command not found
  3. PING 127.0.0.1 (127.0.0.1) () bytes of data.
  4. bytes from 127.0.0.1: icmp_seq= ttl= time=0.063 ms
  5. bytes from 127.0.0.1: icmp_seq= ttl= time=0.072 ms
  6. bytes from 127.0.0.1: icmp_seq= ttl= time=0.066 ms
  7. bytes from 127.0.0.1: icmp_seq= ttl= time=0.062 ms
  8.  
  9. --- 127.0.0.1 ping statistics ---
  10. packets transmitted, received, % packet loss, time 3000ms
  11. rtt min/avg/max/mdev = 0.062/0.065/0.072/0.010 ms
  12. $ 'aaaa|ping -c 4 127.0.0.1
  13. >

上面是使用|的一些例子,下面来看看&

  1. $ 'aaa'&ping -c 127.0.0.1
  2. []
  3. -bash: aaa: command not found
  4. PING 127.0.0.1 (127.0.0.1) () bytes of data.
  5. bytes from 127.0.0.1: icmp_seq= ttl= time=0.066 ms
  6. bytes from 127.0.0.1: icmp_seq= ttl= time=0.069 ms
  7. bytes from 127.0.0.1: icmp_seq= ttl= time=0.057 ms
  8. bytes from 127.0.0.1: icmp_seq= ttl= time=0.067 ms
  9.  
  10. --- 127.0.0.1 ping statistics ---
  11. packets transmitted, received, % packet loss, time 2999ms
  12. rtt min/avg/max/mdev = 0.057/0.064/0.069/0.010 ms
  13. []+ Exit 'aaa'
  14. $

综上闭合OS执行的payload只需:

  1. #windows:
  2. 'aaa&ping 127.0.0.1&'
  3. 'aaa||ping 127.0.0.1||'
  4. #linux下:
  5. 'aaa'&ping -c 127.0.0.1
  6. 'aaa'|ping -c 127.0.0.1
  7. 'aaa'|ping -c 127.0.0.1# ''

关于OS命令注入的闭合问题的更多相关文章

  1. 网络安全学习阶段性总结:SQL注入|SSRF攻击|OS命令注入|身份验证漏洞|事物逻辑漏洞|目录遍历漏洞

    目录 SQL注入 什么是SQL注入? 掌握SQL注入之前需要了解的知识点 SQL注入情况流程分析 有完整的回显报错(最简单的情况)--检索数据: 在HTTP报文中利用注释---危险操作 检索隐藏数据: ...

  2. OS命令注入

    SSL http://kb.cnblogs.com/page/162080/ http://baike.baidu.com/link?url=jPitKuDw_ncDlMbOc1SkWzM9TuKX9 ...

  3. 跟bWAPP学WEB安全(PHP代码)--OS命令注入

    背景 这是温故知新的一个系列,也是重新拾起WEB安全的一个系列,同时希望能稍微有点对初学者的帮助.第一篇先来讲讲OS命令注入 bWAPP里面有两个页面也就是两个漏洞,来验证OS命令注入.一个是有回显的 ...

  4. WEB安全番外第五篇--关于使用通配符进行OS命令注入绕WAF

    一.通配符简介: 一般来讲,通配符包含*和?,都是英文符号,*用来匹配任意个任意字符,?用来匹配一个任意字符. 举个例子使用通配符查看文件,可以很名下看到打卡的文件是/etc/resolv.conf: ...

  5. OS命令注入中的空格

    1.bash 空格可以替换为%20.%09(tab).%2b(+) in url.{IFS} 2.Win shell 空格可以替换为%20.%09(tab).%0b.%0c.%2b(+) in url

  6. WEB安全第一篇--对服务器的致命一击:代码与命令注入

    零.前言 最近做专心web安全有一段时间了,但是目测后面的活会有些复杂,涉及到更多的中间件.底层安全.漏洞研究与安全建设等越来越复杂的东东,所以在这里想写一个系列关于web安全基础以及一些讨巧的pay ...

  7. Commix命令注入漏洞利用

    介绍 项目地址:https://github.com/stasinopoulos/commix Commix是一个使用Python开发的漏洞测试工具,这个工具是为了方便的检测一个请求是否存在命令注入漏 ...

  8. dvwa——命令注入&文件包含

    命令注入 commond_injection 源码.分析.payload: low: <?php if( isset( $_POST[ 'Submit' ] ) ) { // Get input ...

  9. commix 命令注入工具

    关于系统命令注入,可以参考这篇文章:命令攻击介绍 系统命令注入场景 在对企业进行安全测试时候,很少会发现系统注入漏洞.这是因为大部分情况下代码业务主要是数据操作.文件操作.逻辑处理和api接口调用等, ...

随机推荐

  1. Oracle重置序列

    oracle序列创建以后,如果想重置序列从 0 开始,逐渐递增1,可以采用如下存储过程: create or replace procedure reset_seq( p_seq_name in va ...

  2. json_decode() expects parameter 1 to be string, object given

    $data = Weann\Socialite\Facades\Socialite::driver('wechat')->user();//是字符串 $data=json_encode($dat ...

  3. Struts tags--Data tags

      struts tags详解之<s:bean> Description     Bean标签,当然需要一个JavaBean.它的属性值的操作是经由Bean标签中的参数属性来进行赋值.当然 ...

  4. linux -- Apache执行权限

    最近在用php调用exec方法去执行一个linux终端下的命令,结果每次都不能执行成功,网上多番搜寻,最终找到一篇有用的文章,主要原因是因为Apache的执行权限的问题.以下是原文(稍加修改): 利用 ...

  5. CentOS 7修改MySQL 5.6字符集为UTF-8

    MySQL编码原因会导致数据库出现中文乱码 解决办法: 修改MySQL数据库字符编码为UTF-8,UTF-8包含全世界所有国家需要用到的字符,是国际编码. 具体操作: 1.进入MySQL控制台 mys ...

  6. C++/CLI中class成员声明与实现分开在不同文件时必须添加namespace

    以下是我的代码: //TaskConfigFile.h #pragma once using namespace System::Collections::Generic; using namespa ...

  7. Python的类和函数的魔法

    class CustomClass: def customFun(self, id): print("fun_1",id ) if __name__ == '__main__': ...

  8. R语言绘图边框

    在R语言中, 绘图边框一共有3个区域: device region : figure region : plot region   : 在描述不同区域大小的时候,有对应的不同参数: din : 返回d ...

  9. jquery-包裹元素

    1.wrap方法 在每个匹配的元素外层包上一个html元素 参数类型说明: 1)html字符串 $('p').wrap('<div></div>'); 传入的html标签也可以 ...

  10. VC实现波形不闪烁动态绘图 .

    http://blog.csdn.net/xuyongbeijing2008/article/details/8064284 源代码:http://www.vckbase.com/index.php/ ...