代码审计之命令执行漏洞

环境:windows + apache + mysql + php (phpstudy)

由于是在Windows下进行的测试,所以和Linux下的测试会有所不同

在测试漏洞之前先提一下可以同时执行两条命令的特殊字符

Linux:

|

;(Windows下不行)

&&

Windows

|

&(Linux貌似不行,自行测试)

&&

肯定有没写出来的,我就不去秀百度了====

低级:

可以将”|”替换成其他字符,效果会不一样.例如:& &&会执行完第一条命令在去执行后面的.这个”|”在linux中是管道符,我这里就不扯这个了===

看看代码,是如何造成的漏洞:

在第五行,将我们输入的值赋值给了$target这个变量,其次在第8行到第15行都是在判断操作系统,因为linux or unix的ping是无限的,所以要是不加个ping限制,等一辈子也不会有结果返回...

在第10行和14行可以看到通过shell_exec函数执行了命令,接受到的值并没有做任何过滤就执行了,执行的相当于是 ping 127.0.0.1|echo 1你放到命令行下执行一下试试

中级:

你会发现”|”和”&”都可以使用,但是”&&”却不行.(linux下&貌似不可以),瞅一下代码

聪明了一点点,在第八行到第十一行,定义了一个数组,下标分别是;和&&,对,就过滤这两个,而且windows下;不好使(linux下可行)

在14行时,使用了str_replay函数进行了替换,将输入的内容中的;和&&替换成了’’空字符串,可以查一下str_replay函数的用处,这里很是形象的来了一个过滤不严谨=

高级:

估计各位哥也发现了,不管中低高级,反正”|”都能过,没错,就是这样,====

看代码吧:

和中级一样的,只是过滤的字符更多了,& && | || ;...这里就有问题了,为什么过滤了”|”还可以呢?

好吧,在第11行哪里| 这里是不是有一个空格?

原文发布于微信公众号 - 网络安全社区悦信安(yuexin_an)

原文发表时间:2017-09-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏葡萄城控件技术团队

程序员级别鉴定书(.NET面试问答集锦)

作为一个.NET程序员,应该知道的不仅仅是拖拽一个控件到设计时窗口中。就像一个赛车手,一定要了解他的爱车 – 能做什么不能做什么。 本文参考Scott Hans...

3807
来自专栏Phoenix的Android之旅

听说过条件变量Condition吗

上一次我们介绍了ReentrantLock和Synchronized的异同,这次我们来讲讲concurrent包下面的另外一个类,Condition。 Java...

942
来自专栏运维一切

ceph对象存储折腾记 原

###前言 一直想弄对象存储,以前弄过一次,不是很理解region是个什么东西,后来时间和工作上的原因没有再折腾,这两天闲了下来,再次折腾了一次。我是参考的ce...

1681
来自专栏安恒网络空间安全讲武堂

从零基础到成功解题之0ctf-ezdoor

2174
来自专栏君赏技术博客

建议大型项目用上Try Catch建议大型项目用上Try Catch

我们在平时项目做功能的时候,经常会遇到崩溃的情况。如果是我们在开发测试阶段,我们可以找到原因修复。但是遇到已经上线,出现这种问题。要么使用JSPatch进行热修...

841
来自专栏linux驱动个人学习

Linux内存描述之内存页面page--Linux内存管理(四)

分页单元可以实现把线性地址转换为物理地址, 为了效率起见, 线性地址被分为固定长度为单位的组, 称为”页”, 页内部的线性地址被映射到连续的物理地址. 这样内核...

4391
来自专栏安恒网络空间安全讲武堂

[Web安全]PHP伪协议

[Web安全]PHP伪协议 最近php伪协议的各种神奇妙用好像突然又常常提到了,php中支持的伪协议有下面这么多 复制代码 file:// — 访问本地文件...

5048
来自专栏Golang语言社区

Go并发编程基础(译)

原文:Fundamentals of concurrent programming 译者:youngsterxyf 本文是一篇并发编程方面的入门文章,以Go语言...

4288
来自专栏FreeBuf

缓冲区溢出攻击初学者手册(更新版)

说明 之前版本翻译质量不佳,本人赵阳在这里对本文的读者表示深深的歉意。由于本人的疏忽和大意导致您不能很好的读完这篇文章,同时也对原文内容进行了破坏,也对IDF和...

2889
来自专栏java一日一条

能让你少写1000行代码的20个正则表达式

正则表达式,一个十分古老而又强大的文本处理工具,仅仅用一段非常简短的表达式语句,便能够快速实现一个非常复杂的业务逻辑。熟练地掌握正则表达式的话,能够使你的开发效...

982

扫码关注云+社区

领取腾讯云代金券