变量覆盖漏洞学习及在webshell中的运用
一、发生条件:
函数使用不当($$、extract()、parse_str()、import_request_variables()等)
开启全局变量
二、基础了解:
1.$$定义
$$代表可变变量,就是说,一个变量的变量名可以动态的设置和使用。
举个简单例子:

变量a被定义成了字符串hello 而变量$a被定于成了字符串world!
但同时$a本身也是个变量
$$a就可以代表两个含义$($a)和$(hello) 两个变量
此时输出的结果如图:
函数使用不当($$、extract()、parse_str()、import_request_variables()等)
开启全局变量
$$代表可变变量,就是说,一个变量的变量名可以动态的设置和使用。
举个简单例子:

变量a被定义成了字符串hello 而变量$a被定于成了字符串world!
但同时$a本身也是个变量
$$a就可以代表两个含义$($a)和$(hello) 两个变量
此时输出的结果如图:
在测试过程中,经常会遇到一些主机防护软件,对这方面做了一些尝试,可成功bypass了GET和POST的注入防御,分享一下姿势。
Windows Server 2003+phpStudy

sql注入点测试代码:
之前写了一个基于python的一句话木马客户端程序,这个程序的作用大致就是为了绕过防护设备,使敏感数据能在网络里自由穿梭。由于编程能力有限,当时以python程序作为客户端,php代码作为服务端,勉强能用,但是缺乏jsp的服务端,使之功能很局限。幸好有大神caomei相助,帮助实现了jsp端的代码,故将两者相结合,方便使用。
当服务器允许上传任意文件,且对文件内容不进行审计检查,但由于其网络边界有防火墙会拦截审计通信的数据。这时我们能成功上传一句话木马,然而连接菜刀的时候会出现500错误,此时可以使用pycmd工具,因为其会对互相通信的内容加密处理。
我这里准备了2个靶机,分别装有php与jsp的运行环境,用来模拟真实的网站服务器。